Skip to main content

hanzo_client/models/
machine_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 MachineView {
16    /// CreatedTime is when the machine came into being: the provider's own creation timestamp for a Visor machine, passed through in whatever form it states it, and for a BYO machine the RFC 3339 moment it first dialed in.
17    #[serde(rename = "createdTime", skip_serializing_if = "Option::is_none")]
18    pub created_time: Option<String>,
19    /// GPU names the accelerators this machine holds (\"H100\", or \"2× NVIDIA GB10\" for a BYO machine reporting a matched pair). Empty means the machine is not a GPU machine — the size slug does not parse as one, or nvidia-smi found nothing.
20    #[serde(rename = "gpu", skip_serializing_if = "Option::is_none")]
21    pub gpu: Option<String>,
22    /// ID addresses this machine on the /v1/visor/machines/:id routes: the org-scoped NAME Visor keys a machine by, falling back to the provider id for a machine that has no name. A BYO machine's is the id it dialed in under.
23    #[serde(rename = "id", skip_serializing_if = "Option::is_none")]
24    pub id: Option<String>,
25    /// Image is the OS image the machine booted from, as the provider names it.
26    #[serde(rename = "image", skip_serializing_if = "Option::is_none")]
27    pub image: Option<String>,
28    /// Mem is system RAM rendered for a human (\"8 GB\"), not a number to compute with. Empty when the provider's figure is ambiguous, or when the only figure available is a GPU slug's gb — that is VRAM, and reporting it as system RAM would be a fabrication. A BYO machine's RAM is on /v1/visor/fleet/workers.
29    #[serde(rename = "mem", skip_serializing_if = "Option::is_none")]
30    pub mem: Option<String>,
31    /// Name is the label to show a human — Visor's displayName, or the machine name when it carries none. A BYO machine's is its hostname. It is not an address: ID is what the routes take.
32    #[serde(rename = "name", skip_serializing_if = "Option::is_none")]
33    pub name: Option<String>,
34    /// Os is the operating system on the machine — Visor's record for a provisioned one, the host's own report (linux, darwin, windows) for a BYO one.
35    #[serde(rename = "os", skip_serializing_if = "Option::is_none")]
36    pub os: Option<String>,
37    /// PrivateIp is the address on the provider's own network, reachable from the org's other machines in the same region. Empty on the same terms as PublicIp.
38    #[serde(rename = "privateIp", skip_serializing_if = "Option::is_none")]
39    pub private_ip: Option<String>,
40    /// Provider is the cloud that runs the machine (\"digitalocean\"), or \"byo\" for one the operator dialed in with `hanzo link`.
41    #[serde(rename = "provider", skip_serializing_if = "Option::is_none")]
42    pub provider: Option<String>,
43    /// PublicIp is the internet-facing address the provider assigned. Empty while a machine is still provisioning, and empty for a BYO machine — it dials out from behind NAT, so no address is ever learned for it.
44    #[serde(rename = "publicIp", skip_serializing_if = "Option::is_none")]
45    pub public_ip: Option<String>,
46    /// Region is the provider region slug (\"sfo3\"), or the zone when the provider reports only that. \"on-prem\" for a BYO machine, which has no cloud region.
47    #[serde(rename = "region", skip_serializing_if = "Option::is_none")]
48    pub region: Option<String>,
49    /// Status is the lifecycle state in the PROVIDER's own words (\"active\", \"running\", \"off\"), passed through rather than mapped onto a vocabulary of ours. A BYO machine's is \"online\" or \"offline\", decided by whether its last heartbeat is within 90s.
50    #[serde(rename = "status", skip_serializing_if = "Option::is_none")]
51    pub status: Option<String>,
52    /// Type is the provider SIZE SLUG the machine runs at (\"s-2vcpu-4gb\", \"gpu-h100x8-640gb\") — the value a launch asks for, and what Vcpu/Mem/GPU are read out of when the provider states them no other way. \"byo-gpu\" for a dialed-in machine, which was never bought from a size catalog.
53    #[serde(rename = "type", skip_serializing_if = "Option::is_none")]
54    pub r#type: Option<String>,
55    /// Vcpu is logical cores — the provider's own cpuSize when that is a clean integer, else the count read out of the size slug (4 from \"s-4vcpu-8gb\"). ABSENT, never 0, when neither says. A BYO machine leaves it absent here; its real core count is on GET /v1/visor/fleet/workers.
56    #[serde(rename = "vcpu", skip_serializing_if = "Option::is_none")]
57    pub vcpu: Option<i32>,
58}
59
60impl MachineView {
61    pub fn new() -> MachineView {
62        MachineView {
63            created_time: None,
64            gpu: None,
65            id: None,
66            image: None,
67            mem: None,
68            name: None,
69            os: None,
70            private_ip: None,
71            provider: None,
72            public_ip: None,
73            region: None,
74            status: None,
75            r#type: None,
76            vcpu: None,
77        }
78    }
79}
80