add the tags in the status line, and add a button for adding new ones

Signed-off-by: Dominik Csapak <d.csa...@proxmox.com>
---
 www/manager6/lxc/Config.js  | 32 ++++++++++++++++++++++++++++++--
 www/manager6/qemu/Config.js | 31 +++++++++++++++++++++++++++++--
 2 files changed, 59 insertions(+), 4 deletions(-)

diff --git a/www/manager6/lxc/Config.js b/www/manager6/lxc/Config.js
index 93f385db4..9b3017add 100644
--- a/www/manager6/lxc/Config.js
+++ b/www/manager6/lxc/Config.js
@@ -4,6 +4,8 @@ Ext.define('PVE.lxc.Config', {
 
     onlineHelp: 'chapter_pct',
 
+    userCls: 'proxmox-tags-full',
+
     initComponent: function() {
         var me = this;
        var vm = me.pveSelNode.data;
@@ -182,12 +184,33 @@ Ext.define('PVE.lxc.Config', {
            ],
        });
 
+       let tagsContainer = Ext.create('PVE.panel.TagEditContainer', {
+           tags: vm.tags,
+           listeners: {
+               change: function(tags) {
+                   Proxmox.Utils.API2Request({
+                       url: base_url + '/config',
+                       method: 'PUT',
+                       params: {
+                           tags,
+                       },
+                       success: function() {
+                           me.statusStore.load();
+                       },
+                       failure: function(response) {
+                           Ext.Msg.alert('Error', response.htmlStatus);
+                           me.statusStore.load();
+                       },
+                   });
+               },
+           },
+       });
 
        Ext.apply(me, {
            title: Ext.String.format(gettext("Container {0} on node '{1}'"), 
vm.text, nodename),
            hstateid: 'lxctab',
            tbarSpacing: false,
-           tbar: [statusTxt, '->', startBtn, shutdownBtn, migrateBtn, 
consoleBtn, moreBtn],
+           tbar: [statusTxt, tagsContainer, '->', startBtn, shutdownBtn, 
migrateBtn, consoleBtn, moreBtn],
            defaults: { statusStore: me.statusStore },
            items: [
                {
@@ -344,10 +367,12 @@ Ext.define('PVE.lxc.Config', {
        me.mon(me.statusStore, 'load', function(s, records, success) {
            var status;
            var lock;
+           var rec;
+
            if (!success) {
                status = 'unknown';
            } else {
-               var rec = s.data.get('status');
+               rec = s.data.get('status');
                status = rec ? rec.data.value : 'unknown';
                rec = s.data.get('template');
                template = rec ? rec.data.value : false;
@@ -357,6 +382,9 @@ Ext.define('PVE.lxc.Config', {
 
            statusTxt.update({ lock: lock });
 
+           rec = s.data.get('tags');
+           tagsContainer.loadTags(rec?.data?.value);
+
            startBtn.setDisabled(!caps.vms['VM.PowerMgmt'] || status === 
'running' || template);
            shutdownBtn.setDisabled(!caps.vms['VM.PowerMgmt'] || status !== 
'running');
            me.down('#removeBtn').setDisabled(!caps.vms['VM.Allocate'] || 
status !== 'stopped');
diff --git a/www/manager6/qemu/Config.js b/www/manager6/qemu/Config.js
index 9fe933dfc..2cd6d8567 100644
--- a/www/manager6/qemu/Config.js
+++ b/www/manager6/qemu/Config.js
@@ -3,6 +3,7 @@ Ext.define('PVE.qemu.Config', {
     alias: 'widget.PVE.qemu.Config',
 
     onlineHelp: 'chapter_virtual_machines',
+    userCls: 'proxmox-tags-full',
 
     initComponent: function() {
         var me = this;
@@ -219,11 +220,33 @@ Ext.define('PVE.qemu.Config', {
            ],
        });
 
+       let tagsContainer = Ext.create('PVE.panel.TagEditContainer', {
+           tags: vm.tags,
+           listeners: {
+               change: function(tags) {
+                   Proxmox.Utils.API2Request({
+                       url: base_url + '/config',
+                       method: 'PUT',
+                       params: {
+                           tags,
+                       },
+                       success: function() {
+                           me.statusStore.load();
+                       },
+                       failure: function(response) {
+                           Ext.Msg.alert('Error', response.htmlStatus);
+                           me.statusStore.load();
+                       },
+                   });
+               },
+           },
+       });
+
        Ext.apply(me, {
            title: Ext.String.format(gettext("Virtual Machine {0} on node 
'{1}'"), vm.text, nodename),
            hstateid: 'kvmtab',
            tbarSpacing: false,
-           tbar: [statusTxt, '->', resumeBtn, startBtn, shutdownBtn, 
migrateBtn, consoleBtn, moreBtn],
+           tbar: [statusTxt, tagsContainer, '->', resumeBtn, startBtn, 
shutdownBtn, migrateBtn, consoleBtn, moreBtn],
            defaults: { statusStore: me.statusStore },
            items: [
                {
@@ -382,11 +405,12 @@ Ext.define('PVE.qemu.Config', {
            var spice = false;
            var xtermjs = false;
            var lock;
+           var rec;
 
            if (!success) {
                status = qmpstatus = 'unknown';
            } else {
-               var rec = s.data.get('status');
+               rec = s.data.get('status');
                status = rec ? rec.data.value : 'unknown';
                rec = s.data.get('qmpstatus');
                qmpstatus = rec ? rec.data.value : 'unknown';
@@ -399,6 +423,9 @@ Ext.define('PVE.qemu.Config', {
                xtermjs = !!s.data.get('serial');
            }
 
+           rec = s.data.get('tags');
+           tagsContainer.loadTags(rec?.data?.value);
+
            if (template) {
                return;
            }
-- 
2.30.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to