[pdm-devel] [PATCH datacenter-manager 5/7] pdm-client: add pve storage status/rrddata methods

Dominik Csapak d.csapak at proxmox.com
Mon Sep 8 16:04:16 CEST 2025


Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 lib/pdm-client/src/lib.rs | 30 +++++++++++++++++++++++++++++-
 1 file changed, 29 insertions(+), 1 deletion(-)

diff --git a/lib/pdm-client/src/lib.rs b/lib/pdm-client/src/lib.rs
index da1ad43..845738f 100644
--- a/lib/pdm-client/src/lib.rs
+++ b/lib/pdm-client/src/lib.rs
@@ -6,7 +6,8 @@ use std::time::Duration;
 use pdm_api_types::remotes::TlsProbeOutcome;
 use pdm_api_types::resource::{PveResource, RemoteResources, TopEntities};
 use pdm_api_types::rrddata::{
-    LxcDataPoint, NodeDataPoint, PbsDatastoreDataPoint, PbsNodeDataPoint, QemuDataPoint,
+    LxcDataPoint, NodeDataPoint, PbsDatastoreDataPoint, PbsNodeDataPoint, PveStorageDataPoint,
+    QemuDataPoint,
 };
 use pdm_api_types::sdn::{ListVnet, ListZone};
 use pdm_api_types::BasicRealmInfo;
@@ -63,6 +64,8 @@ pub mod types {
         CreateVnetParams, CreateZoneParams, ListController, ListVnet, ListZone, SDN_ID_SCHEMA,
     };
     pub use pve_api_types::{ListControllersType, ListZonesType, SdnObjectState};
+
+    pub use pve_api_types::StorageStatus as PveStorageStatus;
 }
 
 pub struct PdmClient<T: HttpApiClient>(pub T);
@@ -903,6 +906,31 @@ impl<T: HttpApiClient> PdmClient<T> {
         Ok(self.0.get(&path).await?.expect_json()?.data)
     }
 
+    pub async fn pve_storage_status(
+        &self,
+        remote: &str,
+        node: &str,
+        storage: &str,
+    ) -> Result<PveStorageStatus, Error> {
+        let path =
+            format!("/api2/extjs/pve/remotes/{remote}/nodes/{node}/storage/{storage}/status");
+        Ok(self.0.get(&path).await?.expect_json()?.data)
+    }
+
+    pub async fn pve_storage_rrddata(
+        &self,
+        remote: &str,
+        node: &str,
+        storage: &str,
+        mode: RrdMode,
+        timeframe: RrdTimeframe,
+    ) -> Result<Vec<PveStorageDataPoint>, Error> {
+        let path = format!(
+            "/api2/extjs/pve/remotes/{remote}/nodes/{node}/storage/{storage}/rrddata?cf={mode}&timeframe={timeframe}"
+        );
+        Ok(self.0.get(&path).await?.expect_json()?.data)
+    }
+
     pub async fn get_top_entities(&self) -> Result<TopEntities, Error> {
         let path = "/api2/extjs/resources/top-entities";
         Ok(self.0.get(path).await?.expect_json()?.data)
-- 
2.47.2





More information about the pdm-devel mailing list