platz_sdk/resources/
k8s_resources.rs

1use 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}