platz_sdk/resources/
k8s_resources.rs1use crate::PlatzClient;
2use anyhow::Result;
3use chrono::prelude::*;
4use kv_derive::{prelude::*, IntoVec};
5use serde::Deserialize;
6use uuid::Uuid;
7
8#[derive(Debug, Deserialize, Clone)]
9pub struct K8sResource {
10 pub id: Uuid,
11 pub last_updated_at: DateTime<Utc>,
12 pub cluster_id: Uuid,
13 pub deployment_id: Uuid,
14 pub kind_id: Uuid,
15 pub api_version: String,
16 pub name: String,
17 pub status_color: Vec<String>,
18 pub metadata: serde_json::Value,
19}
20
21#[derive(Default, IntoVec)]
22pub struct K8sResourceFilters {
23 #[kv(optional)]
24 pub name: Option<String>,
25 #[kv(optional)]
26 pub kind_id: Option<Uuid>,
27 #[kv(optional)]
28 pub cluster_id: Option<Uuid>,
29 #[kv(optional)]
30 pub deployment_id: Option<Uuid>,
31}
32
33impl PlatzClient {
34 pub async fn k8s_resources(&self, filters: K8sResourceFilters) -> Result<Vec<K8sResource>> {
35 Ok(self
36 .request(reqwest::Method::GET, "/api/v2/k8s-resources")
37 .add_to_query(filters.into_vec())
38 .paginated()
39 .await?)
40 }
41
42 pub async fn k8s_resource(&self, deployment_resource_id: Uuid) -> Result<K8sResource> {
43 Ok(self
44 .request(
45 reqwest::Method::GET,
46 format!("/api/v2/k8s-resources/{deployment_resource_id}"),
47 )
48 .send()
49 .await?)
50 }
51}