From ea0e059ee15457ecf9f6d389945fb5e4e2879a71 Mon Sep 17 00:00:00 2001 From: mbecker20 Date: Sat, 25 May 2024 14:26:26 -0700 Subject: [PATCH] hetzner response optional parsing --- bin/core/src/cloud/hetzner/common.rs | 23 +++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/bin/core/src/cloud/hetzner/common.rs b/bin/core/src/cloud/hetzner/common.rs index 93627059c..442bae85c 100644 --- a/bin/core/src/cloud/hetzner/common.rs +++ b/bin/core/src/cloud/hetzner/common.rs @@ -10,13 +10,14 @@ pub struct HetznerServerResponse { #[derive(Debug, Clone, Deserialize)] pub struct HetznerServer { pub id: i64, - pub image: HetznerImage, pub name: String, pub primary_disk_size: f64, + pub image: Option, pub private_net: Vec, pub public_net: HetznerPublicNet, pub server_type: HetznerServerTypeDetails, pub status: HetznerServerStatus, + #[serde(default)] pub volumes: Vec, } @@ -42,6 +43,7 @@ pub struct HetznerPrivateNet { #[derive(Debug, Clone, Deserialize)] pub struct HetznerPublicNet { + #[serde(default)] pub firewalls: Vec, pub floating_ips: Vec, pub ipv4: Option, @@ -55,7 +57,7 @@ pub struct HetznerFirewall { #[derive(Debug, Clone, Deserialize)] pub struct HetznerIpv4 { - pub id: i64, + pub id: Option, pub blocked: bool, pub dns_ptr: String, pub ip: String, @@ -63,11 +65,12 @@ pub struct HetznerIpv4 { #[derive(Debug, Clone, Deserialize)] pub struct HetznerImage { + pub id: i64, pub description: String, - pub name: String, + pub name: Option, pub os_flavor: String, - pub os_version: String, - pub rapid_deploy: bool, + pub os_version: Option, + pub rapid_deploy: Option, } #[derive(Debug, Clone, Deserialize)] @@ -84,7 +87,7 @@ pub struct HetznerAction { pub progress: i32, pub resources: Vec, pub started: String, - pub status: String, + pub status: HetznerActionStatus, } #[derive(Debug, Clone, Deserialize)] @@ -217,6 +220,14 @@ pub enum HetznerServerStatus { Unknown, } +#[derive(Debug, Clone, Serialize, Deserialize)] +#[serde(rename_all = "lowercase")] +pub enum HetznerActionStatus { + Running, + Success, + Error, +} + #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "UPPERCASE")] #[allow(clippy::enum_variant_names)]