From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 95A631FF15C for ; Fri, 31 Oct 2025 16:19:33 +0100 (CET) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 5362014944; Fri, 31 Oct 2025 16:20:08 +0100 (CET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=lArSXT4yQsqYfuLpx7MApasiVLZeTVtDuaHzQ3OdbAFIKGbXSheUv2citmceXm1bFji8LXT7hDF85UV+lgK6IOi/NqS/8epHD0vftA9guHGlXAmHaeoNeVr9Eue2ioe90qQQFFxCLJQh68wk/d08ZTv96VlymhSOAqSWnagAor537UyOJf0wSbvQtkHLh77oxPIRMjBLN99qGvRc84AFL9LWNUSVF0VQwyFNI7CcU1b6/m8WPBP6VB11xZ/hYsf3OmXKRNyvre1jlG6AE4LHStWu7Ev8mpQMlmHeMLbzXX1h2BquNQeUu+C5YfmqoLToHt6+cYjeAIhtsgYLpjLTgw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=2fybig+2Z5093uMxt9TfEzQqqxAUw4ds3qF5ojCN0oQ=; b=NxciDmCbrSWXVul6DYNY3IvNjn0GZ/BYr8dVj844iWRu6sjZCMIb2UQ1hmmBn6hUX23rnVMiXqNUoijbMfYpq6+r/AR3kqUiMzBXTtuVSVxjibMrCL0+KcYLaSUyQq60J0k3xFFds+CDkIpduDONm+mcQoz2gzPZ0xj9mL9rD5SciKLDM/vKB7cvUv8numNHvsHcCGnA88QI0ngobha6Wp/c5Dgh/zFTZmAdinCPPkPskkdo1iL4PxjrZ6hAq8omOvB3L275iE3E9+Pbw8tdVDIiVz8F/5/G7toK8DMF2wyOBKT32uFjqQqSv8Ao9y2DqVRUoN1nqvl4gGnQrYEGoA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=mjenzi.com; dmarc=pass action=none header.from=mjenzi.com; dkim=pass header.d=mjenzi.com; arc=none From: David Kinyua To: "pdm-devel@lists.proxmox.com" Thread-Topic: help Thread-Index: AQHcSnnMYDBJAEUqDkGWy7onYdbBEg== Date: Fri, 31 Oct 2025 15:19:50 +0000 Message-ID: References: In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=mjenzi.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: ME3P282MB3307:EE_|SY0P282MB5302:EE_ x-ms-office365-filtering-correlation-id: d137fdca-b142-49ba-f4ef-08de1890ef3f x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|366016|1800799024|376014|4022899009|7053199007|13003099007|38070700021; x-microsoft-antispam-message-info: =?us-ascii?Q?dphcMHHIKDfROLU18AdrEmy7UwAKlp/z3FFELpuQzSKi1/NuzS07YtJVxpyo?= =?us-ascii?Q?9DXMkPW+Ds/7xzq8TLGurwkIhcyo4nXjWOBpB1E++uTlMK7xYQXIOT/XrWml?= =?us-ascii?Q?9nI56np8ZJyHpe3xTRkSszAKBMxeiHma5TJh/tmdZIb+J/n59rlSuFvU7W2Z?= =?us-ascii?Q?uyJcrN8knhe6O+5vKHGaqYP1ovjeCSBwwLMZSfGpoeVemBvIx9y1fsYmwYU3?= =?us-ascii?Q?oyNJZJSVQ7DfL3G0wLv7m4mAuqeNVOsHde62NXD52CrLc1xUlKfxL0cEBsU2?= =?us-ascii?Q?p/CtpkaY05dCPPvcsfk4BgBLb6hXUNAXKP7n9DAJpeevBLkh+bxQbnVB+DRq?= =?us-ascii?Q?UKn/xnDshrYXOrUJ1+rZwyFB4DVTL+AEI6tr2LebkvELAVCXIBmxRXG2diga?= =?us-ascii?Q?LumQcySBrOdh2tRAE1472zgZnnSry0fdr7WfUUWIQWdsqXC5uTU2HSwvNoHk?= =?us-ascii?Q?fgxTuuzYzLxmivrnnogD7FQKTf+zYbqLlCfzFeTrFP/1SI/+Cwkkial23Pjd?= =?us-ascii?Q?sdvQGFyYv+UpSoAH0eRAe1yvs4+GM/PEYU/tf225ap869IzCNv60CMCMfUSz?= =?us-ascii?Q?YhxIlzpPA/h3hxuGXPvhthT5JS0KMQ2FEh1liZWJsRxkKoeC0g1+FyKJ7FNY?= =?us-ascii?Q?b5v9rs80SFu5nZWU33qY2Agg1oEpfECqvWUsyRXs3ve+dl78bS7jaChN4icl?= =?us-ascii?Q?flyR/37k6Mxx4rtMUGvTU8zVhNNbLx11qJZNQPaGQpYjM1NvZZmu6rCvhoBm?= =?us-ascii?Q?2SCYl0s2+qGGN7VF1BIRPHgkV1iOt+yUJoWKjPG4ADrcH6Pws6iRkl7QkG6f?= =?us-ascii?Q?zzRm6tvM9nN4v+YC7AYz/yHI9ULhsXX5th3poiNa50yyhvMQQuGXZFkpw8GC?= =?us-ascii?Q?fIg0kw0kpNDVpXZExLMKSYSTNK4oz2zU17FlFWTxB6t0pGoPz+xsOZvu1PGC?= =?us-ascii?Q?rWzjQrGxQL4B599QtVEISJsxoCYP95ixwWtuvJWUP9Jf7piJePM+U+EHGVuW?= =?us-ascii?Q?zFk+J96QYT9LYQR8z17jYsduJOM3oW4mD4xlrSoAzwwVeOSnKksZnmBYrjL4?= =?us-ascii?Q?lVmi0jiBhYDohWSl0+DulC9K469WKg424X2346xBQxRhLQCtdNglVH+pmCil?= =?us-ascii?Q?aXEYFkn2Xq17P3MC66HxqLB+ECIo3bxU9nycfGxMasegXdMjIPx3BXHQh/aI?= =?us-ascii?Q?iFScJ3wyESE2F7pnT4nOXeLiNoqBNaKYuKUE0jQ6MV7Ytx67TSGZHwdXjNzV?= =?us-ascii?Q?oQcQANUkDk0Yslz8Nz5KpkqjTMTPSdY+TvBQUzLnvfItl9gR2HznNAmEUNqJ?= =?us-ascii?Q?ZZ1za3SsIpHQaEAClPQt2uFFjuakYX+oHhdr8pDbhQGFIcoEbyKqIGt2P41E?= =?us-ascii?Q?+Ywbq7Ju3MhB+XDh3o27YUxVzTouUSDcdw/oe9RN6h/bT27lQbKXE6sOtz6L?= =?us-ascii?Q?hg4mzsvO/r3KQI5Ffreg4wId1QrZ61fk8R0jCi2gzaaqnLSCnwmRnCii2rO1?= =?us-ascii?Q?MYWyJ+JdH/VmwYHcrdErNTwULbX8gHm3vpZN?= x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:ME3P282MB3307.AUSP282.PROD.OUTLOOK.COM; PTR:; CAT:NONE; SFS:(13230040)(366016)(1800799024)(376014)(4022899009)(7053199007)(13003099007)(38070700021); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?us-ascii?Q?U5RfDdlRMBkeDpTTJ7Y6XfXHvycUW9LA2+8FLbVgsMsn7b/CJfa/PN6Lr+v/?= =?us-ascii?Q?/d4tzKDILiaNwBCSbyzaE6PenqIlsp9qWBHbSeDrX09Oydw+e0vAD8qQplAH?= =?us-ascii?Q?Zfe516Utlf5fvG3Y6B1RMkJtV6AR9VhzBee8ReV7kxAdpXTPEfUYC7dDMPCP?= =?us-ascii?Q?mYYx5AtDwLZrRNMdNPk0vYVTKawFo/Xjhh69/wFwWD9TWRLn0tMVkiFgtLZY?= =?us-ascii?Q?wN9W7Jm04SlZYeXyuCyzUZp66Q+mKMFGJzzMa6SQxz+aiod+NswFARHGSlBi?= =?us-ascii?Q?cJqqV9/Ok7KyVnmApa0X56b5NAA073jd7/rQBwMnB30ZHcmoLGCa769Ftlzf?= =?us-ascii?Q?GtWWzB/2bPlygJG+ESi6M06ABTSAa+NOk6diFUiABm5VHEX7Z5e/CRlM4X27?= =?us-ascii?Q?+YatAQArDH7hUEmKWfwX2N7IMFG3mJd7y2fhrg3wPN/bRo41e4z9VJLKrwi5?= =?us-ascii?Q?/Yppxy/YCNPu0MLVbJY7FDzt7oZZRpt5GMm8ueBfPcNjMoMoYU06xwO32gtM?= =?us-ascii?Q?neSb2M14vHuPC6O7vmdGWS6z0ydUY1sk99A5sd5KK0mM4sMIJ8O0iWxbTRUS?= =?us-ascii?Q?2AYMi6kF4VrvVBJsOasda1z4OhMGNKXpVMTk8HesaM0kQmABfMmv6NQnl3k+?= =?us-ascii?Q?X0oM4uy9Cc8cKh4yMuJHz4tgIjurDBOVkMYrIt5QbskfDc3Hcr2a/ixIA54A?= =?us-ascii?Q?e4KC+hY5JIOhqfnIJl72z1npueDV78zzBhYi0DZDFUOhgmZnEqJU4qJhyPfh?= =?us-ascii?Q?vpKGr3513wBmHJM87I41RwgebswU/lQe+RCib2z2aUqQ2u4SzOLNhU3Z/XWp?= =?us-ascii?Q?GFv0z/Cgfi0mUgoOL4eui5CzhbWSt//e2gLmBZzcp0zGD4+3by4FP4rtZq9Q?= =?us-ascii?Q?FLKWlqAn1OSqK8YIBS7OVrcS+pYWdq/MCsGNFwZVc7ZRSrxOTzc7mYq7zEUr?= =?us-ascii?Q?6wShrm2XF5iUvTYpBS88hX7kohZgKr/fA3DMZPFiXp/7u1A04RSv8HpeQXax?= =?us-ascii?Q?glO8CYT4X+1QUtd3Ts/jJYm4F42LiL3oBzRGG7cspB8wZF69pqCUssAMR0yo?= =?us-ascii?Q?kh2eOZDlL1jli58ZVUnoQG/ApOCnuaVAsJ2k9JNnoaivREjCdRtLv/Wf7ZnU?= =?us-ascii?Q?xAp/i4r5DVYwka9al8XsGcvYyKSk5TfieqptcwuO7xeGKnzJluy+TBaHvfHJ?= =?us-ascii?Q?QIO/+eoPm2KJWEWZvNvvePNRxva6gvmP5IOOSCwZYKwcCR7G1PF6cBsmZeH7?= =?us-ascii?Q?5kWhjlaoCg4kFCSH0vv9/go+N/kPhsK3rX3so8LeTV0RB76OEDrPMDdSQ9t7?= =?us-ascii?Q?GBT01yZLWP+VzctVO+pWiRNih/U6uwesXyBPalc5F3OVh+q19AnjmnM9WRwN?= =?us-ascii?Q?Fl0BUepaAxLaQ9vc+deHGvaZNQctItFm4j0iq4t4UIAX8CmBvZLrFqELHJXn?= =?us-ascii?Q?Pbxas1QOtDKBpUCgMDgz+hjOn9gaRZv8OctkefySqBnHePtRRGUbYzlDksKj?= =?us-ascii?Q?zmx1wboYDQsq3YEGGdg+iOGwqV3BZwihMOiZaSja8hVmDNbQQFQJy9qJosiv?= =?us-ascii?Q?FInizB/cMFM7L6cax40=3D?= MIME-Version: 1.0 X-OriginatorOrg: mjenzi.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: ME3P282MB3307.AUSP282.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-Network-Message-Id: d137fdca-b142-49ba-f4ef-08de1890ef3f X-MS-Exchange-CrossTenant-originalarrivaltime: 31 Oct 2025 15:19:50.0950 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: b4deef9f-a263-444e-be6c-24e8aa6e138a X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: Stj+z/cwBkMaFieLEW8MEqUyJfvVuqMWdsgN3n/4w7EfSfdEPkekOVdcP5XOVNyk/Nkej386PpfqWPDEbA9v9w== X-MS-Exchange-Transport-CrossTenantHeadersStamped: SY0P282MB5302 X-SPAM-LEVEL: Spam detection results: 0 ARC_SIGNED 0.001 Message has a ARC signature ARC_VALID 0.001 Message has a valid ARC signature BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_NONE 0.1 DMARC none policy KAM_ASCII_DIVIDERS 0.8 Email that uses ascii formatting dividers and possible spam tricks KAM_DMARC_NONE 0.25 DKIM has Failed or SPF has failed on the message and the domain has no DMARC policy KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment SPF_HELO_PASS -0.001 SPF: HELO matches 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. [proxmox.com] Subject: [pdm-devel] help 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" unsubscribe -----Original Message----- From: pdm-devel On Behalf Of pdm-devel-request@lists.proxmox.com Sent: Friday, 31 October 2025 1:00 PM To: pdm-devel@lists.proxmox.com Subject: pdm-devel Digest, Vol 11, Issue 124 Send pdm-devel mailing list submissions to pdm-devel@lists.proxmox.com To subscribe or unsubscribe via the World Wide Web, visit https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel or, via email, send a message with subject or body 'help' to pdm-devel-request@lists.proxmox.com You can reach the person managing the list at pdm-devel-owner@lists.proxmox.com When replying, please edit your Subject line so it is more specific than "Re: Contents of pdm-devel digest..." Today's Topics: 1. Re: [PATCH datacenter-manager 10/13] api: subscription status: add support for view-filter parameter (Lukas Wagner) ---------------------------------------------------------------------- Message: 1 Date: Fri, 31 Oct 2025 11:38:54 +0100 From: "Lukas Wagner" To: "Shannon Sterz" , "Lukas Wagner" Cc: "Proxmox Datacenter Manager development discussion" Subject: Re: [pdm-devel] [PATCH datacenter-manager 10/13] api: subscription status: add support for view-filter parameter Message-ID: Content-Type: text/plain; charset=UTF-8 On Thu Oct 30, 2025 at 12:44 PM CET, Shannon Sterz wrote: >> @@ -560,6 +564,7 @@ pub async fn get_status( pub async fn >> get_subscription_status( >> max_age: u64, >> verbose: bool, >> + view_filter: Option, >> rpcenv: &mut dyn RpcEnvironment, >> ) -> Result, Error> { >> let (remotes_config, _) = pdm_config::remotes::config()?; @@ >> -572,6 +577,14 @@ pub async fn get_subscription_status( >> .check_privs(&auth_id, &["resources"], PRIV_RESOURCE_AUDIT, false) >> .is_ok(); >> >> + if let Some(view_filter) = &view_filter { >> + user_info.check_privs(&auth_id, &["view", view_filter], PRIV_RESOURCE_AUDIT, false)?; >> + } > > this is minor, but maybe consider moving the view check before the > `allow_all` check and skipping the `allow_all` check (by setting it to > false) if a view was found. that should safe us an unecessary > traversal of the acl tree here. > > i think wolfgang already noted that tho. > ack, will be fixed for the next iteration. >> + >> + let view_filter = view_filter >> + .map(|filter_name| views::view_filter::get_view_filter(&filter_name)) >> + .transpose()?; >> + >> let check_priv = |remote_name: &str| -> bool { >> user_info >> .check_privs( >> @@ -584,35 +597,62 @@ pub async fn get_subscription_status( >> }; >> >> for (remote_name, remote) in remotes_config { >> - if !allow_all && !check_priv(&remote_name) { >> + if let Some(filter) = &view_filter { >> + if filter.can_skip_remote(&remote_name) { >> + continue; >> + } >> + } else if !allow_all && !check_priv(&remote_name) { >> continue; >> } >> >> + let view_filter_clone = view_filter.clone(); >> + >> let future = async move { >> let (node_status, error) = >> match get_subscription_info_for_remote(&remote, max_age).await { >> - Ok(node_status) => (Some(node_status), None), >> + Ok(mut node_status) => { >> + node_status.retain(|node, _| { >> + if let Some(filter) = &view_filter_clone { >> + filter.is_node_included(&remote.id, node) >> + } else { >> + true >> + } >> + }); >> + (Some(node_status), None) >> + } >> Err(error) => (None, Some(error.to_string())), >> }; >> >> - let mut state = RemoteSubscriptionState::Unknown; >> + let state = if let Some(node_status) = &node_status { >> + if error.is_some() { >> + // Don't leak the existence of failed remotes, since we cannot apply >> + // view-filters here. >> + return None; > > shouldn't this be gated by checking if view_filters was defined? > otherwise we now return nothing every time we get an error? > > also correct me if i'm wrong, but isn't this `return None;` unreachable? > error is assigned `Some` iff the `get_subscription_status` call above > returns an `Err`, but in that case `node_status` is set to `None`, so > the `if let Some(node_status) = &node_status` above should be false? > Excellent catch! You are absolutely right, I think I can just drop the if-clause completely. Thanks a lot! >> + } >> >> - if let Some(node_status) = &node_status { >> - state = map_node_subscription_list_to_state(node_status); >> - } >> + if node_status.is_empty() { >> + return None; >> + } >> >> - RemoteSubscriptions { >> + map_node_subscription_list_to_state(node_status) >> + } else { >> + RemoteSubscriptionState::Unknown >> + }; >> + >> + Some(RemoteSubscriptions { >> remote: remote_name, >> error, >> state, >> node_status: if verbose { node_status } else { None }, >> - } >> + }) >> }; >> >> futures.push(future); >> } >> >> - Ok(join_all(futures).await) >> + let status = >> + join_all(futures).await.into_iter().flatten().collect(); >> + >> + Ok(status) >> } >> >> // FIXME: make timeframe and count parameters? ------------------------------ Subject: Digest Footer _______________________________________________ pdm-devel mailing list pdm-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel ------------------------------ End of pdm-devel Digest, Vol 11, Issue 124 ****************************************** _______________________________________________ pdm-devel mailing list pdm-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pdm-devel