public inbox for pdm-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [pdm-devel] [PATCH proxmox-api-types 1/2] regenerate and adapt to rng changes
@ 2025-04-18  9:32 Dominik Csapak
  2025-04-18  9:32 ` [pdm-devel] [PATCH proxmox-api-types 2/2] generator: derive default for enums that provide a default Dominik Csapak
  2025-04-22 19:49 ` [pdm-devel] applied: [PATCH proxmox-api-types 1/2] regenerate and adapt to rng changes Thomas Lamprecht
  0 siblings, 2 replies; 3+ messages in thread
From: Dominik Csapak @ 2025-04-18  9:32 UTC (permalink / raw)
  To: pdm-devel

the recent changes for rng in qemu-server:
18fc321e (refactor: move rng related code into its own module)

converted the rng0 format to a proper registered format, which changes
its name, so we have to adapt the renaming of the enum variants.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 pve-api-types/generate.pl            |   6 +-
 pve-api-types/src/generated/code.rs  |   2 +
 pve-api-types/src/generated/types.rs | 306 ++++++++++++++++++++-------
 3 files changed, 238 insertions(+), 76 deletions(-)

diff --git a/pve-api-types/generate.pl b/pve-api-types/generate.pl
index 8be737b..c7ce9a6 100644
--- a/pve-api-types/generate.pl
+++ b/pve-api-types/generate.pl
@@ -89,9 +89,9 @@ Schema2Rust::register_enum_variant('QemuConfigEfidisk0Efitype::2m' => 'Mb2');
 Schema2Rust::register_enum_variant('QemuConfigEfidisk0Efitype::4m' => 'Mb4');
 Schema2Rust::register_enum_variant('QemuConfigHugepages::2' => 'Mb2');
 Schema2Rust::register_enum_variant('QemuConfigHugepages::1024' => 'Mb1024');
-Schema2Rust::register_enum_variant('QemuConfigRng0Source::/dev/urandom', => 'DevUrandom');
-Schema2Rust::register_enum_variant('QemuConfigRng0Source::/dev/random', => 'DevRandom');
-Schema2Rust::register_enum_variant('QemuConfigRng0Source::/dev/hwrng', => 'DevHwrng');
+Schema2Rust::register_enum_variant('PveQmRngSource::/dev/urandom', => 'DevUrandom');
+Schema2Rust::register_enum_variant('PveQmRngSource::/dev/random', => 'DevRandom');
+Schema2Rust::register_enum_variant('PveQmRngSource::/dev/hwrng', => 'DevHwrng');
 Schema2Rust::register_enum_variant('QemuConfigTpmstate0Version::v1.2' => 'V1_2');
 Schema2Rust::register_enum_variant('QemuConfigTpmstate0Version::v2.0' => 'V2_0');
 
diff --git a/pve-api-types/src/generated/code.rs b/pve-api-types/src/generated/code.rs
index 401d3bc..42f9e37 100644
--- a/pve-api-types/src/generated/code.rs
+++ b/pve-api-types/src/generated/code.rs
@@ -80,6 +80,8 @@
 /// - /cluster/jobs/schedule-analyze
 /// - /cluster/log
 /// - /cluster/mapping
+/// - /cluster/mapping/dir
+/// - /cluster/mapping/dir/{id}
 /// - /cluster/mapping/pci
 /// - /cluster/mapping/pci/{id}
 /// - /cluster/mapping/usb
