Skip to main content

cloud_hypervisor_client/models/
vm_config.rs

1/*
2 * Cloud Hypervisor API
3 *
4 * Local HTTP based API for managing and inspecting a cloud-hypervisor virtual machine.
5 *
6 * The version of the OpenAPI document: 0.3.0
7 *
8 * Generated by: https://openapi-generator.tech
9 */
10
11use crate::models;
12use serde::{Deserialize, Serialize};
13
14/// VmConfig : Virtual machine configuration
15#[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    /// Virtual machine configuration
75    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}