mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-07 10:39:49 +00:00
add startup option to GUI
This commit is contained in:
parent
b92400b6a7
commit
640f8f14f3
@ -96,6 +96,7 @@ JSSRC= \
|
|||||||
qemu/DisplayEdit.js \
|
qemu/DisplayEdit.js \
|
||||||
qemu/KeyboardEdit.js \
|
qemu/KeyboardEdit.js \
|
||||||
qemu/HardwareView.js \
|
qemu/HardwareView.js \
|
||||||
|
qemu/StartupEdit.js \
|
||||||
qemu/Options.js \
|
qemu/Options.js \
|
||||||
qemu/Config.js \
|
qemu/Config.js \
|
||||||
qemu/CreateWizard.js \
|
qemu/CreateWizard.js \
|
||||||
|
@ -185,5 +185,55 @@ Ext.define('PVE.Parser', { statics: {
|
|||||||
});
|
});
|
||||||
|
|
||||||
return netarray.join(';');
|
return netarray.join(';');
|
||||||
|
},
|
||||||
|
|
||||||
|
parseStartup: function(value) {
|
||||||
|
if (value === undefined) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var res = {};
|
||||||
|
|
||||||
|
var errors = false;
|
||||||
|
Ext.Array.each(value.split(','), function(p) {
|
||||||
|
if (!p || p.match(/^\s*$/)) {
|
||||||
|
return; // continue
|
||||||
|
}
|
||||||
|
|
||||||
|
var match_res;
|
||||||
|
|
||||||
|
if ((match_res = p.match(/^(order)?=(\d+)$/)) !== null) {
|
||||||
|
res.order = match_res[2];
|
||||||
|
} else if ((match_res = p.match(/^up=(\d+)$/)) !== null) {
|
||||||
|
res.up = match_res[1];
|
||||||
|
} else if ((match_res = p.match(/^down=(\d+)$/)) !== null) {
|
||||||
|
res.down = match_res[1];
|
||||||
|
} else {
|
||||||
|
errors = true;
|
||||||
|
return false; // break
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
if (errors) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
},
|
||||||
|
|
||||||
|
printStartup: function(startup) {
|
||||||
|
var arr = [];
|
||||||
|
if (startup.order !== undefined && startup.order !== '') {
|
||||||
|
arr.push('order=' + startup.order);
|
||||||
|
}
|
||||||
|
if (startup.up !== undefined && startup.up !== '') {
|
||||||
|
arr.push('up=' + startup.up);
|
||||||
|
}
|
||||||
|
if (startup.down !== undefined && startup.down !== '') {
|
||||||
|
arr.push('down=' + startup.down);
|
||||||
|
}
|
||||||
|
|
||||||
|
return arr.join(',');
|
||||||
}
|
}
|
||||||
|
|
||||||
}});
|
}});
|
||||||
|
@ -244,6 +244,25 @@ Ext.define('PVE.Utils', { statics: {
|
|||||||
return data;
|
return data;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
render_kvm_startup: function(value) {
|
||||||
|
var startup = PVE.Parser.parseStartup(value);
|
||||||
|
|
||||||
|
var res = 'order=';
|
||||||
|
if (startup.order === undefined) {
|
||||||
|
res += 'any';
|
||||||
|
} else {
|
||||||
|
res += startup.order;
|
||||||
|
}
|
||||||
|
if (startup.up !== undefined) {
|
||||||
|
res += ',up=' + startup.up;
|
||||||
|
}
|
||||||
|
if (startup.down !== undefined) {
|
||||||
|
res += ',down=' + startup.down;
|
||||||
|
}
|
||||||
|
|
||||||
|
return res;
|
||||||
|
},
|
||||||
|
|
||||||
authOK: function() {
|
authOK: function() {
|
||||||
return Ext.util.Cookies.get('PVEAuthCookie');
|
return Ext.util.Cookies.get('PVEAuthCookie');
|
||||||
},
|
},
|
||||||
@ -419,7 +438,9 @@ Ext.define('PVE.Utils', { statics: {
|
|||||||
imgcopy: ['', gettext('Copy data') ],
|
imgcopy: ['', gettext('Copy data') ],
|
||||||
imgdel: ['', gettext('Erase data') ],
|
imgdel: ['', gettext('Erase data') ],
|
||||||
download: ['', gettext('Download') ],
|
download: ['', gettext('Download') ],
|
||||||
vzdump: ['', gettext('Backup') ]
|
vzdump: ['', gettext('Backup') ],
|
||||||
|
startall: [ '', gettext('Start all VMs and Containers') ],
|
||||||
|
stopall: [ '', gettext('Stop all VMs and Containers') ]
|
||||||
},
|
},
|
||||||
|
|
||||||
format_task_description: function(type, id) {
|
format_task_description: function(type, id) {
|
||||||
|
@ -54,6 +54,13 @@ Ext.define('PVE.qemu.Options', {
|
|||||||
}
|
}
|
||||||
} : undefined
|
} : undefined
|
||||||
},
|
},
|
||||||
|
startup: {
|
||||||
|
header: gettext('Start/Shutdown order'),
|
||||||
|
defaultValue: '',
|
||||||
|
renderer: PVE.Utils.render_kvm_startup,
|
||||||
|
editor: caps.vms['VM.Config.Options'] && caps.nodes['Sys.Modify'] ?
|
||||||
|
'PVE.qemu.StartupEdit' : undefined
|
||||||
|
},
|
||||||
ostype: {
|
ostype: {
|
||||||
header: 'OS Type',
|
header: 'OS Type',
|
||||||
editor: caps.vms['VM.Config.Options'] ? 'PVE.qemu.OSTypeEdit' : undefined,
|
editor: caps.vms['VM.Config.Options'] ? 'PVE.qemu.OSTypeEdit' : undefined,
|
||||||
|
85
www/manager/qemu/StartupEdit.js
Normal file
85
www/manager/qemu/StartupEdit.js
Normal file
@ -0,0 +1,85 @@
|
|||||||
|
Ext.define('PVE.qemu.StartupInputPanel', {
|
||||||
|
extend: 'PVE.panel.InputPanel',
|
||||||
|
|
||||||
|
onGetValues: function(values) {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
var res = PVE.Parser.printStartup(values);
|
||||||
|
|
||||||
|
if (res === undefined || res === '') {
|
||||||
|
return { 'delete': 'startup' };
|
||||||
|
}
|
||||||
|
|
||||||
|
return { startup: res };
|
||||||
|
},
|
||||||
|
|
||||||
|
setStartup: function(value) {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
var startup = PVE.Parser.parseStartup(value);
|
||||||
|
if (startup) {
|
||||||
|
console.dir(startup);
|
||||||
|
me.setValues(startup);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
initComponent : function() {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
me.items = [
|
||||||
|
{
|
||||||
|
xtype: 'textfield',
|
||||||
|
name: 'order',
|
||||||
|
defaultValue: '',
|
||||||
|
emptyText: 'any',
|
||||||
|
fieldLabel: gettext('Start order')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'textfield',
|
||||||
|
name: 'up',
|
||||||
|
defaultValue: '',
|
||||||
|
emptyText: 'default',
|
||||||
|
fieldLabel: gettext('Startup delay')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'textfield',
|
||||||
|
name: 'down',
|
||||||
|
defaultValue: '',
|
||||||
|
emptyText: 'default',
|
||||||
|
fieldLabel: gettext('Shutdown timeout')
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
me.callParent();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Ext.define('PVE.qemu.StartupEdit', {
|
||||||
|
extend: 'PVE.window.Edit',
|
||||||
|
|
||||||
|
initComponent : function() {
|
||||||
|
/*jslint confusion: true */
|
||||||
|
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
var ipanel = Ext.create('PVE.qemu.StartupInputPanel', {});
|
||||||
|
|
||||||
|
Ext.applyIf(me, {
|
||||||
|
subject: gettext('Start/Shutdown order'),
|
||||||
|
fieldDefaults: {
|
||||||
|
labelWidth: 120
|
||||||
|
},
|
||||||
|
items: ipanel
|
||||||
|
});
|
||||||
|
|
||||||
|
me.callParent();
|
||||||
|
|
||||||
|
me.load({
|
||||||
|
success: function(response, options) {
|
||||||
|
var i, confid;
|
||||||
|
me.vmconfig = response.result.data;
|
||||||
|
ipanel.setStartup(me.vmconfig.startup);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
Loading…
Reference in New Issue
Block a user