mirror of
https://git.proxmox.com/git/pve-manager
synced 2025-08-07 14:51:37 +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: '',
|
storage: '',
|
||||||
unprivileged: true,
|
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: {
|
cbindData: {
|
||||||
|
@ -20,9 +20,17 @@ Ext.define('PVE.lxc.MemoryEdit', {
|
|||||||
|
|
||||||
Ext.define('PVE.lxc.CPUEdit', {
|
Ext.define('PVE.lxc.CPUEdit', {
|
||||||
extend: 'Proxmox.window.Edit',
|
extend: 'Proxmox.window.Edit',
|
||||||
|
alias: 'widget.pveLxcCPUEdit',
|
||||||
|
|
||||||
|
viewModel: {
|
||||||
|
data: {
|
||||||
|
cgroupMode: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
initComponent: function() {
|
initComponent: function() {
|
||||||
var me = this;
|
let me = this;
|
||||||
|
me.getViewModel().set('cgroupMode', me.cgroupMode);
|
||||||
|
|
||||||
Ext.apply(me, {
|
Ext.apply(me, {
|
||||||
subject: gettext('CPU'),
|
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', {
|
Ext.define('PVE.lxc.CPUInputPanel', {
|
||||||
extend: 'Proxmox.panel.InputPanel',
|
extend: 'Proxmox.panel.InputPanel',
|
||||||
alias: 'widget.pveLxcCPUInputPanel',
|
alias: 'widget.pveLxcCPUInputPanel',
|
||||||
@ -43,11 +52,19 @@ Ext.define('PVE.lxc.CPUInputPanel', {
|
|||||||
|
|
||||||
insideWizard: false,
|
insideWizard: false,
|
||||||
|
|
||||||
|
viewModel: {
|
||||||
|
formulas: {
|
||||||
|
cpuunitsDefault: (get) => get('cgroupMode') === 1 ? 1024 : 100,
|
||||||
|
cpuunitsMax: (get) => get('cgroupMode') === 1 ? 500000 : 10000,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
onGetValues: function(values) {
|
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, '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;
|
return values;
|
||||||
},
|
},
|
||||||
@ -72,8 +89,12 @@ Ext.define('PVE.lxc.CPUInputPanel', {
|
|||||||
fieldLabel: gettext('CPU units'),
|
fieldLabel: gettext('CPU units'),
|
||||||
value: '',
|
value: '',
|
||||||
minValue: 8,
|
minValue: 8,
|
||||||
maxValue: 500000,
|
maxValue: '10000',
|
||||||
emptyText: '1024',
|
emptyText: '100',
|
||||||
|
bind: {
|
||||||
|
emptyText: '{cpuunitsDefault}',
|
||||||
|
maxValue: '{cpuunitsMax}',
|
||||||
|
},
|
||||||
labelWidth: labelWidth,
|
labelWidth: labelWidth,
|
||||||
deleteEmpty: true,
|
deleteEmpty: true,
|
||||||
allowBlank: true,
|
allowBlank: true,
|
||||||
|
@ -45,6 +45,12 @@ Ext.define('PVE.lxc.RessourceView', {
|
|||||||
|
|
||||||
var mpeditor = caps.vms['VM.Config.Disk'] ? 'PVE.lxc.MountPointEdit' : undefined;
|
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 = {
|
var rows = {
|
||||||
memory: {
|
memory: {
|
||||||
header: gettext('Memory'),
|
header: gettext('Memory'),
|
||||||
@ -68,7 +74,7 @@ Ext.define('PVE.lxc.RessourceView', {
|
|||||||
},
|
},
|
||||||
cores: {
|
cores: {
|
||||||
header: gettext('Cores'),
|
header: gettext('Cores'),
|
||||||
editor: caps.vms['VM.Config.CPU'] ? 'PVE.lxc.CPUEdit' : undefined,
|
editor: caps.vms['VM.Config.CPU'] ? cpuEditor : undefined,
|
||||||
defaultValue: '',
|
defaultValue: '',
|
||||||
tdCls: 'pmx-itype-icon-processor',
|
tdCls: 'pmx-itype-icon-processor',
|
||||||
group: 3,
|
group: 3,
|
||||||
|
@ -10,6 +10,14 @@ Ext.define('PVE.qemu.CreateWizard', {
|
|||||||
scsihw: '',
|
scsihw: '',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
formulas: {
|
||||||
|
cgroupMode: function(get) {
|
||||||
|
const nodeInfo = PVE.data.ResourceStore.getNodes().find(
|
||||||
|
node => node.node === get('nodename'),
|
||||||
|
);
|
||||||
|
return nodeInfo ? nodeInfo['cgroup-mode'] : 2;
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
cbindData: {
|
cbindData: {
|
||||||
|
@ -59,6 +59,12 @@ Ext.define('PVE.qemu.HardwareView', {
|
|||||||
|
|
||||||
let isCloudInitKey = v => v && v.toString().match(/vm-.*-cloudinit/);
|
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 = {
|
let rows = {
|
||||||
memory: {
|
memory: {
|
||||||
header: gettext('Memory'),
|
header: gettext('Memory'),
|
||||||
@ -93,7 +99,7 @@ Ext.define('PVE.qemu.HardwareView', {
|
|||||||
header: gettext('Processors'),
|
header: gettext('Processors'),
|
||||||
never_delete: true,
|
never_delete: true,
|
||||||
editor: caps.vms['VM.Config.CPU'] || caps.vms['VM.Config.HWType']
|
editor: caps.vms['VM.Config.CPU'] || caps.vms['VM.Config.HWType']
|
||||||
? 'PVE.qemu.ProcessorEdit' : undefined,
|
? processorEditor : undefined,
|
||||||
tdCls: 'pve-itype-icon-cpu',
|
tdCls: 'pve-itype-icon-cpu',
|
||||||
group: 3,
|
group: 3,
|
||||||
defaultValue: '1',
|
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', {
|
Ext.define('PVE.qemu.ProcessorInputPanel', {
|
||||||
extend: 'Proxmox.panel.InputPanel',
|
extend: 'Proxmox.panel.InputPanel',
|
||||||
alias: 'widget.pveQemuProcessorPanel',
|
alias: 'widget.pveQemuProcessorPanel',
|
||||||
@ -13,6 +14,9 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
|
|||||||
},
|
},
|
||||||
formulas: {
|
formulas: {
|
||||||
totalCoreCount: get => get('socketCount') * get('coreCount'),
|
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) {
|
onGetValues: function(values) {
|
||||||
var me = this;
|
let me = this;
|
||||||
|
let cpuunitsDefault = me.getViewModel().get('cpuunitsDefault');
|
||||||
|
|
||||||
if (Array.isArray(values.delete)) {
|
if (Array.isArray(values.delete)) {
|
||||||
values.delete = values.delete.join(',');
|
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, '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:
|
// build the cpu options:
|
||||||
me.cpu.cputype = values.cputype;
|
me.cpu.cputype = values.cputype;
|
||||||
@ -210,11 +215,15 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
|
|||||||
xtype: 'proxmoxintegerfield',
|
xtype: 'proxmoxintegerfield',
|
||||||
name: 'cpuunits',
|
name: 'cpuunits',
|
||||||
fieldLabel: gettext('CPU units'),
|
fieldLabel: gettext('CPU units'),
|
||||||
// FIXME: change to [1, 1000] once cgroup v1 support gets removed (PVE 8 ?)
|
minValue: '1',
|
||||||
minValue: 2,
|
maxValue: '10000',
|
||||||
maxValue: 262144,
|
|
||||||
value: '',
|
value: '',
|
||||||
emptyText: '1024',
|
emptyText: '100',
|
||||||
|
bind: {
|
||||||
|
minValue: '{cpuunitsMin}',
|
||||||
|
maxValue: '{cpuunitsMax}',
|
||||||
|
emptyText: '{cpuunitsDefault}',
|
||||||
|
},
|
||||||
deleteEmpty: true,
|
deleteEmpty: true,
|
||||||
allowBlank: true,
|
allowBlank: true,
|
||||||
},
|
},
|
||||||
@ -239,11 +248,19 @@ Ext.define('PVE.qemu.ProcessorInputPanel', {
|
|||||||
|
|
||||||
Ext.define('PVE.qemu.ProcessorEdit', {
|
Ext.define('PVE.qemu.ProcessorEdit', {
|
||||||
extend: 'Proxmox.window.Edit',
|
extend: 'Proxmox.window.Edit',
|
||||||
|
alias: 'widget.pveQemuProcessorEdit',
|
||||||
|
|
||||||
width: 700,
|
width: 700,
|
||||||
|
|
||||||
|
viewModel: {
|
||||||
|
data: {
|
||||||
|
cgroupMode: 2,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
|
||||||
initComponent: function() {
|
initComponent: function() {
|
||||||
var me = this;
|
let me = this;
|
||||||
|
me.getViewModel().set('cgroupMode', me.cgroupMode);
|
||||||
|
|
||||||
var ipanel = Ext.create('PVE.qemu.ProcessorInputPanel');
|
var ipanel = Ext.create('PVE.qemu.ProcessorInputPanel');
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user