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