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


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to