diff --git a/pve-api-types/src/generated/types.rs b/pve-api-types/src/generated/types.rs
index 5a656ba..c64da8b 100644
--- a/pve-api-types/src/generated/types.rs
+++ b/pve-api-types/src/generated/types.rs
@@ -3818,6 +3818,10 @@ pub struct ProxmoxRemote {
 #[api(
     default_key: "type",
     properties: {
+        "allow-smt": {
+            default: true,
+            optional: true,
+        },
         "kernel-hashes": {
             default: false,
             optional: true,
@@ -3838,19 +3842,27 @@ pub struct ProxmoxRemote {
 /// Object.
 #[derive(Debug, serde::Deserialize, serde::Serialize)]
 pub struct PveQemuSevFmt {
+    /// Sets policy bit to allow Simultaneous Multi Threading (SMT) (Ignored
+    /// unless for SEV-SNP)
+    #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")]
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    #[serde(rename = "allow-smt")]
+    pub allow_smt: Option<bool>,
+
     /// Add kernel hashes to guest firmware for measured linux kernel launch
     #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")]
     #[serde(default, skip_serializing_if = "Option::is_none")]
     #[serde(rename = "kernel-hashes")]
     pub kernel_hashes: Option<bool>,
 
-    /// Sets policy bit 0 to 1 to disallow debugging of guest
+    /// Sets policy bit to disallow debugging of guest
     #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")]
     #[serde(default, skip_serializing_if = "Option::is_none")]
     #[serde(rename = "no-debug")]
     pub no_debug: Option<bool>,
 
-    /// Sets policy bit 1 to 1 to disallow key sharing with other guests
+    /// Sets policy bit to disallow key sharing with other guests (Ignored for
+    /// SEV-SNP)
     #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")]
     #[serde(default, skip_serializing_if = "Option::is_none")]
     #[serde(rename = "no-key-sharing")]
@@ -3862,7 +3874,7 @@ pub struct PveQemuSevFmt {
 
 #[api]
 /// Enable standard SEV with type='std' or enable experimental SEV-ES with the
-/// 'es' option.
+/// 'es' option or enable experimental SEV-SNP with the 'snp' option.
 #[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum PveQemuSevFmtType {
     #[serde(rename = "std")]
@@ -3871,6 +3883,9 @@ pub enum PveQemuSevFmtType {
     #[serde(rename = "es")]
     /// es.
     Es,
+    #[serde(rename = "snp")]
+    /// snp.
+    Snp,
 }
 serde_plain::derive_display_from_serialize!(PveQemuSevFmtType);
 serde_plain::derive_fromstr_from_deserialize!(PveQemuSevFmtType);
@@ -4531,9 +4546,6 @@ pub enum PveQmIdeFormat {
     #[serde(rename = "raw")]
     /// raw.
     Raw,
-    #[serde(rename = "cow")]
-    /// cow.
-    Cow,
     #[serde(rename = "qcow")]
     /// qcow.
     Qcow,
@@ -4667,6 +4679,64 @@ pub struct PveQmIpconfig {
     pub ip6: Option<String>,
 }
 
+#[api(
+    default_key: "source",
+    properties: {
+        max_bytes: {
+            default: 1024,
+            optional: true,
+            type: Integer,
+        },
+        period: {
+            default: 1000,
+            optional: true,
+            type: Integer,
+        },
+        source: {
+            type: PveQmRngSource,
+        },
+    },
+)]
+/// Object.
+#[derive(Debug, serde::Deserialize, serde::Serialize)]
+pub struct PveQmRng {
+    /// Maximum bytes of entropy allowed to get injected into the guest every
+    /// 'period' milliseconds. Use `0` to disable limiting (potentially
+    /// dangerous!).
+    #[serde(deserialize_with = "proxmox_login::parse::deserialize_i64")]
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    pub max_bytes: Option<i64>,
+
+    /// Every 'period' milliseconds the entropy-injection quota is reset,
+    /// allowing the guest to retrieve another 'max_bytes' of entropy.
+    #[serde(deserialize_with = "proxmox_login::parse::deserialize_i64")]
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    pub period: Option<i64>,
+
+    pub source: PveQmRngSource,
+}
+
+#[api]
+/// The file on the host to gather entropy from. Using urandom does *not*
+/// decrease security in any meaningful way, as it's still seeded from real
+/// entropy, and the bytes provided will most likely be mixed with real entropy
+/// on the guest as well. '/dev/hwrng' can be used to pass through a hardware
+/// RNG from the host.
+#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+pub enum PveQmRngSource {
+    #[serde(rename = "/dev/urandom")]
+    /// /dev/urandom.
+    DevUrandom,
+    #[serde(rename = "/dev/random")]
+    /// /dev/random.
+    DevRandom,
+    #[serde(rename = "/dev/hwrng")]
+    /// /dev/hwrng.
+    DevHwrng,
+}
+serde_plain::derive_display_from_serialize!(PveQmRngSource);
+serde_plain::derive_fromstr_from_deserialize!(PveQmRngSource);
+
 #[api(
     properties: {
         base64: {
@@ -5345,7 +5415,7 @@ QEMU_CONFIG_VMSTATESTORAGE_RE = r##"^(?i:[a-z][a-z0-9\-_.]*[a-z0-9])$"##;
             optional: true,
         },
         rng0: {
-            format: &ApiStringFormat::PropertyString(&QemuConfigRng0::API_SCHEMA),
+            format: &ApiStringFormat::PropertyString(&PveQmRng::API_SCHEMA),
             optional: true,
             type: String,
         },
@@ -5454,6 +5524,9 @@ QEMU_CONFIG_VMSTATESTORAGE_RE = r##"^(?i:[a-z][a-z0-9\-_.]*[a-z0-9])$"##;
         virtio: {
             type: QemuConfigVirtioArray,
         },
+        virtiofs: {
+            type: QemuConfigVirtiofsArray,
+        },
         vmgenid: {
             default: "1 (autogenerated)",
             optional: true,
@@ -5842,6 +5915,11 @@ pub struct QemuConfig {
     #[serde(flatten)]
     pub virtio: QemuConfigVirtioArray,
 
+    /// Configuration for sharing a directory between host and guest using
+    /// Virtio-fs.
+    #[serde(flatten)]
+    pub virtiofs: QemuConfigVirtiofsArray,
+
     /// Set VM Generation ID. Use '1' to autogenerate on create or update, pass
     /// '0' to disable explicitly.
     #[serde(default, skip_serializing_if = "Option::is_none")]
@@ -5994,6 +6072,16 @@ generate_array_field! {
     }
     virtio
 }
+generate_array_field! {
+    QemuConfigVirtiofsArray [ 10 ] :
+    r#"Configuration for sharing a directory between host and guest using Virtio-fs."#,
+    String => {
+        description: "Configuration for sharing a directory between host and guest using Virtio-fs.",
+        format: &ApiStringFormat::PropertyString(&QemuConfigVirtiofs::API_SCHEMA),
+        type: String,
+    }
+    virtiofs
+}
 
 #[api(
     default_key: "enabled",
@@ -6389,6 +6477,14 @@ serde_plain::derive_fromstr_from_deserialize!(QemuConfigLock);
 #[api(
     default_key: "type",
     properties: {
+        "enable-s3": {
+            default: false,
+            optional: true,
+        },
+        "enable-s4": {
+            default: false,
+            optional: true,
+        },
         type: {
             max_length: 40,
             optional: true,
@@ -6403,6 +6499,20 @@ serde_plain::derive_fromstr_from_deserialize!(QemuConfigLock);
 /// Object.
 #[derive(Debug, serde::Deserialize, serde::Serialize)]
 pub struct QemuConfigMachine {
+    /// Enables S3 power state. Defaults to false beginning with machine types
+    /// 9.2+pve1, true before.
+    #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")]
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    #[serde(rename = "enable-s3")]
+    pub enable_s3: Option<bool>,
+
+    /// Enables S4 power state. Defaults to false beginning with machine types
+    /// 9.2+pve1, true before.
+    #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")]
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    #[serde(rename = "enable-s4")]
+    pub enable_s4: Option<bool>,
+
     /// Specifies the QEMU machine type.
     #[serde(default, skip_serializing_if = "Option::is_none")]
     #[serde(rename = "type")]
@@ -6735,65 +6845,6 @@ pub enum QemuConfigOstype {
 serde_plain::derive_display_from_serialize!(QemuConfigOstype);
 serde_plain::derive_fromstr_from_deserialize!(QemuConfigOstype);
 
-#[api(
-    default_key: "source",
-    properties: {
-        max_bytes: {
-            default: 1024,
-            optional: true,
-            type: Integer,
-        },
-        period: {
-            default: 1000,
-            optional: true,
-            type: Integer,
-        },
-        source: {
-            type: QemuConfigRng0Source,
-        },
-    },
-)]
-/// Object.
-#[derive(Debug, serde::Deserialize, serde::Serialize)]
-pub struct QemuConfigRng0 {
-    /// Maximum bytes of entropy allowed to get injected into the guest every
-    /// 'period' milliseconds. Prefer a lower value when using '/dev/random' as
-    /// source. Use `0` to disable limiting (potentially dangerous!).
-    #[serde(deserialize_with = "proxmox_login::parse::deserialize_i64")]
-    #[serde(default, skip_serializing_if = "Option::is_none")]
-    pub max_bytes: Option<i64>,
-
-    /// Every 'period' milliseconds the entropy-injection quota is reset,
-    /// allowing the guest to retrieve another 'max_bytes' of entropy.
-    #[serde(deserialize_with = "proxmox_login::parse::deserialize_i64")]
-    #[serde(default, skip_serializing_if = "Option::is_none")]
-    pub period: Option<i64>,
-
-    pub source: QemuConfigRng0Source,
-}
-
-#[api]
-/// The file on the host to gather entropy from. In most cases '/dev/urandom'
-/// should be preferred over '/dev/random' to avoid entropy-starvation issues on
-/// the host. Using urandom does *not* decrease security in any meaningful way,
-/// as it's still seeded from real entropy, and the bytes provided will most
-/// likely be mixed with real entropy on the guest as well. '/dev/hwrng' can be
-/// used to pass through a hardware RNG from the host.
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
-pub enum QemuConfigRng0Source {
-    #[serde(rename = "/dev/urandom")]
-    /// /dev/urandom.
-    DevUrandom,
-    #[serde(rename = "/dev/random")]
-    /// /dev/random.
-    DevRandom,
-    #[serde(rename = "/dev/hwrng")]
-    /// /dev/hwrng.
-    DevHwrng,
-}
-serde_plain::derive_display_from_serialize!(QemuConfigRng0Source);
-serde_plain::derive_fromstr_from_deserialize!(QemuConfigRng0Source);
-
 const_regex! {
 
 QEMU_CONFIG_SATA_SERIAL_RE = r##"^[-%a-zA-Z0-9_.!~*'()]*$"##;
@@ -8226,6 +8277,88 @@ pub struct QemuConfigVirtio {
     pub werror: Option<PveQmIdeWerror>,
 }
 
+const_regex! {
+
+QEMU_CONFIG_VIRTIOFS_DIRID_RE = r##"^(?i:[a-z][a-z0-9_-]+)$"##;
+
+}
+
+#[api(
+    default_key: "dirid",
+    properties: {
+        cache: {
+            optional: true,
+            type: QemuConfigVirtiofsCache,
+        },
+        "direct-io": {
+            default: false,
+            optional: true,
+        },
+        dirid: {
+            format: &ApiStringFormat::Pattern(&QEMU_CONFIG_VIRTIOFS_DIRID_RE),
+            type: String,
+        },
+        "expose-acl": {
+            default: false,
+            optional: true,
+        },
+        "expose-xattr": {
+            default: false,
+            optional: true,
+        },
+    },
+)]
+/// Object.
+#[derive(Debug, serde::Deserialize, serde::Serialize)]
+pub struct QemuConfigVirtiofs {
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    pub cache: Option<QemuConfigVirtiofsCache>,
+
+    /// Honor the O_DIRECT flag passed down by guest applications.
+    #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")]
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    #[serde(rename = "direct-io")]
+    pub direct_io: Option<bool>,
+
+    /// Mapping identifier of the directory mapping to be shared with the guest.
+    /// Also used as a mount tag inside the VM.
+    pub dirid: String,
+
+    /// Enable support for POSIX ACLs (enabled ACL implies xattr) for this
+    /// mount.
+    #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")]
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    #[serde(rename = "expose-acl")]
+    pub expose_acl: Option<bool>,
+
+    /// Enable support for extended attributes for this mount.
+    #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")]
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    #[serde(rename = "expose-xattr")]
+    pub expose_xattr: Option<bool>,
+}
+
+#[api]
+/// The caching policy the file system should use (auto, always, metadata,
+/// never).
+#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+pub enum QemuConfigVirtiofsCache {
+    #[serde(rename = "auto")]
+    /// auto.
+    Auto,
+    #[serde(rename = "always")]
+    /// always.
+    Always,
+    #[serde(rename = "metadata")]
+    /// metadata.
+    Metadata,
+    #[serde(rename = "never")]
+    /// never.
+    Never,
+}
+serde_plain::derive_display_from_serialize!(QemuConfigVirtiofsCache);
+serde_plain::derive_fromstr_from_deserialize!(QemuConfigVirtiofsCache);
+
 #[api(
     properties: {
         allowed_nodes: {
@@ -8249,6 +8382,11 @@ pub struct QemuConfigVirtio {
             },
             type: Array,
         },
+        "mapped-resource-info": {
+            description: "Object of mapped resources with additional information such if they're live migratable.",
+            properties: {},
+            type: Object,
+        },
         "mapped-resources": {
             items: {
                 description: "A mapped resource",
@@ -8268,22 +8406,27 @@ pub struct QemuConfigVirtio {
 /// Object.
 #[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
 pub struct QemuMigratePreconditions {
-    /// List nodes allowed for offline migration, only passed if VM is offline
+    /// List of nodes allowed for migration.
     #[serde(default, skip_serializing_if = "Option::is_none")]
     pub allowed_nodes: Option<Vec<String>>,
 
     /// List local disks including CD-Rom, unused and not referenced disks
     pub local_disks: Vec<QemuMigratePreconditionsLocalDisks>,
 
-    /// List local resources e.g. pci, usb
+    /// List local resources (e.g. pci, usb) that block migration.
     pub local_resources: Vec<String>,
 
-    /// List of mapped resources e.g. pci, usb
+    /// Object of mapped resources with additional information such if they're
+    /// live migratable.
+    #[serde(rename = "mapped-resource-info")]
+    pub mapped_resource_info: serde_json::Value,
+
+    /// List of mapped resources e.g. pci, usb. Deprecated, use
+    /// 'mapped-resource-info' instead.
     #[serde(rename = "mapped-resources")]
     pub mapped_resources: Vec<String>,
 
-    /// List not allowed nodes with additional information, only passed if VM is
-    /// offline
+    /// List of not allowed nodes with additional information.
     #[serde(default, skip_serializing_if = "Option::is_none")]
     pub not_allowed_nodes: Option<QemuMigratePreconditionsNotAllowedNodes>,
 
@@ -8339,8 +8482,7 @@ pub struct QemuMigratePreconditionsLocalDisks {
         },
     },
 )]
-/// List not allowed nodes with additional information, only passed if VM is
-/// offline
+/// List of not allowed nodes with additional information.
 #[derive(Clone, Debug, PartialEq, serde::Deserialize, serde::Serialize)]
 pub struct QemuMigratePreconditionsNotAllowedNodes {
     /// A list of not available storages.
@@ -8415,6 +8557,10 @@ pub struct QemuMigratePreconditionsNotAllowedNodes {
             optional: true,
             type: String,
         },
+        serial: {
+            default: false,
+            optional: true,
+        },
         spice: {
             default: false,
             optional: true,
@@ -8533,6 +8679,11 @@ pub struct QemuStatus {
     #[serde(rename = "running-qemu")]
     pub running_qemu: Option<String>,
 
+    /// Guest has serial device configured.
+    #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")]
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    pub serial: Option<bool>,
+
     /// QEMU VGA configuration supports spice.
     #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")]
     #[serde(default, skip_serializing_if = "Option::is_none")]
@@ -9459,6 +9610,10 @@ serde_plain::derive_fromstr_from_deserialize!(VersionResponseConsole);
             optional: true,
             type: String,
         },
+        serial: {
+            default: false,
+            optional: true,
+        },
         status: {
             type: IsRunning,
         },
@@ -9562,6 +9717,11 @@ pub struct VmEntry {
     #[serde(rename = "running-qemu")]
     pub running_qemu: Option<String>,
 
+    /// Guest has serial device configured.
+    #[serde(deserialize_with = "proxmox_login::parse::deserialize_bool")]
+    #[serde(default, skip_serializing_if = "Option::is_none")]
+    pub serial: Option<bool>,
+
     pub status: IsRunning,
 
     /// The current configured tags, if any
-- 
2.39.5



_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [pdm-devel] [PATCH proxmox-api-types 2/2] generator: derive default for enums that provide a default
  2025-04-18  9:32 [pdm-devel] [PATCH proxmox-api-types 1/2] regenerate and adapt to rng changes Dominik Csapak
@ 2025-04-18  9:32 ` Dominik Csapak
  2025-04-22 19:49 ` [pdm-devel] applied: [PATCH proxmox-api-types 1/2] regenerate and adapt to rng changes Thomas Lamprecht
  1 sibling, 0 replies; 3+ messages in thread
From: Dominik Csapak @ 2025-04-18  9:32 UTC (permalink / raw)
  To: pdm-devel

and mark the correct variant as such.

This will be useful if we want to derive `Default` for structs than
contain enums.

while at it, regenerate the bindings.

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
---
 pve-api-types/generator-lib/Schema2Rust.pm |  2 +
 pve-api-types/src/generated/types.rs       | 45 ++++++++++++++--------
 2 files changed, 32 insertions(+), 15 deletions(-)

diff --git a/pve-api-types/generator-lib/Schema2Rust.pm b/pve-api-types/generator-lib/Schema2Rust.pm
index b974454..5235c55 100644
--- a/pve-api-types/generator-lib/Schema2Rust.pm
+++ b/pve-api-types/generator-lib/Schema2Rust.pm
@@ -278,6 +278,7 @@ sub print_types : prototype($) {
             for my $variant ($def->{variants}->@*) {
                 my ($orig, $named) = @$variant;
                 print {$out} "    #[serde(rename = \"$orig\")]\n" if $named ne $orig;
+                print {$out} "    #[default]\n" if $def->{default} && $def->{default} eq $named;
                 print {$out} "    /// $orig.\n";
                 print {$out} "    $named,\n";
             };
@@ -982,6 +983,7 @@ sub generate_enum : prototype($$;$) {
     if (defined($default)) {
         if (defined($rust_default)) {
             $def->{default} = $rust_default;
+            $def->{derive} = derive_default(qw(Clone Copy Default Eq PartialEq));
         } else {
             warn "non-existent default enum value '$default'\n" if !defined($rust_default);
         }
diff --git a/pve-api-types/src/generated/types.rs b/pve-api-types/src/generated/types.rs
index c64da8b..63be171 100644
--- a/pve-api-types/src/generated/types.rs
+++ b/pve-api-types/src/generated/types.rs
@@ -1319,9 +1319,10 @@ pub struct ListTasksResponse {
 
 #[api]
 /// List archived, active or all tasks.
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum ListTasksSource {
     #[serde(rename = "archive")]
+    #[default]
     /// archive.
     Archive,
     #[serde(rename = "active")]
@@ -1704,9 +1705,10 @@ generate_array_field! {
 
 #[api]
 /// OS architecture type.
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum LxcConfigArch {
     #[serde(rename = "amd64")]
+    #[default]
     /// amd64.
     Amd64,
     #[serde(rename = "i386")]
@@ -1733,7 +1735,7 @@ serde_plain::derive_fromstr_from_deserialize!(LxcConfigArch);
 /// one of the available tty devices. By setting cmode to 'console' it tries to
 /// attach to /dev/console instead. If you set cmode to 'shell', it simply
 /// invokes a shell inside the container (no login).
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum LxcConfigCmode {
     #[serde(rename = "shell")]
     /// shell.
@@ -1742,6 +1744,7 @@ pub enum LxcConfigCmode {
     /// console.
     Console,
     #[serde(rename = "tty")]
+    #[default]
     /// tty.
     Tty,
 }
@@ -4567,12 +4570,13 @@ serde_plain::derive_fromstr_from_deserialize!(PveQmIdeFormat);
 
 #[api]
 /// The drive's media type.
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum PveQmIdeMedia {
     #[serde(rename = "cdrom")]
     /// cdrom.
     Cdrom,
     #[serde(rename = "disk")]
+    #[default]
     /// disk.
     Disk,
 }
@@ -4862,9 +4866,10 @@ serde_plain::derive_fromstr_from_deserialize!(PveQmWatchdogAction);
 
 #[api]
 /// Watchdog type to emulate.
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum PveQmWatchdogModel {
     #[serde(rename = "i6300esb")]
+    #[default]
     /// i6300esb.
     I6300esb,
     #[serde(rename = "ib700")]
@@ -4949,7 +4954,7 @@ pub struct PveVmCpuConf {
 /// CPU model and vendor to report to the guest. Must be a QEMU/KVM supported
 /// model. Only valid for custom CPU model definitions, default models will
 /// always report themselves to the guest OS.
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum PveVmCpuConfReportedModel {
     #[serde(rename = "486")]
     /// 486.
@@ -5080,6 +5085,7 @@ pub enum PveVmCpuConfReportedModel {
     /// kvm32.
     Kvm32,
     #[serde(rename = "kvm64")]
+    #[default]
     /// kvm64.
     Kvm64,
     #[serde(rename = "max")]
@@ -6129,9 +6135,10 @@ pub struct QemuConfigAgent {
 
 #[api]
 /// Select the agent type
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum QemuConfigAgentType {
     #[serde(rename = "virtio")]
+    #[default]
     /// virtio.
     Virtio,
     #[serde(rename = "isa")]
@@ -6194,9 +6201,10 @@ serde_plain::derive_fromstr_from_deserialize!(QemuConfigAudio0Device);
 
 #[api]
 /// Driver backend for the audio device.
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum QemuConfigAudio0Driver {
     #[serde(rename = "spice")]
+    #[default]
     /// spice.
     Spice,
     #[serde(rename = "none")]
@@ -6208,9 +6216,10 @@ serde_plain::derive_fromstr_from_deserialize!(QemuConfigAudio0Driver);
 
 #[api]
 /// Select BIOS implementation.
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum QemuConfigBios {
     #[serde(rename = "seabios")]
+    #[default]
     /// seabios.
     Seabios,
     #[serde(rename = "ovmf")]
@@ -6301,9 +6310,10 @@ pub struct QemuConfigEfidisk0 {
 /// Size and type of the OVMF EFI vars. '4m' is newer and recommended, and
 /// required for Secure Boot. For backwards compatibility, '2m' is used if not
 /// otherwise specified. Ignored for VMs with arch=aarch64 (ARM).
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum QemuConfigEfidisk0Efitype {
     #[serde(rename = "2m")]
+    #[default]
     /// 2m.
     Mb2,
     #[serde(rename = "4m")]
@@ -7625,9 +7635,10 @@ pub struct QemuConfigScsi {
 
 #[api]
 /// SCSI controller model
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum QemuConfigScsihw {
     #[serde(rename = "lsi")]
+    #[default]
     /// lsi.
     Lsi,
     #[serde(rename = "lsi53c810")]
@@ -7676,9 +7687,10 @@ pub struct QemuConfigSpiceEnhancements {
 
 #[api]
 /// Enable video streaming. Uses compression for detected video streams.
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum QemuConfigSpiceEnhancementsVideostreaming {
     #[serde(rename = "off")]
+    #[default]
     /// off.
     Off,
     #[serde(rename = "all")]
@@ -7732,9 +7744,10 @@ pub struct QemuConfigTpmstate0 {
 #[api]
 /// The TPM interface version. v2.0 is newer and should be preferred. Note that
 /// this cannot be changed later on.
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum QemuConfigTpmstate0Version {
     #[serde(rename = "v1.2")]
+    #[default]
     /// v1.2.
     V1_2,
     #[serde(rename = "v2.0")]
@@ -7869,7 +7882,7 @@ serde_plain::derive_fromstr_from_deserialize!(QemuConfigVgaClipboard);
 
 #[api]
 /// Select the VGA type. Using type 'cirrus' is not recommended.
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum QemuConfigVgaType {
     #[serde(rename = "cirrus")]
     /// cirrus.
@@ -7902,6 +7915,7 @@ pub enum QemuConfigVgaType {
     /// serial3.
     Serial3,
     #[serde(rename = "std")]
+    #[default]
     /// std.
     Std,
     #[serde(rename = "virtio")]
@@ -8341,9 +8355,10 @@ pub struct QemuConfigVirtiofs {
 #[api]
 /// The caching policy the file system should use (auto, always, metadata,
 /// never).
-#[derive(Clone, Copy, Debug, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
+#[derive(Clone, Copy, Debug, Default, Eq, PartialEq, serde::Deserialize, serde::Serialize)]
 pub enum QemuConfigVirtiofsCache {
     #[serde(rename = "auto")]
+    #[default]
     /// auto.
     Auto,
     #[serde(rename = "always")]
-- 
2.39.5



_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [pdm-devel] applied: [PATCH proxmox-api-types 1/2] regenerate and adapt to rng changes
  2025-04-18  9:32 [pdm-devel] [PATCH proxmox-api-types 1/2] regenerate and adapt to rng changes Dominik Csapak
  2025-04-18  9:32 ` [pdm-devel] [PATCH proxmox-api-types 2/2] generator: derive default for enums that provide a default Dominik Csapak
@ 2025-04-22 19:49 ` Thomas Lamprecht
  1 sibling, 0 replies; 3+ messages in thread
From: Thomas Lamprecht @ 2025-04-22 19:49 UTC (permalink / raw)
  To: pve-devel, pdm-devel, Dominik Csapak

On Fri, 18 Apr 2025 11:32:53 +0200, Dominik Csapak wrote:
> the recent changes for rng in qemu-server:
> 18fc321e (refactor: move rng related code into its own module)
> 
> converted the rng0 format to a proper registered format, which changes
> its name, so we have to adapt the renaming of the enum variants.
> 
> 
> [...]

Applied, thanks!

[1/2] regenerate and adapt to rng changes
      commit: f5f4aeff22023f850832a2618869c1524036ea9b
[2/2] generator: derive default for enums that provide a default
      commit: 15cfa2e65fa10da406c4f845524548b670fa03d4


_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2025-04-22 19:50 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-04-18  9:32 [pdm-devel] [PATCH proxmox-api-types 1/2] regenerate and adapt to rng changes Dominik Csapak
2025-04-18  9:32 ` [pdm-devel] [PATCH proxmox-api-types 2/2] generator: derive default for enums that provide a default Dominik Csapak
2025-04-22 19:49 ` [pdm-devel] applied: [PATCH proxmox-api-types 1/2] regenerate and adapt to rng changes Thomas Lamprecht

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal