From: Fiona Ebner <f.ebner@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH manager 5/5] ui: lxc/qemu: cpu edit: make cpuunits depend on node's cgroup version
Date: Fri, 7 Oct 2022 14:41:56 +0200 [thread overview]
Message-ID: <20221007124156.110246-20-f.ebner@proxmox.com> (raw)
In-Reply-To: <20221007124156.110246-1-f.ebner@proxmox.com>
Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
---
www/manager6/lxc/CreateWizard.js | 8 ++++++++
www/manager6/lxc/ResourceEdit.js | 31 +++++++++++++++++++++++++-----
www/manager6/lxc/Resources.js | 8 +++++++-
www/manager6/qemu/CreateWizard.js | 8 ++++++++
www/manager6/qemu/HardwareView.js | 8 +++++++-
www/manager6/qemu/ProcessorEdit.js | 31 +++++++++++++++++++++++-------
6 files changed, 80 insertions(+), 14 deletions(-)
diff --git a/www/manager6/lxc/CreateWizard.js b/www/manager6/lxc/CreateWizard.js
index 1f902c2c..0b82cc1c 100644
--- a/www/manager6/lxc/CreateWizard.js
+++ b/www/manager6/lxc/CreateWizard.js
@@ -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: {
diff --git a/www/manager6/lxc/ResourceEdit.js b/www/manager6/lxc/ResourceEdit.js
index 42357d85..9f4f7e08 100644
--- a/www/manager6/lxc/ResourceEdit.js
+++ b/www/manager6/lxc/ResourceEdit.js
@@ -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,
diff --git a/www/manager6/lxc/Resources.js b/www/manager6/lxc/Resources.js
index 4b2ae95e..85112345 100644
--- a/www/manager6/lxc/Resources.js
+++ b/www/manager6/lxc/Resources.js
@@ -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,
diff --git a/www/manager6/qemu/CreateWizard.js b/www/manager6/qemu/CreateWizard.js
index a785a882..a65067ea 100644
--- a/www/manager6/qemu/CreateWizard.js
+++ b/www/manager6/qemu/CreateWizard.js
@@ -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: {
diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
index 6e9d03b4..eb069b30 100644
--- a/www/manager6/qemu/HardwareView.js
+++ b/www/manager6/qemu/HardwareView.js
@@ -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',
diff --git a/www/manager6/qemu/ProcessorEdit.js b/www/manager6/qemu/ProcessorEdit.js
index 2edfc65c..601f3edf 100644
--- a/www/manager6/qemu/ProcessorEdit.js
+++ b/www/manager6/qemu/ProcessorEdit.js
@@ -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,14 +25,15 @@ 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(',');
}
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;
@@ -187,11 +192,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,
},
@@ -216,11 +225,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');
--
2.30.2
next prev parent reply other threads:[~2022-10-07 12:43 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-10-07 12:41 [pve-devel] [PATCH-SERIES docs/(guest-)common/qemu-server/container/manager] cpuunits improvements Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [PATCH docs 1/2] qm: resource limits: update systemd setting name for cpuunits Fiona Ebner
2022-10-19 12:04 ` [pve-devel] applied: " Thomas Lamprecht
2022-10-07 12:41 ` [pve-devel] [PATCH docs 2/2] pct/qm: update cpuunits default Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [PATCH guest-common 1/1] helpers: move get_cpuunits helper from qemu-server Fiona Ebner
2022-10-19 12:04 ` Thomas Lamprecht
2022-10-07 12:41 ` [pve-devel] [PATCH container 1/7] config: cpuunits: drop description for outdated special value Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [PATCH container 2/7] change cpu shares: hard-code cgroupv1 default parameter Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [PATCH container 3/7] config: cpuunits: update default description Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [PATCH container 4/7] use helper from guest-common for cpuunits Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [PATCH container 5/7] config: replace mentions of "VM" with "container" Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [RFC container 6/7] change cpu shares: drop superfluous parameter Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [RFC container 7/7] api: create/update vm: clamp cpuunit value Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [PATCH qemu-server 1/3] move get_cpuunits helper to guest-common Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [RFC qemu-server 2/3] change cpu shares: drop superfluous parameter Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [RFC qemu-server 3/3] api: create/update vm: clamp cpuunit value Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [RFC common 1/1] change cpu shares: drop unused $cgroupv1_default parameter Fiona Ebner
2022-11-07 15:30 ` [pve-devel] applied: " Thomas Lamprecht
2022-10-07 12:41 ` [pve-devel] [PATCH manager 1/5] ui: lxc: cpu edit: drop superfluous delete_if_default Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [PATCH manager 2/5] ui: qemu/lxc: cpu edit: fix 'create' parameter for delete_if_default() Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [PATCH manager 3/5] ui: lxc/qemu: cpu edit: use emptyText for cpuunits Fiona Ebner
2022-10-07 12:41 ` [pve-devel] [PATCH v2 manager 4/5] cluster resources: add cgroup-mode to node properties Fiona Ebner
2022-11-02 12:24 ` Fiona Ebner
2022-10-07 12:41 ` Fiona Ebner [this message]
2022-11-08 15:27 ` [pve-devel] partially-applied-series: [PATCH-SERIES docs/(guest-)common/qemu-server/container/manager] cpuunits improvements Thomas Lamprecht
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20221007124156.110246-20-f.ebner@proxmox.com \
--to=f.ebner@proxmox.com \
--cc=pve-devel@lists.proxmox.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.