If online is checked && vm is a qemu machine, we display 2 new field:
-use-local-disk checkbox (unchecked by default) -target storage option (disabled by default, enabled is localdisk is checked) Signed-off-by: Alexandre Derumier <aderum...@odiso.com> --- www/manager6/window/Migrate.js | 90 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 77 insertions(+), 13 deletions(-) diff --git a/www/manager6/window/Migrate.js b/www/manager6/window/Migrate.js index dfc8da33..496229cd 100644 --- a/www/manager6/window/Migrate.js +++ b/www/manager6/window/Migrate.js @@ -3,7 +3,7 @@ Ext.define('PVE.window.Migrate', { resizable: false, - migrate: function(target, online) { + migrate: function(target, online, localdisks, targetstorage) { var me = this; var params = { target: target @@ -11,6 +11,12 @@ Ext.define('PVE.window.Migrate', { if (me.vmtype === 'qemu') { params.online = online; + if(localdisks) { + params['with-local-disks'] = localdisks; + if(targetstorage) { + params.targetstorage = targetstorage; + } + } } else { params.restart = online; } @@ -57,21 +63,51 @@ Ext.define('PVE.window.Migrate', { running = true; } - me.formPanel = Ext.create('Ext.form.Panel', { - bodyPadding: 10, - border: false, - fieldDefaults: { - labelWidth: 100, - anchor: '100%' - }, - items: [ + me.localdisks = Ext.createWidget('pvecheckbox', { + name: 'localdisks', + defaultValue: 0, + fieldLabel: gettext('Migrate local disks'), + hidden: running ? false : true, + listeners: { + change: function(field, checked) { + + if(checked) { + me.storagesel.setDisabled(false); + } else { + me.storagesel.setDisabled(true); + } + } + } + }); + + me.storagesel = Ext.create('PVE.form.StorageSelector', { + nodename: me.nodename, + name: 'targetstorage', + value: '', + fieldLabel: gettext('Storage'), + storageContent: 'images', + autoSelect: false, // will use for each disk the same storage as source + allowBlank: true, + emptyText: gettext('Same as source'), + disabled: true, + hidden: running ? false : true, + }); + + var items = [ { xtype: 'pveNodeSelector', name: 'target', fieldLabel: gettext('Target node'), allowBlank: false, disallowedNodes: [me.nodename], - onlineValidator: true + onlineValidator: true, + listeners: { + change: function(f, value) { + if (me.vmtype === 'qemu') { + me.storagesel.setNodename(value); + } + } + } }, { xtype: 'pvecheckbox', @@ -79,9 +115,37 @@ Ext.define('PVE.window.Migrate', { uncheckedValue: 0, defaultValue: 0, checked: running, - fieldLabel: me.vmtype === 'qemu' ? gettext('Online') : gettext('Restart Mode') + fieldLabel: me.vmtype === 'qemu' ? gettext('Online') : gettext('Restart Mode'), + listeners: { + change: function(field, checked) { + if (me.vmtype === 'qemu') { + + if(checked) { + me.storagesel.setHidden(false); + me.localdisks.setHidden(false); + } else { + me.storagesel.setHidden(true); + me.localdisks.setHidden(true); + } + } + } + } } - ] + ]; + + if (me.vmtype === 'qemu') { + items.push(me.localdisks); + items.push(me.storagesel); + } + + me.formPanel = Ext.create('Ext.form.Panel', { + bodyPadding: 10, + border: false, + fieldDefaults: { + labelWidth: 100, + anchor: '100%' + }, + items: items }); var form = me.formPanel.getForm(); @@ -90,7 +154,7 @@ Ext.define('PVE.window.Migrate', { text: gettext('Migrate'), handler: function() { var values = form.getValues(); - me.migrate(values.target, values.online); + me.migrate(values.target, values.online, values.localdisks, values.targetstorage); } }); -- 2.11.0 _______________________________________________ pve-devel mailing list pve-devel@pve.proxmox.com https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel