Change graphics driver model used for VNC connections
This commit is contained in:
parent
78ed6114c8
commit
299b63cd32
@ -90,10 +90,14 @@ pub struct DomainInputXML {
|
|||||||
#[derive(serde::Serialize, serde::Deserialize)]
|
#[derive(serde::Serialize, serde::Deserialize)]
|
||||||
#[serde(rename = "devices")]
|
#[serde(rename = "devices")]
|
||||||
pub struct DevicesXML {
|
pub struct DevicesXML {
|
||||||
/// Graphics (used for VNC
|
/// Graphics (used for VNC)
|
||||||
#[serde(skip_serializing_if = "Option::is_none")]
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
pub graphics: Option<GraphicsXML>,
|
pub graphics: Option<GraphicsXML>,
|
||||||
|
|
||||||
|
/// Graphics (used for VNC)
|
||||||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||||||
|
pub video: Option<VideoXML>,
|
||||||
|
|
||||||
/// Disks (used for storage)
|
/// Disks (used for storage)
|
||||||
#[serde(default, rename = "disk", skip_serializing_if = "Vec::is_empty")]
|
#[serde(default, rename = "disk", skip_serializing_if = "Vec::is_empty")]
|
||||||
pub disks: Vec<DiskXML>,
|
pub disks: Vec<DiskXML>,
|
||||||
@ -107,7 +111,7 @@ pub struct DevicesXML {
|
|||||||
pub inputs: Vec<DomainInputXML>,
|
pub inputs: Vec<DomainInputXML>,
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Screen information
|
/// Graphics information
|
||||||
#[derive(serde::Serialize, serde::Deserialize)]
|
#[derive(serde::Serialize, serde::Deserialize)]
|
||||||
#[serde(rename = "graphics")]
|
#[serde(rename = "graphics")]
|
||||||
pub struct GraphicsXML {
|
pub struct GraphicsXML {
|
||||||
@ -117,6 +121,21 @@ pub struct GraphicsXML {
|
|||||||
pub socket: String,
|
pub socket: String,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Video device information
|
||||||
|
#[derive(serde::Serialize, serde::Deserialize)]
|
||||||
|
#[serde(rename = "video")]
|
||||||
|
pub struct VideoXML {
|
||||||
|
pub model: VideoModelXML,
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Video model device information
|
||||||
|
#[derive(serde::Serialize, serde::Deserialize)]
|
||||||
|
#[serde(rename = "model")]
|
||||||
|
pub struct VideoModelXML {
|
||||||
|
#[serde(rename(serialize = "@type"))]
|
||||||
|
pub r#type: String,
|
||||||
|
}
|
||||||
|
|
||||||
/// Disk information
|
/// Disk information
|
||||||
#[derive(serde::Serialize, serde::Deserialize)]
|
#[derive(serde::Serialize, serde::Deserialize)]
|
||||||
#[serde(rename = "disk")]
|
#[serde(rename = "disk")]
|
||||||
|
@ -5,7 +5,8 @@ use crate::libvirt_lib_structures::{
|
|||||||
DomainCPUTopology, DomainCPUXML, DomainInputXML, DomainMemoryXML, DomainNetInterfaceXML,
|
DomainCPUTopology, DomainCPUXML, DomainInputXML, DomainMemoryXML, DomainNetInterfaceXML,
|
||||||
DomainVCPUXML, DomainXML, FeaturesXML, GraphicsXML, NetIntSourceXML, NetworkDHCPRangeXML,
|
DomainVCPUXML, DomainXML, FeaturesXML, GraphicsXML, NetIntSourceXML, NetworkDHCPRangeXML,
|
||||||
NetworkDHCPXML, NetworkDNSForwarderXML, NetworkDNSXML, NetworkDomainXML, NetworkForwardXML,
|
NetworkDHCPXML, NetworkDNSForwarderXML, NetworkDNSXML, NetworkDomainXML, NetworkForwardXML,
|
||||||
NetworkIPXML, NetworkXML, OSLoaderXML, OSTypeXML, XMLUuid, ACPIXML, OSXML,
|
NetworkIPXML, NetworkXML, OSLoaderXML, OSTypeXML, VideoModelXML, VideoXML, XMLUuid, ACPIXML,
|
||||||
|
OSXML,
|
||||||
};
|
};
|
||||||
use crate::libvirt_rest_structures::LibVirtStructError::StructureExtraction;
|
use crate::libvirt_rest_structures::LibVirtStructError::StructureExtraction;
|
||||||
use crate::utils::disks_utils::Disk;
|
use crate::utils::disks_utils::Disk;
|
||||||
@ -170,15 +171,22 @@ impl VMInfo {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
let vnc_graphics = match self.vnc_access {
|
let (vnc_graphics, vnc_video) = match self.vnc_access {
|
||||||
true => Some(GraphicsXML {
|
true => (
|
||||||
r#type: "vnc".to_string(),
|
Some(GraphicsXML {
|
||||||
socket: AppConfig::get()
|
r#type: "vnc".to_string(),
|
||||||
.vnc_socket_for_domain(&self.name)
|
socket: AppConfig::get()
|
||||||
.to_string_lossy()
|
.vnc_socket_for_domain(&self.name)
|
||||||
.to_string(),
|
.to_string_lossy()
|
||||||
}),
|
.to_string(),
|
||||||
false => None,
|
}),
|
||||||
|
Some(VideoXML {
|
||||||
|
model: VideoModelXML {
|
||||||
|
r#type: "qxl".to_string(),
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
false => (None, None),
|
||||||
};
|
};
|
||||||
|
|
||||||
// Check disks name for duplicates
|
// Check disks name for duplicates
|
||||||
@ -268,6 +276,7 @@ impl VMInfo {
|
|||||||
|
|
||||||
devices: DevicesXML {
|
devices: DevicesXML {
|
||||||
graphics: vnc_graphics,
|
graphics: vnc_graphics,
|
||||||
|
video: vnc_video,
|
||||||
disks,
|
disks,
|
||||||
net_interfaces: networks,
|
net_interfaces: networks,
|
||||||
inputs: vec![
|
inputs: vec![
|
||||||
|
Loading…
Reference in New Issue
Block a user