-/*jslint confusion: true*/
Ext.define('PVE.window.Migrate', {
extend: 'Ext.window.Window',
if (vm.get('migration.with-local-disks')) {
params['with-local-disks'] = 1;
}
- //only submit targetstorage if vm is running, storage migration to different storage is only possible online
- if (vm.get('migration.with-local-disks') && vm.get('running')) {
+ //offline migration to a different storage currently might fail at a late stage
+ //(i.e. after some disks have been moved), so don't expose it yet in the GUI
+ if (vm.get('migration.with-local-disks') && vm.get('running') && values.targetstorage) {
params.targetstorage = values.targetstorage;
}
});
}
} else {
+ var size_string = disk.size ? '(' + PVE.Utils.render_size(disk.size) + ')' : '';
migration['with-local-disks'] = 1;
migration.preconditions.push({
- text:'Migration with local disk might take long: ' + disk.volid
- +' (' + PVE.Utils.render_size(disk.size) + ')',
+ text: Ext.String.format('Migration with local disk might take long: {0} {1}',
+ disk.volid, size_string),
severity: 'warning'
});
}
reference: 'formPanel',
bodyPadding: 10,
border: false,
- layout: {
- type: 'column'
- },
+ layout: 'hbox',
items: [
{
xtype: 'container',
- columnWidth: 0.5,
+ flex: 1,
items: [{
xtype: 'displayfield',
name: 'source',
},
{
xtype: 'container',
- columnWidth: 0.5,
+ flex: 1,
items: [{
xtype: 'pveNodeSelector',
reference: 'pveNodeSelector',
name: 'targetstorage',
fieldLabel: gettext('Target storage'),
storageContent: 'images',
+ allowBlank: true,
+ autoSelect: false,
+ emptyText: gettext('Current layout'),
bind: {
hidden: '{setStorageselectorHidden}'
}
bind: {
hidden: '{!migration.preconditions.length}',
store: {
- fields: ['severity','text'],
- data: '{migration.preconditions}'
+ fields: ['severity', 'text'],
+ data: '{migration.preconditions}',
+ sorters: 'text',
}
}
}