From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from gate001.proxmox.com (gate001.proxmox.com [45.144.208.40]) by lore.proxmox.com (Postfix) with ESMTPS id CBA2E1FF09C for ; Mon, 05 Oct 2026 16:50:19 +0200 (CEST) Received: from gate001.proxmox.com (localhost.localdomain [127.0.0.1]) by gate001.proxmox.com (Proxmox) with ESMTP id 5E2D82189F; Mon, 05 Oct 2026 16:48:43 +0200 (CEST) From: =?UTF-8?q?Michael=20K=C3=B6ppl?= To: pve-devel@lists.proxmox.com Subject: [PATCH manager v7 17/24] ui: guest ID selector: show the error returned by nextid Date: Mon, 5 Oct 2026 16:47:58 +0200 Message-ID: <20261005144805.825538-18-m.koeppl@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20261005144805.825538-1-m.koeppl@proxmox.com> References: <20261005144805.825538-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: 1791211690154 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.192 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) POISEN_SPAM_PILL 0.1 Meta: its spam POISEN_SPAM_PILL_1 0.1 random spam to be learned in bayes POISEN_SPAM_PILL_3 0.1 random spam to be learned in bayes RCVD_IN_DNSWL_MED -2.3 Sender listed at https://www.dnswl.org/, medium trust 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: CKON6WVB2PUQVSZBWGUTTZMUX5LUVLED X-Message-ID-Hash: CKON6WVB2PUQVSZBWGUTTZMUX5LUVLED 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 guest ID field validates IDs through the /cluster/nextid endpoint and reported any failure, including failed requests, as the ID being in use. Show the error the endpoint returns instead, so that the actual reason for rejecting an ID is visible. This is also needed for the endpoint to reject IDs that are not in use, but forbidden by the next-id datacenter option. Signed-off-by: Michael Köppl --- www/manager6/form/GuestIDSelector.js | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/www/manager6/form/GuestIDSelector.js b/www/manager6/form/GuestIDSelector.js index f3160a744..fdf9e7610 100644 --- a/www/manager6/form/GuestIDSelector.js +++ b/www/manager6/form/GuestIDSelector.js @@ -27,7 +27,7 @@ Ext.define('PVE.form.GuestIDSelector', { } if (me.validateExists === false && me.rejected) { - return me.inUseID; + return me.nextIDError; } return true; @@ -37,7 +37,6 @@ Ext.define('PVE.form.GuestIDSelector', { var me = this; var label = '{0} ID'; var unknownID = gettext('This {0} ID does not exist'); - var inUseID = gettext('This {0} ID is already in use'); var type = 'CT/VM'; if (me.guestType === 'lxc') { @@ -48,7 +47,6 @@ Ext.define('PVE.form.GuestIDSelector', { me.label = Ext.String.format(label, type); me.unknownID = Ext.String.format(unknownID, type); - me.inUseID = Ext.String.format(inUseID, type); Ext.apply(me, { fieldLabel: me.label, @@ -67,6 +65,10 @@ Ext.define('PVE.form.GuestIDSelector', { }, failure: function (response, opts) { me.rejected = true; + let error = response.result?.errors?.vmid; + me.nextIDError = error + ? Ext.htmlEncode(error.trim()) + : response.htmlStatus; me.validate(); }, }); -- 2.47.3