public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
* [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
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal