bootstrap: add UdevFilter
This commit is contained in:
@ -12,7 +12,7 @@ use dkl::dls;
|
|||||||
#[derive(Parser)]
|
#[derive(Parser)]
|
||||||
#[command()]
|
#[command()]
|
||||||
struct Cli {
|
struct Cli {
|
||||||
#[arg(long, default_value = "http://[::1]:7606")]
|
#[arg(long, default_value = "http://[::1]:7606", env = "DLS_URL")]
|
||||||
dls: String,
|
dls: String,
|
||||||
|
|
||||||
#[command(subcommand)]
|
#[command(subcommand)]
|
||||||
|
|||||||
@ -57,7 +57,10 @@ pub struct Network {
|
|||||||
pub struct NetworkInterface {
|
pub struct NetworkInterface {
|
||||||
pub var: String,
|
pub var: String,
|
||||||
pub n: i16,
|
pub n: i16,
|
||||||
|
#[serde(skip_serializing_if = "Vec::is_empty")]
|
||||||
pub regexps: Vec<String>,
|
pub regexps: Vec<String>,
|
||||||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
pub filter: Option<UdevFilter>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
|
||||||
@ -154,7 +157,11 @@ pub struct CryptDev {
|
|||||||
}
|
}
|
||||||
impl CryptDev {
|
impl CryptDev {
|
||||||
pub fn optional(&self) -> bool {
|
pub fn optional(&self) -> bool {
|
||||||
self.optional.unwrap_or_else(|| self.filter.is_prefix())
|
self.optional.unwrap_or_else(|| match self.filter {
|
||||||
|
DevFilter::Dev(_) => false,
|
||||||
|
DevFilter::Prefix(_) => true,
|
||||||
|
DevFilter::Udev(_) => true,
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -163,6 +170,7 @@ impl CryptDev {
|
|||||||
pub enum DevFilter {
|
pub enum DevFilter {
|
||||||
Dev(String),
|
Dev(String),
|
||||||
Prefix(String),
|
Prefix(String),
|
||||||
|
Udev(String),
|
||||||
}
|
}
|
||||||
impl DevFilter {
|
impl DevFilter {
|
||||||
pub fn is_dev(&self) -> bool {
|
pub fn is_dev(&self) -> bool {
|
||||||
@ -179,6 +187,16 @@ impl DevFilter {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, serde::Deserialize, serde::Serialize)]
|
||||||
|
#[serde(rename_all = "snake_case")]
|
||||||
|
pub enum UdevFilter {
|
||||||
|
Eq(String, String),
|
||||||
|
Glob(String, String),
|
||||||
|
And(Vec<UdevFilter>),
|
||||||
|
Or(Vec<UdevFilter>),
|
||||||
|
Not(Box<UdevFilter>),
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Default, Clone, serde::Deserialize, serde::Serialize)]
|
#[derive(Debug, Default, Clone, serde::Deserialize, serde::Serialize)]
|
||||||
pub struct Raid {
|
pub struct Raid {
|
||||||
pub mirrors: Option<u8>,
|
pub mirrors: Option<u8>,
|
||||||
|
|||||||
Reference in New Issue
Block a user