diff --git a/src/dls.rs b/src/dls.rs index 102396c..2f6044a 100644 --- a/src/dls.rs +++ b/src/dls.rs @@ -82,6 +82,10 @@ impl Client { Ok(()) } + pub async fn get_config(&self) -> Result { + self.get_json("config").await + } + pub async fn get_json(&self, path: impl Display) -> Result { self.req_json(self.get(&path)?).await } @@ -179,17 +183,23 @@ impl<'t> Host<'t> { } #[derive(Default, serde::Deserialize, serde::Serialize)] -#[serde(rename_all = "PascalCase")] +#[serde(default, rename_all = "PascalCase")] pub struct Config { - #[serde(default, deserialize_with = "deserialize_null_as_default")] + #[serde(deserialize_with = "deserialize_null_as_default", alias = "clusters")] pub clusters: Vec, - #[serde(default, deserialize_with = "deserialize_null_as_default")] + #[serde(deserialize_with = "deserialize_null_as_default", alias = "hosts")] pub hosts: Vec, - #[serde(default, deserialize_with = "deserialize_null_as_default")] + #[serde( + deserialize_with = "deserialize_null_as_default", + alias = "hosttemplates" + )] pub host_templates: Vec, - #[serde(default, rename = "SSLConfig")] + #[serde(default, rename = "SSLConfig", alias = "sslconfig")] pub ssl_config: String, - #[serde(default, deserialize_with = "deserialize_null_as_default")] + #[serde( + deserialize_with = "deserialize_null_as_default", + alias = "extracacerts" + )] pub extra_ca_certs: Map, } @@ -207,40 +217,57 @@ where #[derive(serde::Deserialize, serde::Serialize)] #[serde(rename_all = "PascalCase")] pub struct ClusterConfig { + #[serde(alias = "name")] pub name: String, + #[serde(alias = "bootstrappods")] pub bootstrap_pods: String, + #[serde(alias = "addons")] pub addons: String, } #[derive(Default, serde::Deserialize, serde::Serialize)] #[serde(rename_all = "PascalCase")] pub struct HostConfig { + #[serde(alias = "name")] pub name: String, - #[serde(default, skip_serializing_if = "Option::is_none")] + #[serde( + default, + skip_serializing_if = "Option::is_none", + alias = "cluster_name" + )] pub cluster_name: Option, - #[serde(rename = "IPs")] + #[serde(rename = "IPs", alias = "ips")] pub ips: Vec, - #[serde(default, skip_serializing_if = "Map::is_empty")] + #[serde(default, skip_serializing_if = "Map::is_empty", alias = "labels")] pub labels: Map, - #[serde(default, skip_serializing_if = "Map::is_empty")] + #[serde(default, skip_serializing_if = "Map::is_empty", alias = "annotations")] pub annotations: Map, - #[serde(rename = "IPXE", skip_serializing_if = "Option::is_none")] + #[serde( + rename = "IPXE", + skip_serializing_if = "Option::is_none", + alias = "ipxe" + )] pub ipxe: Option, + #[serde(alias = "initrd")] pub initrd: String, + #[serde(alias = "kernel")] pub kernel: String, + #[serde(alias = "versions")] pub versions: Map, /// initrd config template + #[serde(alias = "bootstrap_config")] pub bootstrap_config: String, /// files to add to the final initrd config, with rendering - #[serde(default, skip_serializing_if = "Vec::is_empty")] + #[serde(default, skip_serializing_if = "Vec::is_empty", alias = "initrd_files")] pub initrd_files: Vec, /// system config template + #[serde(alias = "config")] pub config: String, }