mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-07 16:47:46 +00:00
add cpu options form
Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
This commit is contained in:
parent
ca34da232a
commit
e8ee57105f
@ -127,6 +127,7 @@ JSSRC= \
|
|||||||
qemu/HDResize.js \
|
qemu/HDResize.js \
|
||||||
qemu/HDMove.js \
|
qemu/HDMove.js \
|
||||||
qemu/HDThrottle.js \
|
qemu/HDThrottle.js \
|
||||||
|
qemu/CPUOptions.js \
|
||||||
qemu/DisplayEdit.js \
|
qemu/DisplayEdit.js \
|
||||||
qemu/KeyboardEdit.js \
|
qemu/KeyboardEdit.js \
|
||||||
qemu/HardwareView.js \
|
qemu/HardwareView.js \
|
||||||
|
67
www/manager/qemu/CPUOptions.js
Normal file
67
www/manager/qemu/CPUOptions.js
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
Ext.define('PVE.qemu.CPUOptionsInputPanel', {
|
||||||
|
extend: 'PVE.panel.InputPanel',
|
||||||
|
alias: 'widget.PVE.qemu.CPUOptionsInputPanel',
|
||||||
|
|
||||||
|
initComponent : function() {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
var items = [
|
||||||
|
{
|
||||||
|
xtype: 'numberfield',
|
||||||
|
name: 'vcpus',
|
||||||
|
minValue: 1,
|
||||||
|
maxValue: me.maxvcpus,
|
||||||
|
value: '',
|
||||||
|
fieldLabel: gettext('Vcpus'),
|
||||||
|
allowBlank: true,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'numberfield',
|
||||||
|
name: 'cpulimit',
|
||||||
|
minValue: 0,
|
||||||
|
maxValue: me.maxvcpus,
|
||||||
|
value: '',
|
||||||
|
step: 1,
|
||||||
|
fieldLabel: gettext('CPU limit'),
|
||||||
|
allowBlank: false
|
||||||
|
|
||||||
|
},
|
||||||
|
{
|
||||||
|
xtype: 'numberfield',
|
||||||
|
name: 'cpuunits',
|
||||||
|
fieldLabel: gettext('CPU units'),
|
||||||
|
minValue: 8,
|
||||||
|
maxValue: 500000,
|
||||||
|
value: 1024,
|
||||||
|
allowBlank: false
|
||||||
|
}
|
||||||
|
|
||||||
|
];
|
||||||
|
|
||||||
|
me.items = items;
|
||||||
|
|
||||||
|
me.callParent();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Ext.define('PVE.qemu.CPUOptions', {
|
||||||
|
extend: 'PVE.window.Edit',
|
||||||
|
|
||||||
|
initComponent : function() {
|
||||||
|
var me = this;
|
||||||
|
|
||||||
|
var ipanel = Ext.create('PVE.qemu.CPUOptionsInputPanel', {
|
||||||
|
maxvcpus: me.maxvcpus,
|
||||||
|
});
|
||||||
|
|
||||||
|
Ext.apply(me, {
|
||||||
|
subject: gettext('CPU Options'),
|
||||||
|
items: ipanel,
|
||||||
|
width: 150
|
||||||
|
});
|
||||||
|
|
||||||
|
me.callParent();
|
||||||
|
|
||||||
|
me.load();
|
||||||
|
}
|
||||||
|
});
|
@ -64,13 +64,16 @@ Ext.define('PVE.qemu.HardwareView', {
|
|||||||
'PVE.qemu.ProcessorEdit' : undefined,
|
'PVE.qemu.ProcessorEdit' : undefined,
|
||||||
tdCls: 'pve-itype-icon-processor',
|
tdCls: 'pve-itype-icon-processor',
|
||||||
defaultValue: 1,
|
defaultValue: 1,
|
||||||
multiKey: ['sockets', 'cpu', 'cores', 'numa'],
|
multiKey: ['sockets', 'cpu', 'cores', 'numa', 'vcpus', 'cpulimit', 'cpuunits'],
|
||||||
renderer: function(value, metaData, record, rowIndex, colIndex, store, pending) {
|
renderer: function(value, metaData, record, rowIndex, colIndex, store, pending) {
|
||||||
|
|
||||||
var sockets = me.getObjectValue('sockets', 1, pending);
|
var sockets = me.getObjectValue('sockets', 1, pending);
|
||||||
var model = me.getObjectValue('cpu', undefined, pending);
|
var model = me.getObjectValue('cpu', undefined, pending);
|
||||||
var cores = me.getObjectValue('cores', 1, pending);
|
var cores = me.getObjectValue('cores', 1, pending);
|
||||||
var numa = me.getObjectValue('numa', undefined, pending);
|
var numa = me.getObjectValue('numa', undefined, pending);
|
||||||
|
var vcpus = me.getObjectValue('vcpus', undefined, pending);
|
||||||
|
var cpulimit = me.getObjectValue('cpulimit', undefined, pending);
|
||||||
|
var cpuunits = me.getObjectValue('cpuunits', undefined, pending);
|
||||||
|
|
||||||
var res = (sockets*cores) + ' (' + sockets + ' sockets, ' + cores + ' cores)';
|
var res = (sockets*cores) + ' (' + sockets + ' sockets, ' + cores + ' cores)';
|
||||||
|
|
||||||
@ -82,50 +85,21 @@ Ext.define('PVE.qemu.HardwareView', {
|
|||||||
res += ' [numa=' + numa +']';
|
res += ' [numa=' + numa +']';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (vcpus) {
|
||||||
|
res += ' [vcpus=' + vcpus +']';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cpulimit) {
|
||||||
|
res += ' [cpulimit=' + cpulimit +']';
|
||||||
|
}
|
||||||
|
|
||||||
|
if (cpuunits) {
|
||||||
|
res += ' [cpuunits=' + cpuunits +']';
|
||||||
|
}
|
||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
cpulimit: {
|
|
||||||
header: gettext('CPU limit'),
|
|
||||||
never_delete: true,
|
|
||||||
defaultValue: '',
|
|
||||||
renderer: function(value) {
|
|
||||||
if (value && value !== '0') { return value; };
|
|
||||||
return gettext('unlimited');
|
|
||||||
},
|
|
||||||
tdCls: 'pve-itype-icon-processor',
|
|
||||||
editor: caps.vms['VM.Config.CPU'] ? {
|
|
||||||
xtype: 'pveWindowEdit',
|
|
||||||
subject: gettext('CPU limit'),
|
|
||||||
items: {
|
|
||||||
xtype: 'numberfield',
|
|
||||||
name: 'cpulimit',
|
|
||||||
minValue: 0,
|
|
||||||
value: '',
|
|
||||||
step: 1,
|
|
||||||
fieldLabel: gettext('CPU limit')
|
|
||||||
}
|
|
||||||
} : undefined
|
|
||||||
},
|
|
||||||
cpuunits: {
|
|
||||||
header: gettext('CPU units'),
|
|
||||||
never_delete: true,
|
|
||||||
defaultValue: '1024',
|
|
||||||
tdCls: 'pve-itype-icon-processor',
|
|
||||||
editor: caps.vms['VM.Config.CPU'] ? {
|
|
||||||
xtype: 'pveWindowEdit',
|
|
||||||
subject: gettext('CPU units'),
|
|
||||||
items: {
|
|
||||||
xtype: 'numberfield',
|
|
||||||
name: 'cpuunits',
|
|
||||||
fieldLabel: gettext('CPU units'),
|
|
||||||
minValue: 8,
|
|
||||||
maxValue: 500000,
|
|
||||||
value: 1024,
|
|
||||||
allowBlank: false
|
|
||||||
}
|
|
||||||
} : undefined
|
|
||||||
},
|
|
||||||
keyboard: {
|
keyboard: {
|
||||||
header: gettext('Keyboard Layout'),
|
header: gettext('Keyboard Layout'),
|
||||||
never_delete: true,
|
never_delete: true,
|
||||||
@ -156,7 +130,17 @@ Ext.define('PVE.qemu.HardwareView', {
|
|||||||
},
|
},
|
||||||
hotplug: {
|
hotplug: {
|
||||||
visible: false
|
visible: false
|
||||||
|
},
|
||||||
|
vcpus: {
|
||||||
|
visible: false
|
||||||
|
},
|
||||||
|
cpuunits: {
|
||||||
|
visible: false
|
||||||
|
},
|
||||||
|
cpulimit: {
|
||||||
|
visible: false
|
||||||
}
|
}
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
for (i = 0; i < 4; i++) {
|
for (i = 0; i < 4; i++) {
|
||||||
@ -313,6 +297,28 @@ Ext.define('PVE.qemu.HardwareView', {
|
|||||||
win.on('destroy', reload);
|
win.on('destroy', reload);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var run_cpuoptions = function() {
|
||||||
|
var rec = sm.getSelection()[0];
|
||||||
|
if (!rec) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var sockets = me.getObjectValue('sockets', 1);
|
||||||
|
var cores = me.getObjectValue('cores', 1);
|
||||||
|
|
||||||
|
var win = Ext.create('PVE.qemu.CPUOptions', {
|
||||||
|
maxvcpus: sockets * cores,
|
||||||
|
vmid: vmid,
|
||||||
|
pveSelNode: me.pveSelNode,
|
||||||
|
confid: rec.data.key,
|
||||||
|
url: '/api2/extjs/' + baseurl
|
||||||
|
});
|
||||||
|
|
||||||
|
win.show();
|
||||||
|
|
||||||
|
win.on('destroy', reload);
|
||||||
|
};
|
||||||
|
|
||||||
var run_move = function() {
|
var run_move = function() {
|
||||||
var rec = sm.getSelection()[0];
|
var rec = sm.getSelection()[0];
|
||||||
if (!rec) {
|
if (!rec) {
|
||||||
@ -358,6 +364,13 @@ Ext.define('PVE.qemu.HardwareView', {
|
|||||||
handler: run_diskthrottle
|
handler: run_diskthrottle
|
||||||
});
|
});
|
||||||
|
|
||||||
|
var cpuoptions_btn = new PVE.button.Button({
|
||||||
|
text: gettext('CPU options'),
|
||||||
|
selModel: sm,
|
||||||
|
disabled: true,
|
||||||
|
handler: run_cpuoptions
|
||||||
|
});
|
||||||
|
|
||||||
var remove_btn = new PVE.button.Button({
|
var remove_btn = new PVE.button.Button({
|
||||||
text: gettext('Remove'),
|
text: gettext('Remove'),
|
||||||
selModel: sm,
|
selModel: sm,
|
||||||
@ -425,6 +438,7 @@ Ext.define('PVE.qemu.HardwareView', {
|
|||||||
resize_btn.disable();
|
resize_btn.disable();
|
||||||
move_btn.disable();
|
move_btn.disable();
|
||||||
diskthrottle_btn.disable();
|
diskthrottle_btn.disable();
|
||||||
|
cpuoptions_btn.disable();
|
||||||
revert_btn.disable();
|
revert_btn.disable();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -446,7 +460,10 @@ Ext.define('PVE.qemu.HardwareView', {
|
|||||||
|
|
||||||
diskthrottle_btn.setDisabled(pending || !isDisk);
|
diskthrottle_btn.setDisabled(pending || !isDisk);
|
||||||
|
|
||||||
|
cpuoptions_btn.setDisabled(rowdef.tdCls != 'pve-itype-icon-processor');
|
||||||
|
|
||||||
revert_btn.setDisabled(!pending);
|
revert_btn.setDisabled(!pending);
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
Ext.applyIf(me, {
|
Ext.applyIf(me, {
|
||||||
@ -506,6 +523,7 @@ Ext.define('PVE.qemu.HardwareView', {
|
|||||||
resize_btn,
|
resize_btn,
|
||||||
move_btn,
|
move_btn,
|
||||||
diskthrottle_btn,
|
diskthrottle_btn,
|
||||||
|
cpuoptions_btn,
|
||||||
revert_btn
|
revert_btn
|
||||||
],
|
],
|
||||||
rows: rows,
|
rows: rows,
|
||||||
|
Loading…
Reference in New Issue
Block a user