[pdm-devel] [PATCH datacenter-manager 2/6] pdm-client: add method to probe TLS connection for PBS remotes

Christian Ebner c.ebner at proxmox.com
Mon Sep 22 13:09:54 CEST 2025


Adds the PDM client method to perform API calls to the servers
TLS probe endpoint for PBS, analogous to the PVE implementation.

Since this is mostly the same for both remote types, common code is
factored into a generic private helper method.

Signed-off-by: Christian Ebner <c.ebner at proxmox.com>
---
 lib/pdm-client/src/lib.rs | 41 ++++++++++++++++++++++++++-------------
 1 file changed, 28 insertions(+), 13 deletions(-)

diff --git a/lib/pdm-client/src/lib.rs b/lib/pdm-client/src/lib.rs
index f2ff4d4..e8a4ee5 100644
--- a/lib/pdm-client/src/lib.rs
+++ b/lib/pdm-client/src/lib.rs
@@ -3,7 +3,7 @@
 use std::collections::HashMap;
 use std::time::Duration;
 
-use pdm_api_types::remotes::TlsProbeOutcome;
+use pdm_api_types::remotes::{RemoteType, TlsProbeOutcome};
 use pdm_api_types::resource::{PveResource, RemoteResources, ResourceType, TopEntities};
 use pdm_api_types::rrddata::{
     LxcDataPoint, NodeDataPoint, PbsDatastoreDataPoint, PbsNodeDataPoint, PveStorageDataPoint,
@@ -976,18 +976,7 @@ impl<T: HttpApiClient> PdmClient<T> {
         hostname: &str,
         fingerprint: Option<&str>,
     ) -> Result<TlsProbeOutcome, Error> {
-        let mut params = json!({
-            "hostname": hostname,
-        });
-        if let Some(fp) = fingerprint {
-            params["fingerprint"] = fp.into();
-        }
-        Ok(self
-            .0
-            .post("/api2/extjs/pve/probe-tls", &params)
-            .await?
-            .expect_json()?
-            .data)
+        self.probe_tls(hostname, fingerprint, RemoteType::Pve).await
     }
 
     /// Uses /pve/scan to scan the remote cluster for node/fingerprint information
@@ -1068,6 +1057,32 @@ impl<T: HttpApiClient> PdmClient<T> {
 
         Ok(self.0.post(path, &params).await?.expect_json()?.data)
     }
+
+    /// uses /pbs/probe-tls to probe the tls connection to the given host
+    pub async fn pbs_probe_tls(
+        &self,
+        hostname: &str,
+        fingerprint: Option<&str>,
+    ) -> Result<TlsProbeOutcome, Error> {
+        self.probe_tls(hostname, fingerprint, RemoteType::Pbs).await
+    }
+
+    /// uses /{remote-type}/probe-tls to probe the tls connection to the given host
+    async fn probe_tls(
+        &self,
+        hostname: &str,
+        fingerprint: Option<&str>,
+        remote_type: RemoteType,
+    ) -> Result<TlsProbeOutcome, Error> {
+        let path = format!("/api2/extjs/{remote_type}/probe-tls");
+        let mut params = json!({
+            "hostname": hostname,
+        });
+        if let Some(fp) = fingerprint {
+            params["fingerprint"] = fp.into();
+        }
+        Ok(self.0.post(&path, &params).await?.expect_json()?.data)
+    }
 }
 
 /// Builder for migration parameters.
-- 
2.47.3





More information about the pdm-devel mailing list