[pdm-devel] [PATCH proxmox v2 2/4] pve-api-types: generate fallback variant for enums

Stefan Hanreich s.hanreich at proxmox.com
Thu Nov 13 16:09:26 CET 2025


Generate a new variant, UnknownEnumValue, which is used as a fallback
in case the enum variant is unknown in PDM. This ensures
forwards-compatibility with newer Proxmox VE versions, in case they
introduce a new variant to an enum string type. Otherwise,
deserializing return values from the Proxmox VE API fails and can
cause severe issues in the PDM backend / frontend.

Signed-off-by: Stefan Hanreich <s.hanreich at proxmox.com>
---
 pve-api-types/generator-lib/Schema2Rust.pm | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/pve-api-types/generator-lib/Schema2Rust.pm b/pve-api-types/generator-lib/Schema2Rust.pm
index f54b3683..ab1c1700 100644
--- a/pve-api-types/generator-lib/Schema2Rust.pm
+++ b/pve-api-types/generator-lib/Schema2Rust.pm
@@ -295,6 +295,9 @@ sub print_types : prototype($) {
                 print {$out} "    /// $orig.\n";
                 print {$out} "    $named,\n";
             };
+            print {$out} "    /// Unknown variants for forward compatibility.\n";
+            print {$out} "    #[serde(untagged)]\n";
+            print {$out} "    UnknownEnumValue(FixedString)\n";
             print {$out} "}\n";
             print {$out} "serde_plain::derive_display_from_serialize!($def->{name});\n";
             print {$out} "serde_plain::derive_fromstr_from_deserialize!($def->{name});\n";
-- 
2.47.3




More information about the pdm-devel mailing list