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 5F0AF1FF17E for ; Thu, 2 Oct 2025 17:16:13 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id C793A13FB7; Thu, 2 Oct 2025 17:16:14 +0200 (CEST) From: Nicolas Frey To: pve-devel@lists.proxmox.com Date: Thu, 2 Oct 2025 17:16:09 +0200 Message-ID: <20251002151609.41473-3-n.frey@proxmox.com> X-Mailer: git-send-email 2.47.3 In-Reply-To: <20251002151609.41473-1-n.frey@proxmox.com> References: <20251002151609.41473-1-n.frey@proxmox.com> MIME-Version: 1.0 X-SPAM-LEVEL: Spam detection results: 0 AWL 0.112 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 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 v2 2/2] 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. Fixes: https://bugzilla.proxmox.com/show_bug.cgi?id=6209 Signed-off-by: Nicolas Frey --- www/manager6/lxc/CmdMenu.js | 47 ++++++++++++++++++++++++++++++++++++ www/manager6/qemu/CmdMenu.js | 47 ++++++++++++++++++++++++++++++++++++ 2 files changed, 94 insertions(+) diff --git a/www/manager6/lxc/CmdMenu.js b/www/manager6/lxc/CmdMenu.js index cd60c967..bd5fe164 100644 --- a/www/manager6/lxc/CmdMenu.js +++ b/www/manager6/lxc/CmdMenu.js @@ -134,6 +134,40 @@ Ext.define('PVE.lxc.CmdMenu', { }, }, { xtype: 'menuseparator' }, + { + text: gettext('Take Snapshot'), + iconCls: 'fa fa-fw fa-history', + itemId: 'takeSnapshotBtn', + disabled: true, // default until async check finishes + handler: function () { + let win = 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'), + running: running, + }); + win.show(); + }, + }, + { + text: gettext('Backup now'), + iconCls: 'fa fa-fw fa-floppy-o', + disabled: !caps.vms['VM.Backup'], + handler: function () { + var win = Ext.create('PVE.window.Backup', { + nodename: info.node, + vmid: info.vmid, + vmtype: info.type, + vmname: info.name, + }); + win.show(); + }, + }, + { xtype: 'menuseparator' }, { text: gettext('Console'), iconCls: 'fa fa-fw fa-terminal', @@ -149,5 +183,18 @@ Ext.define('PVE.lxc.CmdMenu', { ]; me.callParent(); + + Proxmox.Utils.API2Request({ + url: `/nodes/${info.node}/${info.type}/${info.vmid}/feature`, + params: { feature: 'snapshot' }, + method: 'GET', + success: function (response) { + let hasFeature = !!response.result.data.hasFeature; + let btn = me.down('#takeSnapshotBtn'); + if (btn) { + btn.setDisabled(!(caps.vms['VM.Snapshot'] && hasFeature)); + } + }, + }); }, }); diff --git a/www/manager6/qemu/CmdMenu.js b/www/manager6/qemu/CmdMenu.js index adf64672..7c9080c5 100644 --- a/www/manager6/qemu/CmdMenu.js +++ b/www/manager6/qemu/CmdMenu.js @@ -169,6 +169,40 @@ Ext.define('PVE.qemu.CmdMenu', { }, }, { xtype: 'menuseparator' }, + { + text: gettext('Take Snapshot'), + iconCls: 'fa fa-fw fa-history', + itemId: 'takeSnapshotBtn', + disabled: true, + handler: function () { + let win = 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'), + running: running, + }); + win.show(); + }, + }, + { + text: gettext('Backup now'), + iconCls: 'fa fa-fw fa-floppy-o', + disabled: !caps.vms['VM.Backup'], + handler: function () { + var win = Ext.create('PVE.window.Backup', { + nodename: info.node, + vmid: info.vmid, + vmtype: info.type, + vmname: info.name, + }); + win.show(); + }, + }, + { xtype: 'menuseparator' }, { text: gettext('Console'), iconCls: 'fa fa-fw fa-terminal', @@ -194,5 +228,18 @@ Ext.define('PVE.qemu.CmdMenu', { ]; me.callParent(); + + Proxmox.Utils.API2Request({ + url: `/nodes/${info.node}/${info.type}/${info.vmid}/feature`, + params: { feature: 'snapshot' }, + method: 'GET', + success: function (response) { + let hasFeature = !!response.result.data.hasFeature; + let btn = me.down('#takeSnapshotBtn'); + if (btn) { + btn.setDisabled(!(caps.vms['VM.Snapshot'] && hasFeature)); + } + }, + }); }, }); -- 2.47.3 _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel