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