[pve-devel] [PATCH v2 pve-manager 1/2] ui: cloudinit : use new cloudinit config api
Alexandre Derumier
aderumier at odiso.com
Wed Jun 9 14:02:07 CEST 2021
Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
www/manager6/qemu/CloudInit.js | 85 +++++++++++++++-------------------
1 file changed, 37 insertions(+), 48 deletions(-)
diff --git a/www/manager6/qemu/CloudInit.js b/www/manager6/qemu/CloudInit.js
index 77ff93d4..573d2945 100644
--- a/www/manager6/qemu/CloudInit.js
+++ b/www/manager6/qemu/CloudInit.js
@@ -82,38 +82,12 @@ Ext.define('PVE.qemu.CloudInit', {
text: gettext('Regenerate Image'),
handler: function() {
let view = this.up('grid');
- var eject_params = {};
- var insert_params = {};
- let disk = PVE.Parser.parseQemuDrive(view.ciDriveId, view.ciDrive);
- var storage = '';
- var stormatch = disk.file.match(/^([^:]+):/);
- if (stormatch) {
- storage = stormatch[1];
- }
- eject_params[view.ciDriveId] = 'none,media=cdrom';
- insert_params[view.ciDriveId] = storage + ':cloudinit';
-
- var failure = function(response, opts) {
- Ext.Msg.alert('Error', response.htmlStatus);
- };
-
Proxmox.Utils.API2Request({
- url: view.baseurl + '/config',
+ url: view.baseurl + '/cloudinit',
waitMsgTarget: view,
method: 'PUT',
- params: eject_params,
- failure: failure,
callback: function() {
- Proxmox.Utils.API2Request({
- url: view.baseurl + '/config',
- waitMsgTarget: view,
- method: 'PUT',
- params: insert_params,
- failure: failure,
- callback: function() {
- view.reload();
- },
- });
+ view.reload();
},
});
},
@@ -133,13 +107,20 @@ Ext.define('PVE.qemu.CloudInit', {
return;
}
var id = record.data.key;
+ var pending = record.data.pending;
var value = record.data.value;
var ciregex = new RegExp("vm-" + me.pveSelNode.data.vmid + "-cloudinit");
- if (id.match(/^(ide|scsi|sata)\d+$/) && ciregex.test(value)) {
+ if (id.match(/^(ide|scsi|sata)\d+$/)) {
+ if (ciregex.test(pending)) {
+ found = id;
+ me.ciDriveId = found;
+ me.ciDrive = pending;
+ } else if (ciregex.test(value)) {
found = id;
me.ciDriveId = found;
me.ciDrive = value;
}
+ }
});
me.down('#savebtn').setDisabled(!found);
@@ -168,6 +149,10 @@ Ext.define('PVE.qemu.CloudInit', {
var me = this;
me.rstore.startUpdate();
},
+ destroy: function() {
+ var me = this;
+ me.rstore.stopUpdate();
+ },
itemdblclick: function() {
var me = this;
me.run_editor();
@@ -188,13 +173,21 @@ Ext.define('PVE.qemu.CloudInit', {
}
var caps = Ext.state.Manager.get('GuiCap');
me.baseurl = '/api2/extjs/nodes/' + nodename + '/qemu/' + vmid;
- me.url = me.baseurl + '/pending';
+ me.url = me.baseurl + '/cloudinit';
me.editorConfig.url = me.baseurl + '/config';
me.editorConfig.pveSelNode = me.pveSelNode;
let caps_ci = caps.vms['VM.Config.Cloudinit'] || caps.vms['VM.Config.Network'];
/* editor is string and object */
+
me.rows = {
+ cicustom: {
+ header: gettext('Custom Config'),
+ iconCls: 'fa fa-cogs',
+ editor: undefined,
+ never_delete: true,
+ defaultValue: '',
+ },
ciuser: {
header: gettext('User'),
iconCls: 'fa fa-user',
@@ -239,6 +232,13 @@ Ext.define('PVE.qemu.CloudInit', {
return value || Proxmox.Utils.noneText;
},
},
+ name: {
+ header: gettext('Hostname'),
+ iconCls: 'fa fa-globe',
+ editor: undefined,
+ never_delete: true,
+ defaultValue: '',
+ },
searchdomain: {
header: gettext('DNS domain'),
iconCls: 'fa fa-globe',
@@ -288,35 +288,24 @@ Ext.define('PVE.qemu.CloudInit', {
},
};
var i;
- var ipconfig_renderer = function(value, md, record, ri, ci, store, pending) {
- var id = record.data.key;
- var match = id.match(/^net(\d+)$/);
- var val = '';
- if (match) {
- val = me.getObjectValue('ipconfig'+match[1], '', pending);
- }
- return val;
- };
+
for (i = 0; i < 32; i++) {
- // we want to show an entry for every network device
- // even if it is empty
- me.rows['net' + i.toString()] = {
- multiKey: ['ipconfig' + i.toString(), 'net' + i.toString()],
+ me.rows['ipconfig' + i.toString()] = {
header: gettext('IP Config') + ' (net' + i.toString() +')',
editor: caps.vms['VM.Config.Network'] ? 'PVE.qemu.IPConfigEdit' : undefined,
iconCls: 'fa fa-exchange',
- renderer: ipconfig_renderer,
- };
- me.rows['ipconfig' + i.toString()] = {
- visible: false,
+ visible: true,
};
}
PVE.Utils.forEachBus(['ide', 'scsi', 'sata'], function(type, id) {
me.rows[type+id] = {
- visible: false,
+ title: 'Cloud-Init',
+ iconCls: 'fa fa-cloud',
+ never_delete: true,
};
});
+
me.callParent();
me.mon(me.rstore, 'load', me.set_button_status, me);
},
--
2.20.1
More information about the pve-devel
mailing list