dls::File + variants for TLS

This commit is contained in:
Mikaël Cluseau
2025-11-20 11:47:55 +01:00
parent c4ed68d0e9
commit 93f3af0ba8

View File

@ -5,6 +5,7 @@ use reqwest::Method;
use std::collections::BTreeMap as Map; use std::collections::BTreeMap as Map;
use std::fmt::Display; use std::fmt::Display;
use std::net::IpAddr; use std::net::IpAddr;
use std::time::Duration;
pub struct Client { pub struct Client {
base_url: String, base_url: String,
@ -190,8 +191,8 @@ pub struct HostConfig {
pub versions: Map<String, String>, pub versions: Map<String, String>,
pub bootstrap_config: String, pub bootstrap_config: String,
#[serde(skip_serializing_if = "Map::is_empty")] #[serde(default, skip_serializing_if = "Vec::is_empty")]
pub initrd_files: Map<String, String>, pub initrd_files: Vec<crate::File>,
pub config: String, pub config: String,
} }
@ -305,3 +306,50 @@ pub enum Error {
#[error("response parsing failed: {0}")] #[error("response parsing failed: {0}")]
Parse(serde_json::Error), Parse(serde_json::Error),
} }
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum File {
Static(crate::File),
Gen { path: String, from: ContentGen },
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum ContentGen {
CaCrt(CaRef),
TlsKey(TlsRef),
TlsCrt {
key: TlsRef,
ca: CaRef,
profile: CertProfile,
},
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum CaRef {
Global(String),
Cluster(String, String),
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum TlsRef {
Cluster(String, String),
Host(String, String),
}
#[derive(serde::Serialize, serde::Deserialize)]
#[serde(rename_all = "snake_case")]
pub enum CertProfile {
Client,
Server,
/// basicaly Client+Server
Peer,
Kube {
user: String,
group: String,
duration: Duration,
},
}