Add QCow2 file format support on backend

This commit is contained in:
2025-05-21 22:32:08 +02:00
parent 01f26c1a79
commit 1e8394b3c4
5 changed files with 228 additions and 138 deletions

View File

@ -4,7 +4,7 @@ use crate::libvirt_lib_structures::XMLUuid;
use crate::libvirt_lib_structures::domain::*;
use crate::libvirt_rest_structures::LibVirtStructError;
use crate::libvirt_rest_structures::LibVirtStructError::StructureExtraction;
use crate::utils::disks_utils::Disk;
use crate::utils::file_disks_utils::{DiskFormat, FileDisk};
use crate::utils::files_utils;
use crate::utils::files_utils::convert_size_unit_to_mb;
use lazy_regex::regex;
@ -78,7 +78,7 @@ pub struct VMInfo {
/// Attach ISO file(s)
pub iso_files: Vec<String>,
/// Storage - https://access.redhat.com/documentation/fr-fr/red_hat_enterprise_linux/6/html/virtualization_administration_guide/sect-virtualization-virtualized_block_devices-adding_storage_devices_to_guests#sect-Virtualization-Adding_storage_devices_to_guests-Adding_file_based_storage_to_a_guest
pub disks: Vec<Disk>,
pub disks: Vec<FileDisk>,
/// Network cards
pub networks: Vec<Network>,
/// Add a TPM v2.0 module
@ -129,6 +129,7 @@ impl VMInfo {
let mut disks = vec![];
// Add ISO files
for iso_file in &self.iso_files {
if !files_utils::check_file_name(iso_file) {
return Err(StructureExtraction("ISO filename is invalid!").into());
@ -267,7 +268,10 @@ impl VMInfo {
device: "disk".to_string(),
driver: DiskDriverXML {
name: "qemu".to_string(),
r#type: "raw".to_string(),
r#type: match disk.format {
DiskFormat::Raw { .. } => "raw".to_string(),
DiskFormat::QCow2 => "qcow2".to_string(),
},
cache: "none".to_string(),
},
source: DiskSourceXML {
@ -429,7 +433,7 @@ impl VMInfo {
.disks
.iter()
.filter(|d| d.device == "disk")
.map(|d| Disk::load_from_file(&d.source.file).unwrap())
.map(|d| FileDisk:: load_from_file(&d.source.file).unwrap())
.collect(),
networks: domain