* [pve-devel] [PATCH manager v3 1/6] ui: vm: change var to let in CDROM and CloudInit edit modals
2024-10-23 12:37 [pve-devel] [PATCH manager v3 0/6] fix #5430: ocfs2 io_uring read write Daniel Kral
@ 2024-10-23 12:37 ` Daniel Kral
2024-10-23 12:37 ` [pve-devel] [PATCH manager v3 2/6] ui: vm: improve code readability of " Daniel Kral
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Daniel Kral @ 2024-10-23 12:37 UTC (permalink / raw)
To: pve-devel
Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
www/manager6/qemu/CDEdit.js | 35 +++++++++++++++++---------------
www/manager6/qemu/CIDriveEdit.js | 20 ++++++++++--------
2 files changed, 31 insertions(+), 24 deletions(-)
diff --git a/www/manager6/qemu/CDEdit.js b/www/manager6/qemu/CDEdit.js
index 3cc16205..fd8e5233 100644
--- a/www/manager6/qemu/CDEdit.js
+++ b/www/manager6/qemu/CDEdit.js
@@ -5,9 +5,10 @@ Ext.define('PVE.qemu.CDInputPanel', {
insideWizard: false,
onGetValues: function(values) {
- var me = this;
+ let me = this;
- var confid = me.confid || values.controller + values.deviceid;
+ let params = {};
+ let confid = me.confid || values.controller + values.deviceid;
me.drive.media = 'cdrom';
if (values.mediaType === 'iso') {
@@ -18,15 +19,13 @@ Ext.define('PVE.qemu.CDInputPanel', {
me.drive.file = 'none';
}
- var params = {};
-
params[confid] = PVE.Parser.printQemuDrive(me.drive);
return params;
},
setVMConfig: function(vmconfig) {
- var me = this;
+ let me = this;
if (me.bussel) {
me.bussel.setVMConfig(vmconfig, 'cdrom');
@@ -34,9 +33,10 @@ Ext.define('PVE.qemu.CDInputPanel', {
},
setDrive: function(drive) {
- var me = this;
+ let me = this;
+
+ let values = {};
- var values = {};
if (drive.file === 'cdrom') {
values.mediaType = 'cdrom';
} else if (drive.file === 'none') {
@@ -52,17 +52,17 @@ Ext.define('PVE.qemu.CDInputPanel', {
},
setNodename: function(nodename) {
- var me = this;
+ let me = this;
me.isosel.setNodename(nodename);
},
initComponent: function() {
- var me = this;
+ let me = this;
me.drive = {};
- var items = [];
+ let items = [];
if (!me.confid) {
me.bussel = Ext.create('PVE.form.ControllerSelector', {
@@ -82,7 +82,7 @@ Ext.define('PVE.qemu.CDInputPanel', {
if (!me.rendered) {
return;
}
- var cdImageField = me.down('pveIsoSelector');
+ let cdImageField = me.down('pveIsoSelector');
cdImageField.setDisabled(!value);
if (value) {
cdImageField.validate();
@@ -128,16 +128,16 @@ Ext.define('PVE.qemu.CDEdit', {
width: 400,
initComponent: function() {
- var me = this;
+ let me = this;
- var nodename = me.pveSelNode.data.node;
+ let nodename = me.pveSelNode.data.node;
if (!nodename) {
throw "no node name specified";
}
me.isCreate = !me.confid;
- var ipanel = Ext.create('PVE.qemu.CDInputPanel', {
+ let ipanel = Ext.create('PVE.qemu.CDInputPanel', {
confid: me.confid,
nodename: nodename,
});
@@ -152,14 +152,17 @@ Ext.define('PVE.qemu.CDEdit', {
me.load({
success: function(response, options) {
ipanel.setVMConfig(response.result.data);
+
if (me.confid) {
- var value = response.result.data[me.confid];
- var drive = PVE.Parser.parseQemuDrive(me.confid, value);
+ let value = response.result.data[me.confid];
+ let drive = PVE.Parser.parseQemuDrive(me.confid, value);
+
if (!drive) {
Ext.Msg.alert('Error', 'Unable to parse drive options');
me.close();
return;
}
+
ipanel.setDrive(drive);
}
},
diff --git a/www/manager6/qemu/CIDriveEdit.js b/www/manager6/qemu/CIDriveEdit.js
index a9ca8bf1..a8f57963 100644
--- a/www/manager6/qemu/CIDriveEdit.js
+++ b/www/manager6/qemu/CIDriveEdit.js
@@ -7,29 +7,33 @@ Ext.define('PVE.qemu.CIDriveInputPanel', {
vmconfig: {}, // used to select usused disks
onGetValues: function(values) {
- var me = this;
+ let me = this;
+
+ let drive = {};
+ let params = {};
- var drive = {};
- var params = {};
drive.file = values.hdstorage + ":cloudinit";
drive.format = values.diskformat;
params[values.controller + values.deviceid] = PVE.Parser.printQemuDrive(drive);
+
return params;
},
setNodename: function(nodename) {
- var me = this;
+ let me = this;
+
me.down('#hdstorage').setNodename(nodename);
me.down('#hdimage').setStorage(undefined, nodename);
},
setVMConfig: function(config) {
- var me = this;
+ let me = this;
+
me.down('#drive').setVMConfig(config, 'cdrom');
},
initComponent: function() {
- var me = this;
+ let me = this;
me.drive = {};
@@ -61,9 +65,9 @@ Ext.define('PVE.qemu.CIDriveEdit', {
subject: gettext('CloudInit Drive'),
initComponent: function() {
- var me = this;
+ let me = this;
- var nodename = me.pveSelNode.data.node;
+ let nodename = me.pveSelNode.data.node;
if (!nodename) {
throw "no node name specified";
}
--
2.39.5
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* [pve-devel] [PATCH manager v3 2/6] ui: vm: improve code readability of CDROM and CloudInit edit modals
2024-10-23 12:37 [pve-devel] [PATCH manager v3 0/6] fix #5430: ocfs2 io_uring read write Daniel Kral
2024-10-23 12:37 ` [pve-devel] [PATCH manager v3 1/6] ui: vm: change var to let in CDROM and CloudInit edit modals Daniel Kral
@ 2024-10-23 12:37 ` Daniel Kral
2024-10-23 12:37 ` [pve-devel] [PATCH manager v3 3/6] ui: vm: factor out async I/O type selector Daniel Kral
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Daniel Kral @ 2024-10-23 12:37 UTC (permalink / raw)
To: pve-devel
Improves the readability of the CDROM and CloudInit edit modals by
making them consistent with each other, i.e. having more readable
variable names and storing significant subcomponents in variables.
This does not intend any functional changes in the behavior or
appearance of either component.
Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
www/manager6/qemu/CDEdit.js | 14 ++++-----
www/manager6/qemu/CIDriveEdit.js | 54 ++++++++++++++++++--------------
2 files changed, 37 insertions(+), 31 deletions(-)
diff --git a/www/manager6/qemu/CDEdit.js b/www/manager6/qemu/CDEdit.js
index fd8e5233..d26d8631 100644
--- a/www/manager6/qemu/CDEdit.js
+++ b/www/manager6/qemu/CDEdit.js
@@ -27,8 +27,8 @@ Ext.define('PVE.qemu.CDInputPanel', {
setVMConfig: function(vmconfig) {
let me = this;
- if (me.bussel) {
- me.bussel.setVMConfig(vmconfig, 'cdrom');
+ if (me.busSelector) {
+ me.busSelector.setVMConfig(vmconfig, 'cdrom');
}
},
@@ -54,7 +54,7 @@ Ext.define('PVE.qemu.CDInputPanel', {
setNodename: function(nodename) {
let me = this;
- me.isosel.setNodename(nodename);
+ me.isoSelector.setNodename(nodename);
},
initComponent: function() {
@@ -65,10 +65,10 @@ Ext.define('PVE.qemu.CDInputPanel', {
let items = [];
if (!me.confid) {
- me.bussel = Ext.create('PVE.form.ControllerSelector', {
+ me.busSelector = Ext.create('PVE.form.ControllerSelector', {
withVirtIO: false,
});
- items.push(me.bussel);
+ items.push(me.busSelector);
}
items.push({
@@ -94,13 +94,13 @@ Ext.define('PVE.qemu.CDInputPanel', {
});
- me.isosel = Ext.create('PVE.form.IsoSelector', {
+ me.isoSelector = Ext.create('PVE.form.IsoSelector', {
nodename: me.nodename,
insideWizard: me.insideWizard,
name: 'cdimage',
});
- items.push(me.isosel);
+ items.push(me.isoSelector);
items.push({
xtype: 'radiofield',
diff --git a/www/manager6/qemu/CIDriveEdit.js b/www/manager6/qemu/CIDriveEdit.js
index a8f57963..006f9565 100644
--- a/www/manager6/qemu/CIDriveEdit.js
+++ b/www/manager6/qemu/CIDriveEdit.js
@@ -11,10 +11,12 @@ Ext.define('PVE.qemu.CIDriveInputPanel', {
let drive = {};
let params = {};
+ let confid = values.controller + values.deviceid;
drive.file = values.hdstorage + ":cloudinit";
drive.format = values.diskformat;
- params[values.controller + values.deviceid] = PVE.Parser.printQemuDrive(drive);
+
+ params[confid] = PVE.Parser.printQemuDrive(drive);
return params;
},
@@ -29,7 +31,7 @@ Ext.define('PVE.qemu.CIDriveInputPanel', {
setVMConfig: function(config) {
let me = this;
- me.down('#drive').setVMConfig(config, 'cdrom');
+ me.busSelector.setVMConfig(config, 'cdrom');
},
initComponent: function() {
@@ -37,22 +39,24 @@ Ext.define('PVE.qemu.CIDriveInputPanel', {
me.drive = {};
- me.items = [
- {
- xtype: 'pveControllerSelector',
- withVirtIO: false,
- itemId: 'drive',
- fieldLabel: gettext('CloudInit Drive'),
- name: 'drive',
- },
- {
- xtype: 'pveDiskStorageSelector',
- itemId: 'storselector',
- storageContent: 'images',
- nodename: me.nodename,
- hideSize: true,
- },
- ];
+ let items = [];
+
+ me.busSelector = Ext.create('PVE.form.ControllerSelector', {
+ withVirtIO: false,
+ fieldLabel: gettext('CloudInit Drive'),
+ });
+
+ items.push(me.busSelector);
+ items.push({
+ xtype: 'pveDiskStorageSelector',
+ itemId: 'storselector',
+ storageContent: 'images',
+ nodename: me.nodename,
+ hideSize: true,
+ });
+
+ me.items = items;
+
me.callParent();
},
});
@@ -62,7 +66,6 @@ Ext.define('PVE.qemu.CIDriveEdit', {
xtype: 'pveCIDriveEdit',
isCreate: true,
- subject: gettext('CloudInit Drive'),
initComponent: function() {
let me = this;
@@ -72,17 +75,20 @@ Ext.define('PVE.qemu.CIDriveEdit', {
throw "no node name specified";
}
- me.items = [{
- xtype: 'pveCIDriveInputPanel',
- itemId: 'cipanel',
+ let ipanel = Ext.create('PVE.qemu.CIDriveInputPanel', {
nodename: nodename,
- }];
+ });
+
+ Ext.applyIf(me, {
+ subject: gettext('CloudInit Drive'),
+ items: [ipanel],
+ });
me.callParent();
me.load({
success: function(response, opts) {
- me.down('#cipanel').setVMConfig(response.result.data);
+ ipanel.setVMConfig(response.result.data);
},
});
},
--
2.39.5
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* [pve-devel] [PATCH manager v3 3/6] ui: vm: factor out async I/O type selector
2024-10-23 12:37 [pve-devel] [PATCH manager v3 0/6] fix #5430: ocfs2 io_uring read write Daniel Kral
2024-10-23 12:37 ` [pve-devel] [PATCH manager v3 1/6] ui: vm: change var to let in CDROM and CloudInit edit modals Daniel Kral
2024-10-23 12:37 ` [pve-devel] [PATCH manager v3 2/6] ui: vm: improve code readability of " Daniel Kral
@ 2024-10-23 12:37 ` Daniel Kral
2024-10-23 12:37 ` [pve-devel] [PATCH manager v3 4/6] fix #5430: ui: vm: allow editing cdrom aio and cache options Daniel Kral
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Daniel Kral @ 2024-10-23 12:37 UTC (permalink / raw)
To: pve-devel
Factors out the combo box used for the Async I/O combo box selector,
which is used in the Disk Edit modal window in the VM "Hardware" tab and
the "Disks" tab in the Create Wizard, to reuse it in a future commit.
Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
www/manager6/Makefile | 1 +
www/manager6/form/AsyncIOTypeSelector.js | 10 ++++++++++
www/manager6/qemu/HDEdit.js | 10 ++--------
3 files changed, 13 insertions(+), 8 deletions(-)
create mode 100644 www/manager6/form/AsyncIOTypeSelector.js
diff --git a/www/manager6/Makefile b/www/manager6/Makefile
index 2c3a822b..74a61aa8 100644
--- a/www/manager6/Makefile
+++ b/www/manager6/Makefile
@@ -21,6 +21,7 @@ JSSRC= \
form/ACMEAccountSelector.js \
form/ACMEPluginSelector.js \
form/AgentFeatureSelector.js \
+ form/AsyncIOTypeSelector.js \
form/BackupCompressionSelector.js \
form/BackupModeSelector.js \
form/BandwidthSelector.js \
diff --git a/www/manager6/form/AsyncIOTypeSelector.js b/www/manager6/form/AsyncIOTypeSelector.js
new file mode 100644
index 00000000..f36b0eb3
--- /dev/null
+++ b/www/manager6/form/AsyncIOTypeSelector.js
@@ -0,0 +1,10 @@
+Ext.define('PVE.form.AsyncIOTypeSelector', {
+ extend: 'Proxmox.form.KVComboBox',
+ alias: ['widget.pveAsyncIoTypeSelector'],
+ comboItems: [
+ ['__default__', Proxmox.Utils.defaultText + ' (io_uring)'],
+ ['io_uring', 'io_uring'],
+ ['native', 'native'],
+ ['threads', 'threads'],
+ ],
+});
diff --git a/www/manager6/qemu/HDEdit.js b/www/manager6/qemu/HDEdit.js
index b78647ec..1c3f1b1d 100644
--- a/www/manager6/qemu/HDEdit.js
+++ b/www/manager6/qemu/HDEdit.js
@@ -306,17 +306,11 @@ Ext.define('PVE.qemu.HDInputPanel', {
name: 'noreplicate',
},
{
- xtype: 'proxmoxKVComboBox',
+ xtype: 'pveAsyncIoTypeSelector',
name: 'aio',
+ value: '__default__',
fieldLabel: gettext('Async IO'),
allowBlank: false,
- value: '__default__',
- comboItems: [
- ['__default__', Proxmox.Utils.defaultText + ' (io_uring)'],
- ['io_uring', 'io_uring'],
- ['native', 'native'],
- ['threads', 'threads'],
- ],
},
);
--
2.39.5
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* [pve-devel] [PATCH manager v3 4/6] fix #5430: ui: vm: allow editing cdrom aio and cache options
2024-10-23 12:37 [pve-devel] [PATCH manager v3 0/6] fix #5430: ocfs2 io_uring read write Daniel Kral
` (2 preceding siblings ...)
2024-10-23 12:37 ` [pve-devel] [PATCH manager v3 3/6] ui: vm: factor out async I/O type selector Daniel Kral
@ 2024-10-23 12:37 ` Daniel Kral
2024-10-23 12:37 ` [pve-devel] [PATCH manager v3 5/6] ui: vm: make cloudinit drive editable Daniel Kral
2024-10-23 12:37 ` [pve-devel] [PATCH manager v3 6/6] fix #5430: ui: vm: allow editing cloudinit aio and cache options Daniel Kral
5 siblings, 0 replies; 7+ messages in thread
From: Daniel Kral @ 2024-10-23 12:37 UTC (permalink / raw)
To: pve-devel
Adds cache and async I/O selectors to the CDROM Drive Edit modal in the
"Hardware" tab. This allows users to set these options in the WebGUI
when the VM fails to start because the underlying storage (driver) does
not support a specific set of configurations.
To accommodate the new fields in the modal, the total width is increased
here, so that the fields' content is visible.
Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
www/manager6/qemu/CDEdit.js | 29 ++++++++++++++++++++++++++++-
1 file changed, 28 insertions(+), 1 deletion(-)
diff --git a/www/manager6/qemu/CDEdit.js b/www/manager6/qemu/CDEdit.js
index d26d8631..f98fe0f9 100644
--- a/www/manager6/qemu/CDEdit.js
+++ b/www/manager6/qemu/CDEdit.js
@@ -19,6 +19,9 @@ Ext.define('PVE.qemu.CDInputPanel', {
me.drive.file = 'none';
}
+ PVE.Utils.propertyStringSet(me.drive, values.cache, 'cache');
+ PVE.Utils.propertyStringSet(me.drive, values.aio, 'aio');
+
params[confid] = PVE.Parser.printQemuDrive(me.drive);
return params;
@@ -46,6 +49,9 @@ Ext.define('PVE.qemu.CDInputPanel', {
values.cdimage = drive.file;
}
+ values.cache = drive.cache || '__default__';
+ values.aio = drive.aio || '__default__';
+
me.drive = drive;
me.setValues(values);
@@ -118,6 +124,27 @@ Ext.define('PVE.qemu.CDInputPanel', {
me.items = items;
+ // those are only useful for specific niche use cases
+ if (!me.insideWizard) {
+ me.advancedColumn1 = [
+ {
+ xtype: 'CacheTypeSelector',
+ name: 'cache',
+ value: '__default__',
+ fieldLabel: gettext('Cache'),
+ },
+ ];
+ me.advancedColumn2 = [
+ {
+ xtype: 'pveAsyncIoTypeSelector',
+ name: 'aio',
+ value: '__default__',
+ fieldLabel: gettext('Async IO'),
+ allowBlank: false,
+ },
+ ];
+ }
+
me.callParent();
},
});
@@ -125,7 +152,7 @@ Ext.define('PVE.qemu.CDInputPanel', {
Ext.define('PVE.qemu.CDEdit', {
extend: 'Proxmox.window.Edit',
- width: 400,
+ width: 550,
initComponent: function() {
let me = this;
--
2.39.5
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* [pve-devel] [PATCH manager v3 5/6] ui: vm: make cloudinit drive editable
2024-10-23 12:37 [pve-devel] [PATCH manager v3 0/6] fix #5430: ocfs2 io_uring read write Daniel Kral
` (3 preceding siblings ...)
2024-10-23 12:37 ` [pve-devel] [PATCH manager v3 4/6] fix #5430: ui: vm: allow editing cdrom aio and cache options Daniel Kral
@ 2024-10-23 12:37 ` Daniel Kral
2024-10-23 12:37 ` [pve-devel] [PATCH manager v3 6/6] fix #5430: ui: vm: allow editing cloudinit aio and cache options Daniel Kral
5 siblings, 0 replies; 7+ messages in thread
From: Daniel Kral @ 2024-10-23 12:37 UTC (permalink / raw)
To: pve-devel
Implements the functionality to allow changes to the CloudInit drive
under the VM "Hardware" tab after it has already been created by the
user.
Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
www/manager6/qemu/CIDriveEdit.js | 63 +++++++++++++++++++++++++------
www/manager6/qemu/HardwareView.js | 4 +-
2 files changed, 53 insertions(+), 14 deletions(-)
diff --git a/www/manager6/qemu/CIDriveEdit.js b/www/manager6/qemu/CIDriveEdit.js
index 006f9565..d12124e8 100644
--- a/www/manager6/qemu/CIDriveEdit.js
+++ b/www/manager6/qemu/CIDriveEdit.js
@@ -9,14 +9,16 @@ Ext.define('PVE.qemu.CIDriveInputPanel', {
onGetValues: function(values) {
let me = this;
- let drive = {};
let params = {};
- let confid = values.controller + values.deviceid;
+ let confid = me.confid || values.controller + values.deviceid;
- drive.file = values.hdstorage + ":cloudinit";
- drive.format = values.diskformat;
+ // only set these when we create cloudinit files
+ if (me.isCreate) {
+ me.drive.file = values.hdstorage + ":cloudinit";
+ me.drive.format = values.diskformat;
+ }
- params[confid] = PVE.Parser.printQemuDrive(drive);
+ params[confid] = PVE.Parser.printQemuDrive(me.drive);
return params;
},
@@ -31,7 +33,25 @@ Ext.define('PVE.qemu.CIDriveInputPanel', {
setVMConfig: function(config) {
let me = this;
- me.busSelector.setVMConfig(config, 'cdrom');
+ if (me.busSelector) {
+ me.busSelector.setVMConfig(config, 'cdrom');
+ }
+ },
+
+ setDrive: function(drive) {
+ let me = this;
+
+ let values = {};
+
+ let match = drive.file.match(/^([^:]+):/);
+ if (match) {
+ values.hdstorage = match[1];
+ }
+ values.hdimage = drive.file;
+
+ me.drive = drive;
+
+ me.setValues(values);
},
initComponent: function() {
@@ -41,10 +61,12 @@ Ext.define('PVE.qemu.CIDriveInputPanel', {
let items = [];
- me.busSelector = Ext.create('PVE.form.ControllerSelector', {
- withVirtIO: false,
- fieldLabel: gettext('CloudInit Drive'),
- });
+ if (me.isCreate) {
+ me.busSelector = Ext.create('PVE.form.ControllerSelector', {
+ withVirtIO: false,
+ fieldLabel: gettext('CloudInit Drive'),
+ });
+ }
items.push(me.busSelector);
items.push({
@@ -52,6 +74,8 @@ Ext.define('PVE.qemu.CIDriveInputPanel', {
itemId: 'storselector',
storageContent: 'images',
nodename: me.nodename,
+ disabled: !me.isCreate,
+ hideFormat: !me.isCreate,
hideSize: true,
});
@@ -65,8 +89,6 @@ Ext.define('PVE.qemu.CIDriveEdit', {
extend: 'Proxmox.window.Edit',
xtype: 'pveCIDriveEdit',
- isCreate: true,
-
initComponent: function() {
let me = this;
@@ -75,8 +97,12 @@ Ext.define('PVE.qemu.CIDriveEdit', {
throw "no node name specified";
}
+ me.isCreate = !me.confid;
+
let ipanel = Ext.create('PVE.qemu.CIDriveInputPanel', {
+ confid: me.confid,
nodename: nodename,
+ isCreate: me.isCreate,
});
Ext.applyIf(me, {
@@ -89,6 +115,19 @@ Ext.define('PVE.qemu.CIDriveEdit', {
me.load({
success: function(response, opts) {
ipanel.setVMConfig(response.result.data);
+
+ if (me.confid) {
+ let value = response.result.data[me.confid];
+ let drive = PVE.Parser.parseQemuDrive(me.confid, value);
+
+ if (!drive) {
+ Ext.Msg.alert('Error', 'Unable to parse drive options');
+ me.close();
+ return;
+ }
+
+ ipanel.setDrive(drive);
+ }
},
});
},
diff --git a/www/manager6/qemu/HardwareView.js b/www/manager6/qemu/HardwareView.js
index 86d5f4cf..c7a77bd9 100644
--- a/www/manager6/qemu/HardwareView.js
+++ b/www/manager6/qemu/HardwareView.js
@@ -350,7 +350,7 @@ Ext.define('PVE.qemu.HardwareView', {
if (rowdef.isOnStorageBus) {
let value = me.getObjectValue(rec.data.key, '', true);
if (isCloudInitKey(value)) {
- return;
+ editor = 'PVE.qemu.CIDriveEdit';
} else if (value.match(/media=cdrom/)) {
editor = 'PVE.qemu.CDEdit';
} else if (!diskCap) {
@@ -629,7 +629,7 @@ Ext.define('PVE.qemu.HardwareView', {
remove_btn.RESTMethod = isUnusedDisk || (isDisk && isRunning) ? 'POST' : 'PUT';
edit_btn.setDisabled(
- deleted || !row.editor || isCloudInit || (isCDRom && !cdromCap) || (isDisk && !diskCap));
+ deleted || !row.editor || (isCDRom && !cdromCap) || (isDisk && !diskCap));
diskaction_btn.setDisabled(
pending ||
--
2.39.5
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 7+ messages in thread
* [pve-devel] [PATCH manager v3 6/6] fix #5430: ui: vm: allow editing cloudinit aio and cache options
2024-10-23 12:37 [pve-devel] [PATCH manager v3 0/6] fix #5430: ocfs2 io_uring read write Daniel Kral
` (4 preceding siblings ...)
2024-10-23 12:37 ` [pve-devel] [PATCH manager v3 5/6] ui: vm: make cloudinit drive editable Daniel Kral
@ 2024-10-23 12:37 ` Daniel Kral
5 siblings, 0 replies; 7+ messages in thread
From: Daniel Kral @ 2024-10-23 12:37 UTC (permalink / raw)
To: pve-devel
Adds cache and async I/O selectors to the CloudInit Drive Edit modal
window in the "Hardware" tab. This allows users to set these options in
the WebGUI when the VM fails to start because the underlying storage
(driver) does not support a specific set of configurations.
Signed-off-by: Daniel Kral <d.kral@proxmox.com>
---
www/manager6/qemu/CIDriveEdit.js | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/www/manager6/qemu/CIDriveEdit.js b/www/manager6/qemu/CIDriveEdit.js
index d12124e8..40e493f2 100644
--- a/www/manager6/qemu/CIDriveEdit.js
+++ b/www/manager6/qemu/CIDriveEdit.js
@@ -18,6 +18,9 @@ Ext.define('PVE.qemu.CIDriveInputPanel', {
me.drive.format = values.diskformat;
}
+ PVE.Utils.propertyStringSet(me.drive, values.cache, 'cache');
+ PVE.Utils.propertyStringSet(me.drive, values.aio, 'aio');
+
params[confid] = PVE.Parser.printQemuDrive(me.drive);
return params;
@@ -49,6 +52,9 @@ Ext.define('PVE.qemu.CIDriveInputPanel', {
}
values.hdimage = drive.file;
+ values.cache = drive.cache || '__default__';
+ values.aio = drive.aio || '__default__';
+
me.drive = drive;
me.setValues(values);
@@ -81,6 +87,22 @@ Ext.define('PVE.qemu.CIDriveInputPanel', {
me.items = items;
+ me.advancedColumnB = [
+ {
+ xtype: 'CacheTypeSelector',
+ name: 'cache',
+ value: '__default__',
+ fieldLabel: gettext('Cache'),
+ },
+ {
+ xtype: 'pveAsyncIoTypeSelector',
+ name: 'aio',
+ value: '__default__',
+ fieldLabel: gettext('Async IO'),
+ allowBlank: false,
+ },
+ ];
+
me.callParent();
},
});
--
2.39.5
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] 7+ messages in thread