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 = "pmem", skip_serializing_if = "Option::is_none")]
36 pub pmem: Option<Vec<models::PmemConfig>>,
37 #[serde(rename = "serial", skip_serializing_if = "Option::is_none")]
38 pub serial: Option<models::ConsoleConfig>,
39 #[serde(rename = "console", skip_serializing_if = "Option::is_none")]
40 pub console: Option<models::ConsoleConfig>,
41 #[serde(rename = "debug_console", skip_serializing_if = "Option::is_none")]
42 pub debug_console: Option<models::DebugConsoleConfig>,
43 #[serde(rename = "devices", skip_serializing_if = "Option::is_none")]
44 pub devices: Option<Vec<models::DeviceConfig>>,
45 #[serde(rename = "vdpa", skip_serializing_if = "Option::is_none")]
46 pub vdpa: Option<Vec<models::VdpaConfig>>,
47 #[serde(rename = "vsock", skip_serializing_if = "Option::is_none")]
48 pub vsock: Option<models::VsockConfig>,
49 #[serde(rename = "sgx_epc", skip_serializing_if = "Option::is_none")]
50 pub sgx_epc: Option<Vec<models::SgxEpcConfig>>,
51 #[serde(rename = "numa", skip_serializing_if = "Option::is_none")]
52 pub numa: Option<Vec<models::NumaConfig>>,
53 #[serde(rename = "iommu", skip_serializing_if = "Option::is_none")]
54 pub iommu: Option<bool>,
55 #[serde(rename = "watchdog", skip_serializing_if = "Option::is_none")]
56 pub watchdog: Option<bool>,
57 #[serde(rename = "pvpanic", skip_serializing_if = "Option::is_none")]
58 pub pvpanic: Option<bool>,
59 #[serde(rename = "pci_segments", skip_serializing_if = "Option::is_none")]
60 pub pci_segments: Option<Vec<models::PciSegmentConfig>>,
61 #[serde(rename = "platform", skip_serializing_if = "Option::is_none")]
62 pub platform: Option<models::PlatformConfig>,
63 #[serde(rename = "tpm", skip_serializing_if = "Option::is_none")]
64 pub tpm: Option<models::TpmConfig>,
65 #[serde(rename = "landlock_enable", skip_serializing_if = "Option::is_none")]
66 pub landlock_enable: Option<bool>,
67 #[serde(rename = "landlock_rules", skip_serializing_if = "Option::is_none")]
68 pub landlock_rules: Option<Vec<models::LandlockConfig>>,
69}
70
71impl VmConfig {
72 pub fn new(payload: models::PayloadConfig) -> VmConfig {
74 VmConfig {
75 cpus: None,
76 memory: None,
77 payload,
78 rate_limit_groups: None,
79 disks: None,
80 net: None,
81 rng: None,
82 balloon: None,
83 fs: None,
84 pmem: None,
85 serial: None,
86 console: None,
87 debug_console: None,
88 devices: None,
89 vdpa: None,
90 vsock: None,
91 sgx_epc: None,
92 numa: None,
93 iommu: None,
94 watchdog: None,
95 pvpanic: None,
96 pci_segments: None,
97 platform: None,
98 tpm: None,
99 landlock_enable: None,
100 landlock_rules: None,
101 }
102 }
103}