[pdm-devel] [PATCH datacenter-manager 14/21] ui: pve wizard: info: detect hostname and fingerprint

Dominik Csapak d.csapak at proxmox.com
Fri May 16 15:36:04 CEST 2025


Instead of always inserting the initial host into the nodelist
(which will always be duplicate since it will be also contained in
the node list), try to match the hostname and or fingerprint with
any of the given node, so we can deduplicate that.

Signed-off-by: Dominik Csapak <d.csapak at proxmox.com>
---
 ui/src/remotes/wizard_page_info.rs | 35 ++++++++++++++++++++++++------
 1 file changed, 28 insertions(+), 7 deletions(-)

diff --git a/ui/src/remotes/wizard_page_info.rs b/ui/src/remotes/wizard_page_info.rs
index 882eebd..04b0004 100644
--- a/ui/src/remotes/wizard_page_info.rs
+++ b/ui/src/remotes/wizard_page_info.rs
@@ -108,13 +108,34 @@ async fn scan(connection_params: ConnectParams, form_ctx: FormContext) -> Result
         ScanResult::TlsResult(_) => bail!("Untrusted certificate or invalid fingerprint"),
         ScanResult::Remote(remote) => remote,
     };
-    result.nodes.insert(
-        0,
-        PropertyString::new(NodeUrl {
-            hostname,
-            fingerprint,
-        }),
-    );
+
+    // try to detect inserted hostname/fingerprint
+    let mut found = false;
+    for node in result.nodes.iter_mut() {
+        if node.hostname == hostname {
+            if fingerprint.is_none() {
+                node.fingerprint = None;
+            }
+            found = true;
+            continue;
+        }
+        if node.fingerprint.as_ref().map(|fp| fp.to_uppercase())
+            == fingerprint.as_ref().map(|fp| fp.to_uppercase())
+        {
+            found = true;
+            node.hostname = hostname.clone();
+            continue;
+        }
+    }
+    if !found {
+        result.nodes.insert(
+            0,
+            PropertyString::new(NodeUrl {
+                hostname,
+                fingerprint: fingerprint.map(|fp| fp.to_uppercase()),
+            }),
+        );
+    }
     result.nodes.sort_by(|a, b| a.hostname.cmp(&b.hostname));
     Ok(result)
 }
-- 
2.39.5





More information about the pdm-devel mailing list