From: Christian Ebner <c.ebner@proxmox.com>
To: pdm-devel@lists.proxmox.com
Subject: [pdm-devel] [PATCH datacenter-manager 2/6] pdm-client: add method to probe TLS connection for PBS remotes
Date: Mon, 22 Sep 2025 13:09:54 +0200 [thread overview]
Message-ID: <20250922110958.369653-3-c.ebner@proxmox.com> (raw)
In-Reply-To: <20250922110958.369653-1-c.ebner@proxmox.com>
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@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", ¶ms)
- .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, ¶ms).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, ¶ms).await?.expect_json()?.data)
+ }
}
/// Builder for migration parameters.
--
2.47.3
_______________________________________________
pdm-devel mailing list
pdm-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel
next prev parent reply other threads:[~2025-09-22 11:10 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-22 11:09 [pdm-devel] [PATCH datacenter-manager 0/6] ui/api: implement and expose adding PBS remotes via the ui wizard Christian Ebner
2025-09-22 11:09 ` [pdm-devel] [PATCH datacenter-manager 1/6] server: api: add TLS probe endpoint for PBS Christian Ebner
2025-09-22 11:09 ` Christian Ebner [this message]
2025-09-22 11:09 ` [pdm-devel] [PATCH datacenter-manager 3/6] server: api: implement endpoint to scan remote PBS instances Christian Ebner
2025-09-22 11:09 ` [pdm-devel] [PATCH datacenter-manager 4/6] pdm client: add method " Christian Ebner
2025-09-22 11:09 ` [pdm-devel] [PATCH datacenter-manager 5/6] ui: remote: check connection for PBS remotes in remote add wizard Christian Ebner
2025-09-22 11:09 ` [pdm-devel] [PATCH datacenter-manager 6/6] ui: reorganize remote add button as dropdown menu to allow adding PBS Christian Ebner
2025-09-22 12:50 ` [pdm-devel] [PATCH datacenter-manager 0/6] ui/api: implement and expose adding PBS remotes via the ui wizard Lukas Wagner
2025-09-22 12:56 ` Christian Ebner
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250922110958.369653-3-c.ebner@proxmox.com \
--to=c.ebner@proxmox.com \
--cc=pdm-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.