mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-03 01:19:27 +00:00
ui: lxc/qemu: cpu edit: make cpuunits depend on node's cgroup version
so that the default value and limits actually correspond to what will be used. Defaults to values for cgroup v2, because that is the more common scenario. Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
This commit is contained in:
parent
7060a39316
commit
5a2e333c9e
@ -8,6 +8,14 @@ Ext.define('PVE.lxc.CreateWizard', {
|
||||
storage: '',
|
||||
unprivileged: true,
|
||||
},
|
||||
formulas: {
|
||||
cgroupMode: function(get) {
|
||||
const nodeInfo = PVE.data.ResourceStore.getNodes().find(
|
||||
node => node.node === get('nodename'),
|
||||
);
|
||||
return nodeInfo ? nodeInfo['cgroup-mode'] : 2;
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
cbindData: {
|
||||
|
@ -20,9 +20,17 @@ Ext.define('PVE.lxc.MemoryEdit', {
|
||||
|
||||
Ext.define('PVE.lxc.CPUEdit', {
|
||||
extend: 'Proxmox.window.Edit',
|
||||
alias: 'widget.pveLxcCPUEdit',
|
||||
|
||||
viewModel: {
|
||||
data: {
|
||||
cgroupMode: 2,
|
||||
},
|
||||
},
|
||||
|
||||
initComponent: function() {
|
||||
var me = this;
|
||||
let me = this;
|
||||
me.getViewModel().set('cgroupMode', me.cgroupMode);
|
||||
|
||||
Ext.apply(me, {
|
||||
subject: gettext('CPU'),
|
||||
@ -35,6 +43,7 @@ Ext.define('PVE.lxc.CPUEdit', {
|
||||
},
|
||||
});
|
||||
|
||||
// The view model of the parent shoul contain a 'cgroupMode' variable (or params for v2 are used).
|
||||
Ext.define('PVE.lxc.CPUInputPanel', {
|
||||
extend: 'Proxmox.panel.InputPanel',
|
||||
alias: 'widget.pveLxcCPUInputPanel',
|
||||
@ -43,11 +52,19 @@ Ext.define('PVE.lxc.CPUInputPanel', {
|
||||
|
||||
insideWizard: false,
|
||||
|
||||
viewModel: {
|
||||
formulas: {
|
||||
cpuunitsDefault: (get) => get('cgroupMode') === 1 ? 1024 : 100,
|
||||
cpuunitsMax: (get) => get('cgroupMode') === 1 ? 500000 : 10000,
|
||||
},
|
||||
},
|
||||
|
||||
onGetValues: function(values) {
|
||||
var me = this;
|
||||
let me = this;
|
||||
let cpuunitsDefault = me.getViewModel().get('cpuunitsDefault');
|
||||
|
||||
PVE.Utils.delete_if_default(values, 'cpulimit', '0', me.insideWizard);
|
||||
PVE.Utils.delete_if_default(values, 'cpuunits', '1024', me.insideWizard);
|
||||
PVE.Utils.delete_if_default(values, 'cpuunits', `${cpuunitsDefault}`, me.insideWizard);
|
||||
|
||||
return values;
|
||||
},
|
||||
@ -72,8 +89,12 @@ Ext.define('PVE.lxc.CPUInputPanel', {
|
||||
fieldLabel: gettext('CPU units'),
|
||||
value: '',
|
||||
minValue: 8,
|
||||
maxValue: 500000,
|
||||
emptyText: '1024',
|
||||
maxValue: '10000',
|
||||
emptyText: '100',
|
||||
bind: {
|
||||
emptyText: '{cpuunitsDefault}',
|
||||
maxValue: '{cpuunitsMax}',
|
||||
},
|
||||
labelWidth: labelWidth,
|
||||
deleteEmpty: true,
|
||||
allowBlank: true,
|
||||
|
@ -45,6 +45,12 @@ Ext.define('PVE.lxc.RessourceView', {
|
||||
|
||||
var mpeditor = caps.vms['VM.Config.Disk'] ? 'PVE.lxc.MountPointEdit' : undefined;
|
||||
|
||||
const nodeInfo = PVE.data.ResourceStore.getNodes().find(node => node.node === nodename);
|
||||
let cpuEditor = {
|
||||
xtype: 'pveLxcCPUEdit',
|
||||
cgroupMode: nodeInfo['cgroup-mode'],
|
||||
};
|
||||
|
||||
var rows = {
|
||||
memory: {
|
||||
header: gettext('Memory'),
|
||||
@ -68,7 +74,7 @@ Ext.define('PVE.lxc.RessourceView', {
|
||||
},
|
||||
cores: {
|
||||
header: gettext('Cores'),
|
||||
editor: caps.vms['VM.Config.CPU'] ? 'PVE.lxc.CPUEdit' : undefined,
|
||||
editor: caps.vms['VM.Config.CPU'] ? cpuEditor : undefined,
|
||||
defaultValue: '',
|
||||
tdCls: 'pmx-itype-icon-processor',
|
||||
group: 3,
|
||||
|
@ -10,6 +10,14 @@ Ext.define('PVE.qemu.CreateWizard', {
|
||||
scsihw: '',
|
||||
},
|
||||
},
|
||||
formulas: {
|
||||
cgroupMode: function(get) {
|
||||
const nodeInfo = PVE.data.ResourceStore.getNodes().find(
|
||||
node => node.node === get('nodename'),
|
||||
);
|
||||
return nodeInfo ? nodeInfo['cgroup-mode'] : 2;
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
cbindData: {
|
||||
|
@ -59,6 +59,12 @@ Ext.define('PVE.qemu.HardwareView', {
|
||||
|
||||
let isCloudInitKey = v => v && v.toString().match(/vm-.*-cloudinit/);
|
||||
|
||||
const nodeInfo = PVE.data.ResourceStore.getNodes().find(node => node.node === nodename);
|
||||
let processorEditor = {
|
||||
xtype: 'pveQemuProcessorEdit',
|
||||
cgroupMode: nodeInfo['cgroup-mode'],
|
||||
};
|
||||
|
||||
let rows = {
|
||||
memory: {
|
||||
header: gettext('Memory'),
|
||||
@ -93,7 +99,7 @@ Ext.define('PVE.qemu.HardwareView', {
|
||||
header: gettext('Processors'),
|
||||
never_delete: true,
|
||||
editor: caps.vms['VM.Config.CPU'] || caps.vms['VM.Config.HWType']
|
||||
? 'PVE.qemu.ProcessorEdit' : undefined,
|
||||
? processorEditor : undefined,
|
||||
tdCls: 'pve-itype-icon-cpu',
|
||||
group: 3,
|
||||
defaultValue: '1',
|
||||
|
@ -1,3 +1,4 @@
|
||||
// The view model of the parent shoul contain a 'cgroupMode' variable (or params for v2 are used).
|
||||
Ext.define('PVE.qemu.ProcessorInputPanel', {
|
||||
extend: 'Proxmox.panel.InputPanel',
|
||||
alias: 'widget.pveQemuProcessorPanel',
|
||||
@ -13,6 +14,9 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
|
||||
},
|
||||
formulas: {
|
||||
totalCoreCount: get => get('socketCount') * get('coreCount'),
|
||||
cpuunitsDefault: (get) => get('cgroupMode') === 1 ? 1024 : 100,
|
||||
cpuunitsMin: (get) => get('cgroupMode') === 1 ? 2 : 1,
|
||||
cpuunitsMax: (get) => get('cgroupMode') === 1 ? 262144 : 10000,
|
||||
},
|
||||
},
|
||||
|
||||
@ -21,7 +25,8 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
|
||||
},
|
||||
|
||||
onGetValues: function(values) {
|
||||
var me = this;
|
||||
let me = this;
|
||||
let cpuunitsDefault = me.getViewModel().get('cpuunitsDefault');
|
||||
|
||||
if (Array.isArray(values.delete)) {
|
||||
values.delete = values.delete.join(',');
|
||||
@ -39,7 +44,7 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
|
||||
}
|
||||
|
||||
PVE.Utils.delete_if_default(values, 'cpulimit', '0', me.insideWizard);
|
||||
PVE.Utils.delete_if_default(values, 'cpuunits', '1024', me.insideWizard);
|
||||
PVE.Utils.delete_if_default(values, 'cpuunits', `${cpuunitsDefault}`, me.insideWizard);
|
||||
|
||||
// build the cpu options:
|
||||
me.cpu.cputype = values.cputype;
|
||||
@ -210,11 +215,15 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
|
||||
xtype: 'proxmoxintegerfield',
|
||||
name: 'cpuunits',
|
||||
fieldLabel: gettext('CPU units'),
|
||||
// FIXME: change to [1, 1000] once cgroup v1 support gets removed (PVE 8 ?)
|
||||
minValue: 2,
|
||||
maxValue: 262144,
|
||||
minValue: '1',
|
||||
maxValue: '10000',
|
||||
value: '',
|
||||
emptyText: '1024',
|
||||
emptyText: '100',
|
||||
bind: {
|
||||
minValue: '{cpuunitsMin}',
|
||||
maxValue: '{cpuunitsMax}',
|
||||
emptyText: '{cpuunitsDefault}',
|
||||
},
|
||||
deleteEmpty: true,
|
||||
allowBlank: true,
|
||||
},
|
||||
@ -239,11 +248,19 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
|
||||
|
||||
Ext.define('PVE.qemu.ProcessorEdit', {
|
||||
extend: 'Proxmox.window.Edit',
|
||||
alias: 'widget.pveQemuProcessorEdit',
|
||||
|
||||
width: 700,
|
||||
|
||||
viewModel: {
|
||||
data: {
|
||||
cgroupMode: 2,
|
||||
},
|
||||
},
|
||||
|
||||
initComponent: function() {
|
||||
var me = this;
|
||||
let me = this;
|
||||
me.getViewModel().set('cgroupMode', me.cgroupMode);
|
||||
|
||||
var ipanel = Ext.create('PVE.qemu.ProcessorInputPanel');
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user