* [pve-devel] [PATCH pve-manager 0/2] cloud-init change
@ 2021-03-28 15:12 Alexandre Derumier
2021-03-28 15:12 ` [pve-devel] [PATCH pve-manager 1/2] ui: cloudinit : use new cloudinit config api Alexandre Derumier
2021-03-28 15:12 ` [pve-devel] [PATCH pve-manager 2/2] ui: add cloudinit hotplug option Alexandre Derumier
0 siblings, 2 replies; 3+ messages in thread
From: Alexandre Derumier @ 2021-03-28 15:12 UTC (permalink / raw)
To: pve-devel
This implement new cloudinit apis
Changelog v1:
- use update api for regenerate drive with 1 api call
- add cloudinit hotplug option
Alexandre Derumier (2):
ui: cloudinit : use new cloudinit config api
ui: add cloudinit hotplug option
www/manager6/Utils.js | 2 +
www/manager6/form/HotplugFeatureSelector.js | 4 ++
www/manager6/qemu/CloudInit.js | 76 ++++++++-------------
3 files changed, 35 insertions(+), 47 deletions(-)
--
2.20.1
^ permalink raw reply [flat|nested] 3+ messages in thread
* [pve-devel] [PATCH pve-manager 1/2] ui: cloudinit : use new cloudinit config api
2021-03-28 15:12 [pve-devel] [PATCH pve-manager 0/2] cloud-init change Alexandre Derumier
@ 2021-03-28 15:12 ` Alexandre Derumier
2021-03-28 15:12 ` [pve-devel] [PATCH pve-manager 2/2] ui: add cloudinit hotplug option Alexandre Derumier
1 sibling, 0 replies; 3+ messages in thread
From: Alexandre Derumier @ 2021-03-28 15:12 UTC (permalink / raw)
To: pve-devel
---
www/manager6/qemu/CloudInit.js | 76 +++++++++++++---------------------
1 file changed, 29 insertions(+), 47 deletions(-)
diff --git a/www/manager6/qemu/CloudInit.js b/www/manager6/qemu/CloudInit.js
index ccd1840b..3f6a36b2 100644
--- a/www/manager6/qemu/CloudInit.js
+++ b/www/manager6/qemu/CloudInit.js
@@ -82,38 +82,16 @@ Ext.define('PVE.qemu.CloudInit', {
text: gettext('Regenerate Image'),
handler: function() {
var me = this.up('grid');
- var eject_params = {};
- var insert_params = {};
- var disk = PVE.Parser.parseQemuDrive(me.ciDriveId, me.ciDrive);
- var storage = '';
- var stormatch = disk.file.match(/^([^\:]+)\:/);
- if (stormatch) {
- storage = stormatch[1];
- }
- eject_params[me.ciDriveId] = 'none,media=cdrom';
- insert_params[me.ciDriveId] = storage + ':cloudinit';
-
- var failure = function(response, opts) {
- Ext.Msg.alert('Error', response.htmlStatus);
- };
Proxmox.Utils.API2Request({
- url: me.baseurl + '/config',
+ url: me.baseurl + '/cloudinit',
waitMsgTarget: me,
method: 'PUT',
- params: eject_params,
- failure: failure,
+ failure: function(response, opts) {
+ Ext.Msg.alert('Error', response.htmlStatus);
+ },
callback: function() {
- Proxmox.Utils.API2Request({
- url: me.baseurl + '/config',
- waitMsgTarget: me,
- method: 'PUT',
- params: insert_params,
- failure: failure,
- callback: function() {
- me.reload();
- },
- });
+ me.reload();
},
});
},
@@ -133,13 +111,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);
@@ -188,12 +173,13 @@ 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 = {
ciuser: {
header: gettext('User'),
@@ -239,6 +225,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',
@@ -291,35 +284,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
^ permalink raw reply [flat|nested] 3+ messages in thread
* [pve-devel] [PATCH pve-manager 2/2] ui: add cloudinit hotplug option
2021-03-28 15:12 [pve-devel] [PATCH pve-manager 0/2] cloud-init change Alexandre Derumier
2021-03-28 15:12 ` [pve-devel] [PATCH pve-manager 1/2] ui: cloudinit : use new cloudinit config api Alexandre Derumier
@ 2021-03-28 15:12 ` Alexandre Derumier
1 sibling, 0 replies; 3+ messages in thread
From: Alexandre Derumier @ 2021-03-28 15:12 UTC (permalink / raw)
To: pve-devel
---
www/manager6/Utils.js | 2 ++
www/manager6/form/HotplugFeatureSelector.js | 4 ++++
2 files changed, 6 insertions(+)
diff --git a/www/manager6/Utils.js b/www/manager6/Utils.js
index 88353abc..644d9a6f 100644
--- a/www/manager6/Utils.js
+++ b/www/manager6/Utils.js
@@ -452,6 +452,8 @@ Ext.define('PVE.Utils', {
fa.push(gettext('Memory'));
} else if (el === 'cpu') {
fa.push(gettext('CPU'));
+ } else if (el === 'cloudinit') {
+ fa.push(gettext('Cloudinit'));
} else {
fa.push(el);
}
diff --git a/www/manager6/form/HotplugFeatureSelector.js b/www/manager6/form/HotplugFeatureSelector.js
index cb9fc552..ffb19918 100644
--- a/www/manager6/form/HotplugFeatureSelector.js
+++ b/www/manager6/form/HotplugFeatureSelector.js
@@ -33,6 +33,10 @@ Ext.define('PVE.form.HotplugFeatureSelector', {
boxLabel: gettext('CPU'),
inputValue: 'cpu',
},
+ {
+ boxLabel: 'Cloudinit',
+ inputValue: 'cloudinit',
+ },
],
setValue: function(value) {
--
2.20.1
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2021-03-28 15:12 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-03-28 15:12 [pve-devel] [PATCH pve-manager 0/2] cloud-init change Alexandre Derumier
2021-03-28 15:12 ` [pve-devel] [PATCH pve-manager 1/2] ui: cloudinit : use new cloudinit config api Alexandre Derumier
2021-03-28 15:12 ` [pve-devel] [PATCH pve-manager 2/2] ui: add cloudinit hotplug option Alexandre Derumier
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox