]> git.proxmox.com Git - pve-manager.git/commitdiff
ui/qemu: Extend Qemu Guest agent
authorStoiko Ivanov <s.ivanov@proxmox.com>
Wed, 1 Aug 2018 18:29:07 +0000 (20:29 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 2 Aug 2018 14:20:12 +0000 (16:20 +0200)
Change to agent now being a property_string, and including  fstrim_cloned_disks.

Co-Authored-By: Thomas Lamprecht <t.lamprecht@proxmox.com>
Signed-off-by: Stoiko Ivanov <s.ivanov@proxmox.com>
www/manager6/Makefile
www/manager6/Utils.js
www/manager6/form/AgentFeatureSelector.js [new file with mode: 0644]
www/manager6/qemu/Options.js

index 72b018966a1e0ab11c995661d0aee41d9cd4beda..a9790767f5a1ed5972f82dc2d961173cabb8a6fc 100644 (file)
@@ -50,6 +50,7 @@ JSSRC=                                                        \
        form/SnapshotSelector.js                        \
        form/ContentTypeSelector.js                     \
        form/HotplugFeatureSelector.js                  \
+       form/AgentFeatureSelector.js                    \
        form/iScsiProviderSelector.js                   \
        form/DayOfWeekSelector.js                       \
        form/BackupModeSelector.js                      \
index 3ff5ef67e47de25da5711194b77f40eb5125f3ff..912cd3f70a836d9b19169587d11ae1077d18fb51 100644 (file)
@@ -175,6 +175,32 @@ Ext.define('PVE.Utils', { utilities: {
        return fa.join(', ');
     },
 
+    render_qga_features: function(value) {
+       if (!value) {
+           return Proxmox.Utils.defaultText + ' (' + Proxmox.Utils.disabledText  + ')';
+       }
+       var props = PVE.Parser.parsePropertyString(value, 'enabled');
+       if (!PVE.Parser.parseBoolean(props.enabled)) {
+           return Proxmox.Utils.disabledText;
+       }
+
+       delete props.enabled;
+       var agentstring = Proxmox.Utils.enabledText;
+
+       Ext.Object.each(props, function(key, value) {
+           var keystring = '' ;
+           agentstring += ', ' + key + ': ';
+
+           if (PVE.Parser.parseBoolean(value)) {
+               agentstring += Proxmox.Utils.enabledText;
+           } else {
+               agentstring += Proxmox.Utils.disabledText;
+           }
+       });
+
+       return agentstring;
+    },
+
     render_qemu_bios: function(value) {
        if (!value) {
            return Proxmox.Utils.defaultText + ' (SeaBIOS)';
diff --git a/www/manager6/form/AgentFeatureSelector.js b/www/manager6/form/AgentFeatureSelector.js
new file mode 100644 (file)
index 0000000..e297aed
--- /dev/null
@@ -0,0 +1,44 @@
+Ext.define('PVE.form.AgentFeatureSelector', {
+    extend: 'Proxmox.panel.InputPanel',
+    alias: ['widget.pveAgentFeatureSelector'],
+
+    initComponent: function() {
+       var me = this;
+       me.items= [
+           {
+               xtype: 'proxmoxcheckbox',
+               boxLabel: gettext('Qemu Agent'),
+               name: 'enabled',
+               uncheckedValue: 0,
+               listeners: {
+                   change: function(f, value, old) {
+                       var gtcb = me.down('proxmoxcheckbox[name=fstrim_cloned_disks]');
+                       if (value) {
+                           gtcb.setDisabled(false);
+                       } else {
+                           gtcb.setDisabled(true);
+                       }
+                   }
+               }
+           },
+           {
+               xtype: 'proxmoxcheckbox',
+               boxLabel: gettext('Run guest-trim after clone disk'),
+               name: 'fstrim_cloned_disks',
+               disabled: true
+           }
+       ];
+       me.callParent();
+    },
+
+    onGetValues: function(values) {
+       var agentstr = PVE.Parser.printPropertyString(values, 'enabled');
+       return { agent: agentstr };
+    },
+
+    setValues: function(values) {
+       var agent = values.agent || '';
+       var res = PVE.Parser.parsePropertyString(agent, 'enabled');
+       this.callParent([res]);
+    }
+});
index 6f0b25110ea6953f0c2dab60b42abf36f483ae75..4ee28ff97afcf1341ba0882044c0b3c0fbf108e0 100644 (file)
@@ -266,17 +266,13 @@ Ext.define('PVE.qemu.Options', {
            agent: {
                header: gettext('Qemu Agent'),
                defaultValue: false,
-               renderer: Proxmox.Utils.format_boolean,
+               renderer: PVE.Utils.render_qga_features,
                editor: caps.vms['VM.Config.Options'] ? {
                    xtype: 'proxmoxWindowEdit',
                    subject: gettext('Qemu Agent'),
                    items: {
-                       xtype: 'proxmoxcheckbox',
-                       name: 'agent',
-                       uncheckedValue: 0,
-                       defaultValue: 0,
-                       deleteDefaultValue: true,
-                       fieldLabel: gettext('Enabled')
+                       xtype: 'pveAgentFeatureSelector',
+                       name: 'agent'
                    }
                } : undefined
            },