From: Lukas Wagner <l.wagner@proxmox.com>
To: pbs-devel@lists.proxmox.com, pve-devel@lists.proxmox.com
Subject: [PATCH pve-cluster v3 31/39] cluster: move pvecfg node version helpers from qemu-server
Date: Fri, 9 Oct 2026 14:56:38 +0200 [thread overview]
Message-ID: <20261009125646.284673-32-l.wagner@proxmox.com> (raw)
In-Reply-To: <20261009125646.284673-1-l.wagner@proxmox.com>
From: Fiona Ebner <f.ebner@proxmox.com>
For the pvecfg version helpers, add a node_pvecfg_version_at_least()
function for convenience.
In preparation to check the node version for container migration and
from HA manager too.
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
Notes:
New in v3, cherry-picked from
https://lore.proxmox.com/pve-devel/20260918160841.128088-1-f.ebner@proxmox.com/
src/PVE/Cluster.pm | 30 ++++++++++++++++++++++++++++++
1 file changed, 30 insertions(+)
diff --git a/src/PVE/Cluster.pm b/src/PVE/Cluster.pm
index 034b78c..784ea02 100644
--- a/src/PVE/Cluster.pm
+++ b/src/PVE/Cluster.pm
@@ -929,4 +929,34 @@ sub cfs_rename_db_unsafe {
rename $dbfile, "$dbfile.$ctime.bak" or warn "failed to rename old config database - $!\n";
}
+sub get_node_pvecfg_version {
+ my ($node) = @_;
+
+ my $nodes_version_info = get_node_kv('version-info', $node);
+ return if !$nodes_version_info->{$node};
+
+ my $version_info = decode_json($nodes_version_info->{$node});
+ return $version_info->{version};
+}
+
+sub pvecfg_min_version {
+ my ($verstr, $major, $minor, $release) = @_;
+
+ return 0 if !$verstr;
+
+ if ($verstr =~ m/^(\d+)\.(\d+)(?:[.-](\d+))?/) {
+ return 1 if PVE::Tools::version_cmp($1, $major, $2, $minor, $3 // 0, $release) >= 0;
+ return 0;
+ }
+
+ die "internal error: cannot check version of invalid string '$verstr'";
+}
+
+sub node_pvecfg_version_at_least {
+ my ($node, $major, $minor, $release) = @_;
+
+ my $version = get_node_pvecfg_version($node);
+ return $version && pvecfg_min_version($version, $major, $minor, $release);
+}
+
1;
--
2.47.3
next prev parent reply other threads:[~2026-10-09 13:02 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-10-09 12:56 [PATCH many v3 00/39] notifications: add nested match expressions Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 01/39] add new proxmox-match-expression crate Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 02/39] notify: log which matchers matched on a notification Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 03/39] notify: promote matcher to dir-style module Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 04/39] notify: fix doc comment Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 05/39] notify: matcher: break out severity matcher into submodule Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 06/39] notify: matcher: break out field " Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 07/39] notify: matcher: break out calendar " Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 08/39] notify: matcher: calendar: add basic unit test Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 09/39] notify: matcher: add InlineSeverityMatcher Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 10/39] notify: matcher: add InlineFieldMatcher Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 11/39] notify: matcher: add InlineCalendarMatcher Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 12/39] notify: matcher: add expression support Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 13/39] notify: api: support new expression parameter Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 14/39] notify: api: add `get_matcher_as_expression` Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 15/39] notify: migrate PBS's and PVE's default matcher to expression syntax Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 16/39] notify: move legacy matcher keys behind feature flag Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 17/39] notify: matcher: don't allow empty field/severity matchers Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox v3 18/39] notify: matcher: re-serialize expression on create/update Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox-widget-toolkit v3 19/39] notifications: increase matcher window width Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox-widget-toolkit v3 20/39] notifications: matcher: add support for match expressions Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox-widget-toolkit v3 21/39] notifications: matcher: add better calendar editor Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox-widget-toolkit v3 22/39] notifications: matcher: consistently use title case for UI elements Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox-backup v3 23/39] notification: opt into 'legacy-matchers' feature in proxmox-notify Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox-backup v3 24/39] api: notification: add 'migrate-to-expression' parameter to get_matcher Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox-backup v3 25/39] ui: notification: enable new matcher UI Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox-perl-rs v3 26/39] notify: move proxmox-notify bindings from common to pve-rs Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox-perl-rs v3 27/39] notify: matcher: pass matcher config / updater directly Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox-perl-rs v3 28/39] notify: opt into 'legacy-matchers' feature in proxmox-notify Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox-perl-rs v3 29/39] notify: add 'migrate_to_expression' parameter for get_matcher Lukas Wagner
2026-10-09 12:56 ` [PATCH pve-cluster v3 30/39] notify: adapt to changed module prefix for PVE::RS::Notify Lukas Wagner
2026-10-09 12:56 ` Lukas Wagner [this message]
2026-10-09 12:56 ` [PATCH common v3 32/39] tools: move version_cmp() helper from qemu-server Lukas Wagner
2026-10-09 12:56 ` [PATCH manager v3 33/39] vzdump: adapt to changed module prefix for PVE::RS::Notify Lukas Wagner
2026-10-09 12:56 ` [PATCH manager v3 34/39] api: notification: pass config/updater directly to rust bindings Lukas Wagner
2026-10-09 12:56 ` [PATCH manager v3 35/39] api: notification: get_matcher: add 'migrate-to-expression' parameter Lukas Wagner
2026-10-09 12:56 ` [PATCH manager v3 36/39] api: notification: add 'expression' to matcher parameter schema Lukas Wagner
2026-10-09 12:56 ` [PATCH manager v3 37/39] ui: notification: enable new matcher UI Lukas Wagner
2026-10-09 12:56 ` [PATCH manager v3 38/39] api: notification: reject matchers with expression if not supported by all nodes Lukas Wagner
2026-10-09 12:56 ` [PATCH proxmox-mail-forward v3 39/39] cargo: opt into legacy-matchers feature Lukas Wagner
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=20261009125646.284673-32-l.wagner@proxmox.com \
--to=l.wagner@proxmox.com \
--cc=pbs-devel@lists.proxmox.com \
--cc=pve-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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox