Skip to main content

hanzo_client/models/
cluster_view.rs

1/*
2 * Hanzo Cloud API
3 *
4 * The Hanzo Cloud API as a customer calls it: every operation under /v1/ except the operator's admin product, relay routes, legacy spellings and capabilities still reached by flag. Tagged by product: the first path segment after /v1/.
5 *
6 * The version of the OpenAPI document: v1
7 * 
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct ClusterView {
16    /// AmdGPU is the same count for `amd.com/gpu`: AMD accelerators across the BYO cluster's nodes, as of the attach.
17    #[serde(rename = "amdGpu", skip_serializing_if = "Option::is_none")]
18    pub amd_gpu: Option<i32>,
19    /// CreatedAt is when the cluster started existing: the earliest creation time among its pools for a managed cluster, and for a BYO one the RFC 3339 moment it was attached. Empty when the source states none.
20    #[serde(rename = "createdAt", skip_serializing_if = "Option::is_none")]
21    pub created_at: Option<String>,
22    /// DoClusterID carries the SAME id as DoksClusterID. Both names exist because the console's Cluster type reads either one; neither is a second identifier.
23    #[serde(rename = "doClusterId", skip_serializing_if = "Option::is_none")]
24    pub do_cluster_id: Option<String>,
25    /// DoksClusterID is the provider's own id for the cluster, and the value the /v1/visor/k8s/clusters/:id routes take. Empty for a BYO cluster: an attached kubeconfig was never provisioned, so there is no provider id to state.
26    #[serde(rename = "doksClusterId", skip_serializing_if = "Option::is_none")]
27    pub doks_cluster_id: Option<String>,
28    /// Kind says which of the two kinds of cluster this row is, and there are only two: \"managed\" — Visor provisioned it and Hanzo's account pays the provider — or \"byo\", an existing cluster the org attached by kubeconfig.
29    #[serde(rename = "kind", skip_serializing_if = "Option::is_none")]
30    pub kind: Option<String>,
31    /// Name is the cluster's name: the provider's for a managed cluster, and for a BYO one the lower-cased fleet name it was attached under — which is also how the detach route addresses it.
32    #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
33    pub name: Option<String>,
34    /// NodeCount is how many worker nodes the cluster has — the sum over its pools for a managed cluster, and for a BYO one the node count read off the cluster when it was attached.
35    #[serde(rename = "nodeCount", skip_serializing_if = "Option::is_none")]
36    pub node_count: Option<i32>,
37    /// NodePools is the authoritative node inventory — every pool, each with its own size and count. It is empty in two cases that are not \"no pools\": a row from the /v1/visor/k8s/clusters LIST, which is deliberately lightweight and whose :id detail carries them, and a BYO cluster, whose pools were never read.
38    #[serde(rename = "nodePools", skip_serializing_if = "Option::is_none")]
39    pub node_pools: Option<Vec<models::NodePoolView>>,
40    /// NodeSize is a display convenience: the size slug of the FIRST pool. A cluster mixing sizes has more than one, and NodePools is where they all are.
41    #[serde(rename = "nodeSize", skip_serializing_if = "Option::is_none")]
42    pub node_size: Option<String>,
43    /// NvidiaGPU is how many NVIDIA accelerators the cluster's nodes advertise, the sum of `nvidia.com/gpu` allocatable across them. BYO only, and counted ONCE when the cluster was attached — it is an inventory, not live capacity.
44    #[serde(rename = "nvidiaGpu", skip_serializing_if = "Option::is_none")]
45    pub nvidia_gpu: Option<i32>,
46    /// Region is the provider region slug for a managed cluster. A BYO cluster has no region we can read, so it carries the free-form `provider` label the attach named it with (\"gke\", \"on-prem\") instead.
47    #[serde(rename = "region", skip_serializing_if = "Option::is_none")]
48    pub region: Option<String>,
49    /// Status is the cluster's state: the provider's own word for a managed cluster (\"running\", \"provisioning\"), \"unknown\" when the provider stated none, and always \"attached\" for a BYO cluster — that one says the kubeconfig is on file, not that the cluster is reachable this second.
50    #[serde(rename = "status", skip_serializing_if = "Option::is_none")]
51    pub status: Option<String>,
52}
53
54impl ClusterView {
55    pub fn new() -> ClusterView {
56        ClusterView {
57            amd_gpu: None,
58            created_at: None,
59            do_cluster_id: None,
60            doks_cluster_id: None,
61            kind: None,
62            name: None,
63            node_count: None,
64            node_pools: None,
65            node_size: None,
66            nvidia_gpu: None,
67            region: None,
68            status: None,
69        }
70    }
71}
72