bootstrap: clonable config
This commit is contained in:
@ -2,7 +2,7 @@ use std::collections::BTreeMap as Map;
|
|||||||
|
|
||||||
pub const TAKE_ALL: i16 = -1;
|
pub const TAKE_ALL: i16 = -1;
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct Config {
|
pub struct Config {
|
||||||
pub anti_phishing_code: String,
|
pub anti_phishing_code: String,
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ impl Config {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct Auth {
|
pub struct Auth {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
#[serde(alias = "sshKey")]
|
#[serde(alias = "sshKey")]
|
||||||
@ -69,14 +69,14 @@ pub struct Auth {
|
|||||||
pub password: Option<String>,
|
pub password: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct Network {
|
pub struct Network {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
pub interfaces: Vec<NetworkInterface>,
|
pub interfaces: Vec<NetworkInterface>,
|
||||||
pub script: String,
|
pub script: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct NetworkInterface {
|
pub struct NetworkInterface {
|
||||||
pub var: String,
|
pub var: String,
|
||||||
pub n: i16,
|
pub n: i16,
|
||||||
@ -100,7 +100,7 @@ impl Default for SSHServer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct LvmVG {
|
pub struct LvmVG {
|
||||||
#[serde(alias = "vg")]
|
#[serde(alias = "vg")]
|
||||||
pub name: String,
|
pub name: String,
|
||||||
@ -112,7 +112,7 @@ pub struct LvmVG {
|
|||||||
pub lvs: Vec<LvmLV>,
|
pub lvs: Vec<LvmLV>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Default, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct LvmLVDefaults {
|
pub struct LvmLVDefaults {
|
||||||
#[serde(default)]
|
#[serde(default)]
|
||||||
pub fs: Filesystem,
|
pub fs: Filesystem,
|
||||||
@ -120,7 +120,7 @@ pub struct LvmLVDefaults {
|
|||||||
pub raid: Raid,
|
pub raid: Raid,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum Filesystem {
|
pub enum Filesystem {
|
||||||
Ext4,
|
Ext4,
|
||||||
@ -147,7 +147,7 @@ impl Default for Filesystem {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct LvmLV {
|
pub struct LvmLV {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
@ -158,14 +158,14 @@ pub struct LvmLV {
|
|||||||
pub size: LvSize,
|
pub size: LvSize,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum LvSize {
|
pub enum LvSize {
|
||||||
Size(String),
|
Size(String),
|
||||||
Extents(String),
|
Extents(String),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct LvmPV {
|
pub struct LvmPV {
|
||||||
pub n: i16,
|
pub n: i16,
|
||||||
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
#[serde(default, skip_serializing_if = "Vec::is_empty")]
|
||||||
@ -174,7 +174,7 @@ pub struct LvmPV {
|
|||||||
pub udev: Option<UdevFilter>,
|
pub udev: Option<UdevFilter>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct CryptDev {
|
pub struct CryptDev {
|
||||||
pub name: String,
|
pub name: String,
|
||||||
// hit the limit of enum representation here (flatten + enum variant case)
|
// hit the limit of enum representation here (flatten + enum variant case)
|
||||||
@ -230,7 +230,7 @@ pub enum DevFilter<'t> {
|
|||||||
Udev(&'t UdevFilter),
|
Udev(&'t UdevFilter),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize, serde::Serialize, Clone)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
#[serde(rename_all = "snake_case")]
|
#[serde(rename_all = "snake_case")]
|
||||||
pub enum UdevFilter {
|
pub enum UdevFilter {
|
||||||
Has(String),
|
Has(String),
|
||||||
@ -241,13 +241,13 @@ pub enum UdevFilter {
|
|||||||
Not(Box<UdevFilter>),
|
Not(Box<UdevFilter>),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Default, Clone, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, Default, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct Raid {
|
pub struct Raid {
|
||||||
pub mirrors: Option<u8>,
|
pub mirrors: Option<u8>,
|
||||||
pub stripes: Option<u8>,
|
pub stripes: Option<u8>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct Bootstrap {
|
pub struct Bootstrap {
|
||||||
pub dev: String,
|
pub dev: String,
|
||||||
pub seed: Option<String>,
|
pub seed: Option<String>,
|
||||||
|
|||||||
Reference in New Issue
Block a user