Can change network interface type
	
		
			
	
		
	
	
		
	
		
			Some checks failed
		
		
	
	
		
			
				
	
				continuous-integration/drone/push Build is failing
				
			
		
		
	
	
				
					
				
			
		
			Some checks failed
		
		
	
	continuous-integration/drone/push Build is failing
				
			This commit is contained in:
		@@ -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
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user