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 DCE581FF187 for ; Mon, 6 Oct 2025 15:33:38 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 67F915354; Mon, 6 Oct 2025 15:33:42 +0200 (CEST) From: Nicolas Frey To: pve-devel@lists.proxmox.com Date: Mon, 6 Oct 2025 15:33:07 +0200 Message-ID: <20251006133308.119141-2-n.frey@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251006133308.119141-1-n.frey@proxmox.com> References: <20251006133308.119141-1-n.frey@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.103 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 KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods 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. RDNS_NONE 0.793 Delivered to internal network by a host with no rDNS SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record Subject: [pve-devel] [PATCH pve-manager v3 1/1] ui: fix #6209: create snapshots and backups from context menu X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: Proxmox VE development discussion Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" Adds snapshot and manual backup shortcut to VM/CT right-click context menu. On the previous iteration (v2), the snapshot feature availablity was checked on menu load. It is now called only when the snapshot button is clicked, preventing delays in loading the context menu. Testing with simulated latency (with setTimeout) showed better UX by displaying an error on click rather than preloading the check. Previously, users couldn't distinguish between a slow API and the feature being disabled. The explicit check provides clear feedback. The 'disabled' property remains bound to VM.Snapshot to disable the option when snapshots aren't allowed anyway. Fixes: https://bugzilla.proxmox.com/show_bug.cgi?id=6209 Signed-off-by: Nicolas Frey --- www/manager6/lxc/CmdMenu.js | 46 ++++++++++++++++++++++++++++++++++++ www/manager6/qemu/CmdMenu.js | 46 ++++++++++++++++++++++++++++++++++++ 2 files changed, 92 insertions(+) diff --git a/www/manager6/lxc/CmdMenu.js b/www/manager6/lxc/CmdMenu.js index cd60c967..f0e8f700 100644 --- a/www/manager6/lxc/CmdMenu.js +++ b/www/manager6/lxc/CmdMenu.js @@ -134,6 +134,52 @@ Ext.define('PVE.lxc.CmdMenu', { }, }, { xtype: 'menuseparator' }, + { + text: gettext('Take Snapshot'), + iconCls: 'fa fa-fw fa-history', + disabled: !caps.vms['VM.Snapshot'], + handler: function () { + Proxmox.Utils.API2Request({ + url: `/nodes/${info.node}/${info.type}/${info.vmid}/feature`, + params: { feature: 'snapshot' }, + method: 'GET', + success: function (response) { + if (!response.result.data.hasFeature) { + Ext.Msg.alert(gettext('Error'), 'Cannot take snapshot: Feature not enabled.') + return; + } + Ext.create('PVE.window.Snapshot', { + nodename: info.node, + vmid: info.vmid, + vmname: info.name, + viewonly: false, + type: info.type, + isCreate: true, + submitText: gettext('Take Snapshot'), + autoShow: true, + running: running, + }); + }, + failure: (response, opts) => + Ext.Msg.alert(gettext('Error'), response.htmlStatus), + }); + }, + }, + { + text: gettext('Backup now'), + iconCls: 'fa fa-fw fa-floppy-o', + disabled: !caps.vms['VM.Backup'], + handler: function () { + Ext.create('PVE.window.Backup', { + nodename: info.node, + vmid: info.vmid, + vmtype: info.type, + vmname: info.name, + autoShow: true, + }); + }, + }, + { xtype: 'menuseparator' }, { text: gettext('Console'), iconCls: 'fa fa-fw fa-terminal', diff --git a/www/manager6/qemu/CmdMenu.js b/www/manager6/qemu/CmdMenu.js index adf64672..3e51be8f 100644 --- a/www/manager6/qemu/CmdMenu.js +++ b/www/manager6/qemu/CmdMenu.js @@ -169,6 +169,52 @@ Ext.define('PVE.qemu.CmdMenu', { }, }, { xtype: 'menuseparator' }, + { + text: gettext('Take Snapshot'), + iconCls: 'fa fa-fw fa-history', + disabled: !caps.vms['VM.Snapshot'], + handler: function () { + Proxmox.Utils.API2Request({ + url: `/nodes/${info.node}/${info.type}/${info.vmid}/feature`, + params: { feature: 'snapshot' }, + method: 'GET', + success: function (response) { + if (!response.result.data.hasFeature) { + Ext.Msg.alert(gettext('Error'), 'Cannot take snapshot: Feature not enabled.') + return; + } + Ext.create('PVE.window.Snapshot', { + nodename: info.node, + vmid: info.vmid, + vmname: info.name, + viewonly: false, + type: info.type, + isCreate: true, + submitText: gettext('Take Snapshot'), + autoShow: true, + running: running, + }); + }, + failure: (response, opts) => + Ext.Msg.alert(gettext('Error'), response.htmlStatus), + }); + }, + }, + { + text: gettext('Backup now'), + iconCls: 'fa fa-fw fa-floppy-o', + disabled: !caps.vms['VM.Backup'], + handler: function () { + Ext.create('PVE.window.Backup', { + nodename: info.node, + vmid: info.vmid, + vmtype: info.type, + vmname: info.name, + autoShow: true, + }); + }, + }, + { xtype: 'menuseparator' }, { text: gettext('Console'), iconCls: 'fa fa-fw fa-terminal', -- 2.47.3 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel