cloud_hypervisor_client/models/
vm_config.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
16pub struct VmConfig {
17 #[serde(rename = "cpus", skip_serializing_if = "Option::is_none")]
18 pub cpus: Option<models::CpusConfig>,
19 #[serde(rename = "memory", skip_serializing_if = "Option::is_none")]
20 pub memory: Option<models::MemoryConfig>,
21 #[serde(rename = "payload")]
22 pub payload: models::PayloadConfig,
23 #[serde(rename = "rate_limit_groups", skip_serializing_if = "Option::is_none")]
24 pub rate_limit_groups: Option<Vec<models::RateLimitGroupConfig>>,
25 #[serde(rename = "disks", skip_serializing_if = "Option::is_none")]
26 pub disks: Option<Vec<models::DiskConfig>>,
27 #[serde(rename = "net", skip_serializing_if = "Option::is_none")]
28 pub net: Option<Vec<models::NetConfig>>,
29 #[serde(rename = "rng", skip_serializing_if = "Option::is_none")]
30 pub rng: Option<models::RngConfig>,
31 #[serde(rename = "balloon", skip_serializing_if = "Option::is_none")]
32 pub balloon: Option<models::BalloonConfig>,
33 #[serde(rename = "fs", skip_serializing_if = "Option::is_none")]
34 pub fs: Option<Vec<models::FsConfig>>,
35 #[serde(rename = "generic-vhost-user", skip_serializing_if = "Option::is_none")]
36 pub generic_vhost_user: Option<Vec<models::GenericVhostUserConfig>>,
37 #[serde(rename = "pmem", skip_serializing_if = "Option::is_none")]
38 pub pmem: Option<Vec<models::PmemConfig>>,
39 #[serde(rename = "serial", skip_serializing_if = "Option::is_none")]
40 pub serial: Option<models::ConsoleConfig>,
41 #[serde(rename = "console", skip_serializing_if = "Option::is_none")]
42 pub console: Option<models::ConsoleConfig>,
43 #[serde(rename = "debug_console", skip_serializing_if = "Option::is_none")]
44 pub debug_console: Option<models::DebugConsoleConfig>,
45 #[serde(rename = "devices", skip_serializing_if = "Option::is_none")]
46 pub devices: Option<Vec<models::DeviceConfig>>,
47 #[serde(rename = "user_devices", skip_serializing_if = "Option::is_none")]
48 pub user_devices: Option<Vec<models::UserDeviceConfig>>,
49 #[serde(rename = "vdpa", skip_serializing_if = "Option::is_none")]
50 pub vdpa: Option<Vec<models::VdpaConfig>>,
51 #[serde(rename = "vsock", skip_serializing_if = "Option::is_none")]
52 pub vsock: Option<models::VsockConfig>,
53 #[serde(rename = "numa", skip_serializing_if = "Option::is_none")]
54 pub numa: Option<Vec<models::NumaConfig>>,
55 #[serde(rename = "iommu", skip_serializing_if = "Option::is_none")]
56 pub iommu: Option<bool>,
57 #[serde(rename = "watchdog", skip_serializing_if = "Option::is_none")]
58 pub watchdog: Option<bool>,
59 #[serde(rename = "pvpanic", skip_serializing_if = "Option::is_none")]
60 pub pvpanic: Option<bool>,
61 #[serde(rename = "pci_segments", skip_serializing_if = "Option::is_none")]
62 pub pci_segments: Option<Vec<models::PciSegmentConfig>>,
63 #[serde(rename = "platform", skip_serializing_if = "Option::is_none")]
64 pub platform: Option<models::PlatformConfig>,
65 #[serde(rename = "tpm", skip_serializing_if = "Option::is_none")]
66 pub tpm: Option<models::TpmConfig>,
67 #[serde(rename = "landlock_enable", skip_serializing_if = "Option::is_none")]
68 pub landlock_enable: Option<bool>,
69 #[serde(rename = "landlock_rules", skip_serializing_if = "Option::is_none")]
70 pub landlock_rules: Option<Vec<models::LandlockConfig>>,
71}
72
73impl VmConfig {
74 pub fn new(payload: models::PayloadConfig) -> VmConfig {
76 VmConfig {
77 cpus: None,
78 memory: None,
79 payload,
80 rate_limit_groups: None,
81 disks: None,
82 net: None,
83 rng: None,
84 balloon: None,
85 fs: None,
86 generic_vhost_user: None,
87 pmem: None,
88 serial: None,
89 console: None,
90 debug_console: None,
91 devices: None,
92 user_devices: None,
93 vdpa: None,
94 vsock: None,
95 numa: None,
96 iommu: None,
97 watchdog: None,
98 pvpanic: None,
99 pci_segments: None,
100 platform: None,
101 tpm: None,
102 landlock_enable: None,
103 landlock_rules: None,
104 }
105 }
106}