public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Alexandre Derumier <aderumier@odiso.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH v2 pve-manager 1/2] ui: cloudinit : use new cloudinit config api
Date: Wed,  9 Jun 2021 14:02:07 +0200	[thread overview]
Message-ID: <20210609120208.3347788-2-aderumier@odiso.com> (raw)
In-Reply-To: <20210609120208.3347788-1-aderumier@odiso.com>

Signed-off-by: Alexandre Derumier <aderumier@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




  reply	other threads:[~2021-06-09 12:02 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-06-09 12:02 [pve-devel] [PATCH v2 pve-manager 0/2] cloudinit pending behaviour change Alexandre Derumier
2021-06-09 12:02 ` Alexandre Derumier [this message]
2021-06-09 12:02 ` [pve-devel] [PATCH v2 pve-manager 2/2] ui: add cloudinit hotplug option Alexandre Derumier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210609120208.3347788-2-aderumier@odiso.com \
    --to=aderumier@odiso.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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