all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [pve-devel] [PATCH v3 pve-manager 1/2] ui: cloudinit : use new cloudinit config api
       [not found] <20220622141335.3616129-1-aderumier@odiso.com>
@ 2022-06-22 14:13 ` Alexandre Derumier
  2022-06-22 14:13 ` [pve-devel] [PATCH v3 pve-manager 2/2] ui: add cloudinit hotplug option Alexandre Derumier
  1 sibling, 0 replies; 2+ messages in thread
From: Alexandre Derumier @ 2022-06-22 14:13 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
 www/manager6/qemu/CloudInit.js | 82 +++++++++++++++-------------------
 1 file changed, 36 insertions(+), 46 deletions(-)

diff --git a/www/manager6/qemu/CloudInit.js b/www/manager6/qemu/CloudInit.js
index 77ff93d4..f2ad77a8 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() {
 		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,
+		    failure: function(response, opts) {
+			Ext.Msg.alert('Error', response.htmlStatus);
+		    },
 		    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 +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',
@@ -288,35 +281,32 @@ 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,
+		visible: true,
 	    };
-	    me.rows['ipconfig' + i.toString()] = {
-		visible: false,
+
+	    me.rows['net' + i.toString()] = {
+		header: 'net' + i.toString(),
+		editor: undefined,
+		iconCls: 'fa fa-exchange',
+		never_delete: true,
+		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.30.2




^ permalink raw reply	[flat|nested] 2+ messages in thread

* [pve-devel] [PATCH v3 pve-manager 2/2] ui: add cloudinit hotplug option
       [not found] <20220622141335.3616129-1-aderumier@odiso.com>
  2022-06-22 14:13 ` [pve-devel] [PATCH v3 pve-manager 1/2] ui: cloudinit : use new cloudinit config api Alexandre Derumier
@ 2022-06-22 14:13 ` Alexandre Derumier
  1 sibling, 0 replies; 2+ messages in thread
From: Alexandre Derumier @ 2022-06-22 14:13 UTC (permalink / raw)
  To: pve-devel

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
---
 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 7ca6a271..30656747 100644
--- a/www/manager6/Utils.js
+++ b/www/manager6/Utils.js
@@ -438,6 +438,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.30.2




^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-06-22 14:13 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20220622141335.3616129-1-aderumier@odiso.com>
2022-06-22 14:13 ` [pve-devel] [PATCH v3 pve-manager 1/2] ui: cloudinit : use new cloudinit config api Alexandre Derumier
2022-06-22 14:13 ` [pve-devel] [PATCH v3 pve-manager 2/2] ui: add cloudinit hotplug option Alexandre Derumier

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.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal