Can create network filter rules
This commit is contained in:
@ -5,6 +5,7 @@ use crate::libvirt_lib_structures::nwfilter::*;
|
||||
use crate::libvirt_lib_structures::*;
|
||||
use crate::libvirt_rest_structures::hypervisor::*;
|
||||
use crate::libvirt_rest_structures::net::*;
|
||||
use crate::libvirt_rest_structures::nw_filter::NetworkFilter;
|
||||
use crate::libvirt_rest_structures::vm::*;
|
||||
use actix::{Actor, Context, Handler, Message};
|
||||
use image::ImageOutputFormat;
|
||||
@ -591,3 +592,29 @@ impl Handler<GetNWFilterXMLReq> for LibVirtActor {
|
||||
NetworkFilterXML::parse_xml(xml)
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Message)]
|
||||
#[rtype(result = "anyhow::Result<XMLUuid>")]
|
||||
pub struct DefineNWFilterReq(pub NetworkFilter, pub NetworkFilterXML);
|
||||
|
||||
impl Handler<DefineNWFilterReq> for LibVirtActor {
|
||||
type Result = anyhow::Result<XMLUuid>;
|
||||
|
||||
fn handle(&mut self, mut msg: DefineNWFilterReq, _ctx: &mut Self::Context) -> Self::Result {
|
||||
let xml = msg.1.into_xml()?;
|
||||
|
||||
log::debug!("Define network filter:\n{}", xml);
|
||||
let filter = NWFilter::define_xml(&self.m, &xml)?;
|
||||
let uuid = XMLUuid::parse_from_str(&filter.get_uuid_string()?)?;
|
||||
|
||||
// Save a copy of the source definition
|
||||
msg.0.uuid = Some(uuid);
|
||||
let json = serde_json::to_string(&msg.0)?;
|
||||
std::fs::write(
|
||||
AppConfig::get().net_filter_definition_path(&msg.0.name),
|
||||
json,
|
||||
)?;
|
||||
|
||||
Ok(uuid)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user