[pdm-devel] [PATCH proxmox-api-types 1/2] fix PVE8 node status API call

Dominik Csapak d.csapak at proxmox.com
Fri Aug 29 12:06:51 CEST 2025


PVE9 added a new non-optional field that does not exist in 8, so for now
overwrite that specific struct with a custom one where 'available' is
optional. This makes the deserialization work again for PVE8 too

In the future we need to think about how to handle different APIs
between version in a better way.

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 pve-api-types/generate.pl | 29 +++++++++++++++++++++++++++++
 1 file changed, 29 insertions(+)

diff --git a/pve-api-types/generate.pl b/pve-api-types/generate.pl
index b761a88..966c4d0 100644
--- a/pve-api-types/generate.pl
+++ b/pve-api-types/generate.pl
@@ -264,6 +264,35 @@ Schema2Rust::derive('NetworkInterface' => 'Clone', 'PartialEq');
 api(GET => '/nodes/{node}/storage', 'list_storages', 'return-name' => 'StorageInfo');
 Schema2Rust::derive('StorageInfo' => 'Clone', 'PartialEq');
 
+# FIXME: PVE9 introduced a new non optional property, but that does not
+# exist in PVE8, so make it optional here for older PVEs to work
+Schema2Rust::generate_struct(
+    'NodeStatusMemory',
+    {
+        type => 'object',
+        properties => {
+            'available' => {
+                type => 'integer',
+                description => 'The available memory in bytes.',
+                optional => 1,
+            },
+            'free' => {
+                type => 'integer',
+                description => 'The free memory in bytes.',
+            },
+            'total' => {
+                type => 'integer',
+                description => 'The total memory in bytes.',
+            },
+            'used' => {
+                type => 'integer',
+                description => 'The used memory in bytes.',
+            },
+        },
+    },
+    {},
+    {},
+);
 api(GET => '/nodes/{node}/status', 'node_status', 'return-name' => 'NodeStatus');
 
 Schema2Rust::register_api_override('ClusterMetrics', '/properties/data/items', { type => "ClusterMetricsData"});
-- 
2.47.2





More information about the pdm-devel mailing list