From 1662ccdbfd08a4079b733f77305785aaba4eb3c3 Mon Sep 17 00:00:00 2001 From: Stoiko Ivanov Date: Wed, 1 Aug 2018 20:29:07 +0200 Subject: [PATCH] ui/qemu: Extend Qemu Guest agent Change to agent now being a property_string, and including fstrim_cloned_disks. Co-Authored-By: Thomas Lamprecht Signed-off-by: Stoiko Ivanov --- www/manager6/Makefile | 1 + www/manager6/Utils.js | 26 ++++++++++++++ www/manager6/form/AgentFeatureSelector.js | 44 +++++++++++++++++++++++ www/manager6/qemu/Options.js | 10 ++---- 4 files changed, 74 insertions(+), 7 deletions(-) create mode 100644 www/manager6/form/AgentFeatureSelector.js diff --git a/www/manager6/Makefile b/www/manager6/Makefile index 72b01896..a9790767 100644 --- a/www/manager6/Makefile +++ b/www/manager6/Makefile @@ -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 \ diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js index 3ff5ef67..912cd3f7 100644 --- a/www/manager6/Utils.js +++ b/www/manager6/Utils.js @@ -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 index 00000000..e297aed8 --- /dev/null +++ b/www/manager6/form/AgentFeatureSelector.js @@ -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]); + } +}); diff --git a/www/manager6/qemu/Options.js b/www/manager6/qemu/Options.js index 6f0b2511..4ee28ff9 100644 --- a/www/manager6/qemu/Options.js +++ b/www/manager6/qemu/Options.js @@ -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 }, -- 2.39.2