Can change network interface type
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2025-05-30 20:30:30 +02:00
parent ef0d77f1d6
commit 22416badcf
3 changed files with 47 additions and 1 deletions

View File

@ -29,6 +29,12 @@ pub enum VMArchitecture {
X86_64,
}
#[derive(serde::Serialize, serde::Deserialize)]
pub enum NetworkInterfaceModelType {
Virtio,
E1000,
}
#[derive(serde::Serialize, serde::Deserialize)]
pub struct NWFilterParam {
name: String,
@ -46,6 +52,7 @@ pub struct Network {
#[serde(flatten)]
r#type: NetworkType,
mac: String,
model: NetworkInterfaceModelType,
nwfilterref: Option<NWFilterRef>,
}
@ -196,7 +203,11 @@ impl VMInfo {
};
let model = Some(NetIntModelXML {
r#type: "virtio".to_string(),
r#type: match n.model {
NetworkInterfaceModelType::Virtio => "virtio",
NetworkInterfaceModelType::E1000 => "e1000",
}
.to_string(),
});
let filterref = if let Some(n) = &n.nwfilterref {
@ -518,6 +529,18 @@ impl VMInfo {
)));
}
},
model: match d.model.as_ref() {
None => NetworkInterfaceModelType::Virtio,
Some(model) => match model.r#type.as_str() {
"virtio" => NetworkInterfaceModelType::Virtio,
"e1000" => NetworkInterfaceModelType::E1000,
model => {
return Err(LibVirtStructError::DomainExtraction(format!(
"Unknown network interface model type: {model}! "
)));
}
},
},
nwfilterref: d.filterref.as_ref().map(|f| NWFilterRef {
name: f.filter.to_string(),
parameters: f