[pdm-devel] [PATCH proxmox 2/2] pve api types: add cluster options api call
Dominik Csapak
d.csapak at proxmox.com
Fri Nov 28 11:18:20 CET 2025
so we can get e.g. the datacenter notes.
The return schema for this is currently not defined and adding it in
pve-manager is rather hard.
The reason for this is that while we have defined the datacenter config
schema for the update call, the properties are all property-strings. In
the GET call however, we parse these and return a nested object.
We'd either have to copy the whole schema and make sure it does not
diverge, or find some more elegant way to modify the return schema to
include the parsed properties (for some properties this even happens
nested, e.g. a list in a property string gets split into an actual
array).
Since this is not feasible at the moment, the easiest way is to simply
use a Value for now.
Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
pve-api-types/generate.pl | 3 +++
pve-api-types/src/generated/code.rs | 14 +++++++++++++-
2 files changed, 16 insertions(+), 1 deletion(-)
diff --git a/pve-api-types/generate.pl b/pve-api-types/generate.pl
index 2caf1cff..8d509856 100755
--- a/pve-api-types/generate.pl
+++ b/pve-api-types/generate.pl
@@ -395,6 +395,9 @@ Schema2Rust::register_format('pve-fw-conntrack-helper' => {
});
# options
+# FIXME: to use a better return value than `Value`, we first must fix the return schema there
+api(GET => '/cluster/options', 'cluster_options', 'output-type' => 'serde_json::Value');
+
api(GET => '/cluster/firewall/options', 'cluster_firewall_options', 'return-name' => 'ClusterFirewallOptions');
api(PUT => '/cluster/firewall/options', 'set_cluster_firewall_options', 'param-name' => 'UpdateClusterFirewallOptions');
diff --git a/pve-api-types/src/generated/code.rs b/pve-api-types/src/generated/code.rs
index 0dd6d8e1..ae86c93c 100644
--- a/pve-api-types/src/generated/code.rs
+++ b/pve-api-types/src/generated/code.rs
@@ -114,7 +114,6 @@
/// - /cluster/notifications/targets
/// - /cluster/notifications/targets/{name}
/// - /cluster/notifications/targets/{name}/test
-/// - /cluster/options
/// - /cluster/replication
/// - /cluster/replication/{id}
/// - /cluster/sdn/controllers/{controller}
@@ -403,6 +402,12 @@ pub trait PveClient {
Err(Error::Other("cluster_metrics_export not implemented"))
}
+ /// Get datacenter options. Without 'Sys.Audit' on '/' not all options are
+ /// returned.
+ async fn cluster_options(&self) -> Result<serde_json::Value, Error> {
+ Err(Error::Other("cluster_options not implemented"))
+ }
+
/// Resources index (cluster wide).
async fn cluster_resources(
&self,
@@ -1009,6 +1014,13 @@ where
Ok(self.0.get(url).await?.expect_json()?.data)
}
+ /// Get datacenter options. Without 'Sys.Audit' on '/' not all options are
+ /// returned.
+ async fn cluster_options(&self) -> Result<serde_json::Value, Error> {
+ let url = "/api2/extjs/cluster/options";
+ Ok(self.0.get(url).await?.expect_json()?.data)
+ }
+
/// Resources index (cluster wide).
async fn cluster_resources(
&self,
--
2.47.3
More information about the pdm-devel
mailing list