]> git.proxmox.com Git - pve-manager.git/commitdiff
Convert the VMIDSelector to a generic GuestIDSelector
authorEmmanuel Kasper <e.kasper@proxmox.com>
Tue, 13 Dec 2016 09:07:40 +0000 (10:07 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Mon, 19 Dec 2016 06:31:27 +0000 (07:31 +0100)
This allows to display a 'CT', a 'VM', or a 'CT/VM' label
to be displayed, depending on the context.

Currently when restoring a CT backup or creating a CT via the
wizard, we are asked to enter a  *VM* ID, which is confusing.

www/manager6/Makefile
www/manager6/form/GuestIDSelector.js [new file with mode: 0644]
www/manager6/form/VMIDSelector.js [deleted file]
www/manager6/ha/ResourceEdit.js
www/manager6/ha/Resources.js
www/manager6/lxc/CreateWizard.js
www/manager6/qemu/Clone.js
www/manager6/qemu/CreateWizard.js
www/manager6/window/Restore.js

index ea21c5dc461c1fdc0ec64bac7b9875bef822a31c..ae0abe2f4cc966e7fe6351a6b85efd0aa9e7ac2b 100644 (file)
@@ -36,7 +36,7 @@ JSSRC=                                                        \
        form/GroupSelector.js                           \
        form/UserSelector.js                            \
        form/RoleSelector.js                            \
-       form/VMIDSelector.js                            \
+       form/GuestIDSelector.js                         \
        form/MemoryField.js                             \
        form/NetworkCardSelector.js                     \
        form/DiskFormatSelector.js                      \
diff --git a/www/manager6/form/GuestIDSelector.js b/www/manager6/form/GuestIDSelector.js
new file mode 100644 (file)
index 0000000..819cef9
--- /dev/null
@@ -0,0 +1,75 @@
+Ext.define('PVE.form.GuestIDSelector', {
+    extend: 'Ext.form.field.Number',
+    alias: 'widget.pveGuestIDSelector',
+
+    allowBlank: false,
+
+    minValue: 100,
+
+    maxValue: 999999999,
+
+    validateExists: undefined,
+
+    loadNextFreeID: false,
+
+    guestType: undefined,
+
+    initComponent: function() {
+       var me = this;
+       var label = '{0} ID';
+       var unknownID = 'This {0} ID does not exists';
+       var inUseID = 'This {0} ID is already in use';
+
+       if (me.guestType === 'lxc') {
+           label = Ext.String.format(label, 'CT');
+           unknownID = Ext.String.format(gettext(unknownID), 'CT');
+           inUseID = Ext.String.format(gettext(inUseID), 'CT');
+       } else if (me.guestType === 'qemu') {
+           label = Ext.String.format(label, 'VM');
+           unknownID = Ext.String.format(gettext(unknownID), 'VM');
+           inUseID = Ext.String.format(gettext(inUseID), 'VM');
+       } else {
+           label = Ext.String.format(label, 'CT/VM');
+           unknownID = Ext.String.format(gettext(unknownID), 'CT/VM');
+           inUseID = Ext.String.format(gettext(inUseID), 'CT/VM');
+       }
+
+       Ext.apply(me, {
+           fieldLabel: label,
+           listeners: {
+               'change': function(field, newValue, oldValue) {
+                   if (!Ext.isDefined(me.validateExists)) {
+                       return;
+                   }
+                   PVE.Utils.API2Request({
+                       params: { vmid: newValue },
+                       url: '/cluster/nextid',
+                       method: 'GET',
+                       success: function(response, opts) {
+                           if (me.validateExists === true) {
+                               me.markInvalid(unknownID);
+                           }
+                       },
+                       failure: function(response, opts) {
+                           if (me.validateExists === false) {
+                               me.markInvalid(inUseID);
+                           }
+                       }
+                   });
+               }
+           }
+       });
+
+        me.callParent();
+
+       if (me.loadNextFreeID) {
+           PVE.Utils.API2Request({
+               url: '/cluster/nextid',
+               method: 'GET',
+               success: function(response, opts) {
+                   me.setRawValue(response.result.data);
+               }
+           });
+       }
+    }
+});
diff --git a/www/manager6/form/VMIDSelector.js b/www/manager6/form/VMIDSelector.js
deleted file mode 100644 (file)
index 92a1781..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-Ext.define('PVE.form.VMIDSelector', {
-    extend: 'Ext.form.field.Number',
-    alias: 'widget.pveVMIDSelector',
-
-    allowBlank: false,
-  
-    minValue: 100,
-
-    maxValue: 999999999,
-
-    validateExists: undefined,
-
-    loadNextFreeVMID: false,
-
-    initComponent: function() {
-        var me = this;
-
-       Ext.applyIf(me, {
-           fieldLabel: 'VM ID',
-           listeners: {
-               'change': function(field, newValue, oldValue) {
-                   if (!Ext.isDefined(me.validateExists)) {
-                       return;
-                   }
-                   PVE.Utils.API2Request({
-                       params: { vmid: newValue },
-                       url: '/cluster/nextid',
-                       method: 'GET',
-                       success: function(response, opts) {
-                           if (me.validateExists === true) {
-                               me.markInvalid(gettext('This VM ID does not exists'));
-                           }
-                       },
-                       failure: function(response, opts) {
-                           if (me.validateExists === false) {
-                               me.markInvalid(gettext('This VM ID is already in use'));
-                           }
-                       }
-                   });
-               }
-           }
-       });
-
-        me.callParent();
-
-       if (me.loadNextFreeVMID) {
-           PVE.Utils.API2Request({
-               url: '/cluster/nextid',
-               method: 'GET',
-               success: function(response, opts) {
-                   me.setRawValue(response.result.data);
-               }
-           });
-       }
-    }
-});
index 8dbc361a7a06146306653043019a76a169de4db0..4dc7474e0a8223d49043f17611bc8d2e9846fca3 100644 (file)
@@ -33,11 +33,11 @@ Ext.define('PVE.ha.VMResourceInputPanel', {
 
        me.column1 = [
            {
-               xtype: me.vmid ? 'displayfield' : 'pveVMIDSelector',
+               xtype: me.vmid ? 'displayfield' : 'pveGuestIDSelector',
                name: 'vmid',
-               fieldLabel: 'VM ID',
+               fieldLabel: (me.vmid && me.guestType === 'ct') ? 'CT' : 'VM',
                value: me.vmid,
-               loadNextFreeVMID: false,
+               loadNextGuestID: false,
                validateExists: true
            },
            {
@@ -111,6 +111,7 @@ Ext.define('PVE.ha.VMResourceEdit', {
     extend: 'PVE.window.Edit',
 
     vmid: undefined,
+    guestType: undefined,
 
     initComponent : function() {
        var me = this;
@@ -127,11 +128,12 @@ Ext.define('PVE.ha.VMResourceEdit', {
 
        var ipanel = Ext.create('PVE.ha.VMResourceInputPanel', {
            create: me.create,
-           vmid: me.vmid
+           vmid: me.vmid,
+           guestType: me.guestType
        });
 
        Ext.apply(me, {
-            subject: gettext('VM Resource'),
+            subject: gettext('CT/VM Resource'),
            isAdd: true,
            items: [ ipanel ]
        });
index 16151cca54c2a22acb5c1f16f28ddac31ee9aa0f..8d35afcdb6631c91e0191bf9d69e83923c3cd2a9 100644 (file)
@@ -56,10 +56,11 @@ Ext.define('PVE.ha.ResourcesView', {
            if (res[1] !== 'vm' && res[1] !== 'ct') {
                return;
            }
-           
+           var guestType = res[1];
            var vmid = res[2];
            
             var win = Ext.create('PVE.ha.VMResourceEdit',{
+                guestType: guestType,
                 vmid: vmid
             });
             win.on('destroy', reload);
index df2b6337b4d75e115431855976c442b92221b620..da80f81cb03c28c2a888484b0393c4536ce47e12 100644 (file)
@@ -194,10 +194,11 @@ Ext.define('PVE.lxc.CreateWizard', {
                            }
                        },
                        {
-                           xtype: 'pveVMIDSelector',
-                           name: 'vmid',
+                           xtype: 'pveGuestIDSelector',
+                           name: 'vmid', // backend only knows vmid
+                           guestType: 'lxc',
                            value: '',
-                           loadNextFreeVMID: true,
+                           loadNextFreeID: true,
                            validateExists: false
                        },
                        {
index 617b66e8f458592fa153f74c0e4d503a9401c02e..83edc5c5af4a60237ab29e315be81ee23ee56eb3 100644 (file)
@@ -179,10 +179,11 @@ Ext.define('PVE.window.Clone', {
 
        col1.push(
            {
-                xtype: 'pveVMIDSelector',
+                xtype: 'pveGuestIDSelector',
                 name: 'newvmid',
+                guestType: 'qemu',
                 value: '',
-                loadNextFreeVMID: true,
+                loadNextGuestVMID: true,
                 validateExists: false
             },
            {
index 5e0a75c4c283cea4ad744af3fa54fef5526a8e23..0a1d2c02966d77261c2ee997f6e23a89c2a31302 100644 (file)
@@ -62,10 +62,11 @@ Ext.define('PVE.qemu.CreateWizard', {
                            }
                        },
                        {
-                           xtype: 'pveVMIDSelector',
+                           xtype: 'pveGuestIDSelector',
                            name: 'vmid',
+                           guestType: 'qemu',
                            value: '',
-                           loadNextFreeVMID: true,
+                           loadNextFreeID: true,
                            validateExists: false
                        },
                        {
index 94997954e0090bc0fe99ec4d099985cf80c750db..3a6550edb0174a2dd8a7c257230bddd8769a2aaf 100644 (file)
@@ -27,6 +27,22 @@ Ext.define('PVE.window.Restore', {
            allowBlank: true
        });
 
+       var IDfield;
+       if (me.vmid) {
+           IDfield = Ext.create('Ext.form.field.Display', {
+               name: 'vmid',
+               value: me.vmid,
+               fieldLabel: (me.vmtype === 'lxc') ? 'CT' : 'VM'
+           });
+       } else {
+           IDfield = Ext.create('PVE.form.GuestIDSelector', {
+               name: 'vmid',
+               guestType: me.vmtype,
+               loadNextGuestID: true,
+               validateExists: false
+           });
+       }
+
        me.formPanel = Ext.create('Ext.form.Panel', {
            bodyPadding: 10,
            border: false,
@@ -41,14 +57,7 @@ Ext.define('PVE.window.Restore', {
                    fieldLabel: gettext('Source')
                },
                storagesel,
-               {
-                   xtype: me.vmid ? 'displayfield' : 'pveVMIDSelector',
-                   name: 'vmid',
-                   fieldLabel: 'VM ID',
-                   value: me.vmid,
-                   loadNextFreeVMID: me.vmid ? false: true,
-                   validateExists: false
-               }
+               IDfield
            ]
        });