From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [IPv6:2a0f:8001:1:32::40]) by lore.proxmox.com (Postfix) with ESMTPS id C74761FF0EA for ; Fri, 14 Aug 2026 15:46:11 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 412A522614; Fri, 14 Aug 2026 15:45:58 +0200 (CEST) From: Dominik Csapak To: pdm-devel@lists.proxmox.com Subject: [PATCH datacenter-manager 4/8] ui: pve: factor out the pve-manager version extraction Date: Fri, 14 Aug 2026 15:44:00 +0200 Message-ID: <20260814134548.3446943-5-d.csapak@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260814134548.3446943-1-d.csapak@proxmox.com> References: <20260814134548.3446943-1-d.csapak@proxmox.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL 0.345 Adjusted score from AWL reputation of From: address DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment (newer systems) RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust RDNS_NONE 1.274 Delivered to internal network by a host with no rDNS SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record Message-ID-Hash: MNM4XIWRI35LUO4NZTL44WDWZQBDUKFB X-Message-ID-Hash: MNM4XIWRI35LUO4NZTL44WDWZQBDUKFB X-MailFrom: d.csapak@proxmox.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: This was done three times in the same way. Simply refactor it into it's own method. Signed-off-by: Dominik Csapak --- ui/src/pve/mod.rs | 32 +++++++++++++------------------- 1 file changed, 13 insertions(+), 19 deletions(-) diff --git a/ui/src/pve/mod.rs b/ui/src/pve/mod.rs index f069ec75..1c32d26f 100644 --- a/ui/src/pve/mod.rs +++ b/ui/src/pve/mod.rs @@ -25,6 +25,7 @@ use pdm_api_types::{ remote_updates::RemoteUpdateSummary, resource::{PveResource, ResourceType}, }; +use proxmox_deb_version::Version; use crate::remotes::RemoteCertCheck; use crate::{LoadResult, extract_package_version, get_deep_url, get_remote}; @@ -158,6 +159,13 @@ pub struct PveRemoteComp { updates: LoadResult, } +impl PveRemoteComp { + fn get_pve_manager_version(&self, node: &str) -> Option { + let updates = self.updates.data.as_ref()?; + extract_package_version(updates, node, "pve-manager") + } +} + pwt::impl_deref_mut_property!(PveRemoteComp, state, LoadableComponentState); impl LoadableComponent for PveRemoteComp { @@ -206,31 +214,17 @@ impl LoadableComponent for PveRemoteComp { let content: Html = match &self.view { PveTreeNode::Root => remote::PveRemotePanel::new(remote.clone()).into(), - PveTreeNode::Node(node) => { - let pve_manager = match &self.updates.data { - Some(updates) => extract_package_version(updates, &node.node, "pve-manager"), - None => None, - }; - node::PveNodePanel::new(remote.clone(), node.node.clone()) - .pve_manager_version(pve_manager) - .into() - } + PveTreeNode::Node(node) => node::PveNodePanel::new(remote.clone(), node.node.clone()) + .pve_manager_version(self.get_pve_manager_version(&node.node)) + .into(), PveTreeNode::Qemu(qemu) => { - let pve_manager = match &self.updates.data { - Some(updates) => extract_package_version(updates, &qemu.node, "pve-manager"), - None => None, - }; qemu::QemuPanel::new(remote.clone(), qemu.node.clone(), qemu.clone()) - .pve_manager_version(pve_manager) + .pve_manager_version(self.get_pve_manager_version(&qemu.node)) .into() } PveTreeNode::Lxc(lxc) => { - let pve_manager = match &self.updates.data { - Some(updates) => extract_package_version(updates, &lxc.node, "pve-manager"), - None => None, - }; lxc::LxcPanel::new(remote.clone(), lxc.node.clone(), lxc.clone()) - .pve_manager_version(pve_manager) + .pve_manager_version(self.get_pve_manager_version(&lxc.node)) .into() } PveTreeNode::Storage(storage) => { -- 2.47.3