From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) by lore.proxmox.com (Postfix) with ESMTPS id 00D8D1FF187 for ; Tue, 2 Dec 2025 15:32:35 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 56C2114912; Tue, 2 Dec 2025 15:33:00 +0100 (CET) From: Dominik Csapak To: pdm-devel@lists.proxmox.com Date: Tue, 2 Dec 2025 15:31:05 +0100 Message-ID: <20251202143226.3681712-5-d.csapak@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251202143226.3681712-1-d.csapak@proxmox.com> References: <20251202143226.3681712-1-d.csapak@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.029 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_PASS -0.001 SPF: sender matches SPF record URIBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to URIBL was blocked. See http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block for more information. [subscription.rs, stats.community] Subject: [pdm-devel] [PATCH datacenter-manager 2/5] lib/server: include subscription statistics in subscription information X-BeenThere: pdm-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox Datacenter Manager development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox Datacenter Manager development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pdm-devel-bounces@lists.proxmox.com Sender: "pdm-devel" so we can show that information on the subscription panel. This is useful for users to see why the subscription is marked as invalid. Signed-off-by: Dominik Csapak --- lib/pdm-api-types/src/subscription.rs | 20 +++++++++++++++++++- server/src/api/nodes/subscription.rs | 24 +++++++++++++----------- 2 files changed, 32 insertions(+), 12 deletions(-) diff --git a/lib/pdm-api-types/src/subscription.rs b/lib/pdm-api-types/src/subscription.rs index d38611e3..ca23b8e5 100644 --- a/lib/pdm-api-types/src/subscription.rs +++ b/lib/pdm-api-types/src/subscription.rs @@ -4,7 +4,7 @@ use anyhow::Error; use serde::{Deserialize, Serialize}; use proxmox_schema::api; -use proxmox_subscription::SubscriptionStatus; +use proxmox_subscription::{SubscriptionInfo, SubscriptionStatus}; #[api] // order is important here, since we use that for determining if a node has a valid subscription @@ -156,3 +156,21 @@ pub struct SubscriptionStatistics { /// Total number of community level subscriptions across all remotes pub community: usize, } + +#[api( + properties: { + info: { + type: SubscriptionInfo, + } + } +)] +#[derive(Default, Serialize, Deserialize, Clone, PartialEq)] +#[serde(rename_all = "kebab-case")] +/// The PDM subscription info +pub struct PdmSubscriptionInfo { + #[serde(flatten)] + pub info: SubscriptionInfo, + + /// PDM subscription statistics + pub statistics: SubscriptionStatistics, +} diff --git a/server/src/api/nodes/subscription.rs b/server/src/api/nodes/subscription.rs index d9b44d59..d41a1794 100644 --- a/server/src/api/nodes/subscription.rs +++ b/server/src/api/nodes/subscription.rs @@ -11,7 +11,7 @@ use proxmox_sys::fs::CreateOptions; use pdm_api_types::remotes::RemoteType; use pdm_api_types::subscription::{ - NodeSubscriptionInfo, SubscriptionLevel, SubscriptionStatistics, + NodeSubscriptionInfo, PdmSubscriptionInfo, SubscriptionLevel, SubscriptionStatistics, }; use pdm_api_types::PRIV_SYS_MODIFY; @@ -78,7 +78,7 @@ fn count_subscriptions( stats } -fn check_counts(stats: SubscriptionStatistics) -> Result<(), Error> { +fn check_counts(stats: &SubscriptionStatistics) -> Result<(), Error> { let subscribed_ratio = stats.active_subscriptions as f64 / stats.total_nodes as f64; let community_ratio = stats.community as f64 / stats.active_subscriptions as f64; @@ -107,26 +107,28 @@ fn check_counts(stats: SubscriptionStatistics) -> Result<(), Error> { } )] /// Return subscription status -pub async fn get_subscription() -> Result { +pub async fn get_subscription() -> Result { let infos = get_all_subscription_infos().await?; - let stats = count_subscriptions(&infos); + let statistics = count_subscriptions(&infos); - if let Err(err) = check_counts(stats) { - Ok(SubscriptionInfo { + let info = if let Err(err) = check_counts(&statistics) { + SubscriptionInfo { status: SubscriptionStatus::Invalid, message: Some(format!("{err}")), serverid: None, url: Some(PRODUCT_URL.into()), ..Default::default() - }) + } } else { - Ok(SubscriptionInfo { + SubscriptionInfo { status: SubscriptionStatus::Active, url: Some(PRODUCT_URL.into()), ..Default::default() - }) - } + } + }; + + Ok(PdmSubscriptionInfo { info, statistics }) } #[api( @@ -147,7 +149,7 @@ pub async fn check_subscription() -> Result<(), Error> { let infos = get_all_subscription_infos().await?; let stats = count_subscriptions(&infos); - if let Err(err) = check_counts(stats) { + if let Err(err) = check_counts(&stats) { update_apt_auth(APT_AUTH_FN, apt_auth_file_opts(), APT_AUTH_URL, None, None)?; return Err(err); } -- 2.47.3 _______________________________________________ pdm-devel mailing list pdm-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel