Delete VNC socket file when deleting domain

This commit is contained in:
Pierre HUBERT 2023-12-11 15:09:18 +01:00
parent ce98abb757
commit cb49f1cb40
3 changed files with 15 additions and 2 deletions

View File

@ -165,6 +165,15 @@ impl Handler<DeleteDomainReq> for LibVirtActor {
);
let domain = Domain::lookup_by_uuid_string(&self.m, &msg.id.as_string())?;
let domain_name = domain.get_name()?;
// Remove VNC socket
let vnc_socket = AppConfig::get().vnc_socket_for_domain(&domain_name);
if vnc_socket.exists() {
std::fs::remove_file(vnc_socket)?;
}
// Delete the domain
domain.undefine_flags(match msg.keep_files {
true => sys::VIR_DOMAIN_UNDEFINE_KEEP_NVRAM,
false => sys::VIR_DOMAIN_UNDEFINE_NVRAM,

View File

@ -172,6 +172,11 @@ impl AppConfig {
self.storage_path().join("vnc")
}
/// Get VM vnc sockets path for domain
pub fn vnc_socket_for_domain(&self, name: &str) -> PathBuf {
self.vnc_sockets_path().join(format!("vnc-{}", name))
}
/// Get VM vnc sockets directory
pub fn disks_storage_path(&self) -> PathBuf {
self.storage_path().join("disks")

View File

@ -174,8 +174,7 @@ impl VMInfo {
true => Some(GraphicsXML {
r#type: "vnc".to_string(),
socket: AppConfig::get()
.vnc_sockets_path()
.join(format!("vnc-{}", self.name))
.vnc_socket_for_domain(&self.name)
.to_string_lossy()
.to_string(),
}),