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 4C7D81FF142 for ; Fri, 05 Jun 2026 17:39:11 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 331651ED43; Fri, 5 Jun 2026 17:39:02 +0200 (CEST) From: =?UTF-8?q?Michael=20K=C3=B6ppl?= To: pve-devel@lists.proxmox.com Subject: [PATCH cluster v4 5/8] api: join info: add totem timeout warning message and level Date: Fri, 5 Jun 2026 17:38:16 +0200 Message-ID: <20260605153819.310048-6-m.koeppl@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20260605153819.310048-1-m.koeppl@proxmox.com> References: <20260605153819.310048-1-m.koeppl@proxmox.com> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Bm-Milter-Handled: 55990f41-d878-4baa-be0a-ee34c49e34d2 X-Bm-Transport-Timestamp: 1780673866291 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.092 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 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: LMZTDJSVI5MSR4IN5DCM3NDH2XUCK6SK X-Message-ID-Hash: LMZTDJSVI5MSR4IN5DCM3NDH2XUCK6SK X-MailFrom: m.koeppl@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 VE development discussion List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: The warning message and level based on the calculated membership recovery timeout provide additional information to users on whether the token coefficient used in their Corosync cluster could be optimized, or if a change is (strongly) recommended. This lets users make an informed decision about potentially reducing the coefficient before adding another node to their cluster. The `warnings` property is defined as an object with `message`, `level`, and `type` fields to be expandable for additional errors or warnings in the future and also allow for easily distinguishing between different kinds of warnings and their levels. Signed-off-by: Michael Köppl --- src/PVE/API2/ClusterConfig.pm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/PVE/API2/ClusterConfig.pm b/src/PVE/API2/ClusterConfig.pm index bbed40e..2172ab1 100644 --- a/src/PVE/API2/ClusterConfig.pm +++ b/src/PVE/API2/ClusterConfig.pm @@ -535,6 +535,7 @@ __PACKAGE__->register_method({ check => ['perm', '/', ['Sys.Audit']], }, method => 'GET', + protected => 1, description => "Get information needed to join this cluster over the connected node.", parameters => { additionalProperties => 0, @@ -571,6 +572,19 @@ __PACKAGE__->register_method({ preferred_node => get_standard_option('pve-node'), totem => { type => 'object' }, config_digest => { type => 'string' }, + warnings => { + type => 'array', + optional => 1, + items => { + type => 'object', + additionalProperties => 1, + properties => { + type => { type => 'string' }, + level => { type => 'string' }, + message => { type => 'string' }, + }, + }, + }, }, }, code => sub { @@ -599,12 +613,19 @@ __PACKAGE__->register_method({ $node->{pve_addr} = scalar(PVE::Cluster::remote_node_ip($name)); } + my $total_timeout_secs = PVE::Corosync::calculate_membership_recovery_timeout(); + my ($level, $msg) = + PVE::Corosync::get_membership_recovery_timeout_warning($total_timeout_secs); + my $res = { nodelist => [values %$nodelist], preferred_node => $nodename, totem => $totem_cfg, config_digest => $corosync_config_digest, }; + $res->{warnings} = + [{ type => 'corosync-membership-recovery-timeout', level => $level, message => $msg }] + if defined($msg); return $res; }, -- 2.47.3