]> git.proxmox.com Git - pve-manager.git/blobdiff - www/manager6/qemu/HDEfi.js
ui: guest import: add warning for losing efi state
[pve-manager.git] / www / manager6 / qemu / HDEfi.js
index 700caf9b77c295832ba8f3987be992509ca1f72a..a8ca8f56b610748441dce6679e22b9bd80c97ae2 100644 (file)
@@ -1,5 +1,5 @@
 Ext.define('PVE.qemu.EFIDiskInputPanel', {
-    extend: 'PVE.panel.InputPanel',
+    extend: 'Proxmox.panel.InputPanel',
     alias: 'widget.pveEFIDiskInputPanel',
 
     insideWizard: false,
@@ -8,45 +8,13 @@ Ext.define('PVE.qemu.EFIDiskInputPanel', {
 
     vmconfig: {}, // used to select usused disks
 
-    controller: {
-
-       xclass: 'Ext.app.ViewController',
-
-       control: {
-           'field[name=hdstorage]': {
-               change: function(f, value) {
-                   if (!value) { // initial store loading fires an unwanted 'change'
-                       return;
-                   }
-                   var me = this.getView();
-                   var rec = f.store.getById(value);
-
-                   var rawArray = ['iscsi', 'lvm', 'lvmthin', 'drbd', 'rbd', 'sheepdog', 'zfs', 'zfspool'];
-
-                   me.hdfilesel.setDisabled(true);
-                   me.hdfilesel.setVisible(false);
-                   me.formatsel.setValue('qcow2');
-                   me.formatsel.setDisabled(false);
-
-                   // if rec.data.type exists in the array
-                   if (rawArray.indexOf(rec.data.type) !== -1) {
-                       me.formatsel.setValue('raw');
-                       me.formatsel.setDisabled(true);
-                   }
-
-                   if (rec.data.type === 'iscsi') {
-                       me.hdfilesel.setStorage(value);
-                       me.hdfilesel.setDisabled(false);
-                       me.hdfilesel.setVisible(true);
-                   }
-               }
-           }
-       }
-    },
-
     onGetValues: function(values) {
        var me = this;
 
+       if (me.disabled) {
+           return {};
+       }
+
        var confid = 'efidisk0';
 
        if (values.hdimage) {
@@ -56,65 +24,78 @@ Ext.define('PVE.qemu.EFIDiskInputPanel', {
            me.drive.file = values.hdstorage + ":1";
        }
 
+       // always default to newer 4m type with secure boot support, if we're
+       // adding a new EFI disk there can't be any old state anyway
+       me.drive.efitype = '4m';
+       me.drive['pre-enrolled-keys'] = values.preEnrolledKeys;
+       delete values.preEnrolledKeys;
+
        me.drive.format = values.diskformat;
-       var params = {};
+       let params = {};
        params[confid] = PVE.Parser.printQemuDrive(me.drive);
        return params;
     },
 
     setNodename: function(nodename) {
        var me = this;
-       me.hdstoragesel.setNodename(nodename);
-       me.hdfilesel.setStorage(undefined, nodename);
+       me.down('#hdstorage').setNodename(nodename);
+       me.down('#hdimage').setStorage(undefined, nodename);
+    },
+
+    setDisabled: function(disabled) {
+       let me = this;
+       me.down('pveDiskStorageSelector').setDisabled(disabled);
+       me.down('proxmoxcheckbox[name=preEnrolledKeys]').setDisabled(disabled);
+       me.callParent(arguments);
     },
 
-    initComponent : function() {
+    initComponent: function() {
        var me = this;
 
        me.drive = {};
 
-       me.items= [];
-
-       me.formatsel = Ext.create('PVE.form.DiskFormatSelector', {
-           name: 'diskformat',
-           fieldLabel: gettext('Format'),
-           value: 'qcow2',
-           allowBlank: false
-       });
-
-       me.hdfilesel = Ext.create('PVE.form.FileSelector', {
-           name: 'hdimage',
-           nodename: me.nodename,
-           storageContent: 'images',
-           fieldLabel: gettext('Disk image'),
-           disabled: true,
-           hidden: true,
-           allowBlank: false
-       });
-
-       me.hdstoragesel = Ext.create('PVE.form.StorageSelector', {
-           name: 'hdstorage',
-           nodename: me.nodename,
-           fieldLabel: gettext('Storage'),
-           storageContent: 'images',
-           autoSelect: me.insideWizard,
-           allowBlank: false
-       });
-       me.items.push(me.hdstoragesel);
-       me.items.push(me.hdfilesel);
-       me.items.push(me.formatsel);
+       me.items = [
+           {
+               xtype: 'pveDiskStorageSelector',
+               name: 'efidisk0',
+               storageLabel: gettext('EFI Storage'),
+               storageContent: 'images',
+               nodename: me.nodename,
+               disabled: me.disabled,
+               hideSize: true,
+           },
+           {
+               xtype: 'proxmoxcheckbox',
+               name: 'preEnrolledKeys',
+               checked: true,
+               fieldLabel: gettext("Pre-Enroll keys"),
+               disabled: me.disabled,
+               //boxLabel: '(e.g., Microsoft secure-boot keys')',
+               autoEl: {
+                   tag: 'div',
+                   'data-qtip': gettext('Use EFIvars image with standard distribution and Microsoft secure boot keys enrolled.'),
+               },
+           },
+           {
+               xtype: 'label',
+               text: gettext("Warning: The VM currently does not uses 'OVMF (UEFI)' as BIOS."),
+               userCls: 'pmx-hint',
+               hidden: me.usesEFI,
+           },
+       ];
 
        me.callParent();
-    }
+    },
 });
 
 Ext.define('PVE.qemu.EFIDiskEdit', {
-    extend: 'PVE.window.Edit',
+    extend: 'Proxmox.window.Edit',
 
     isAdd: true,
     subject: gettext('EFI Disk'),
 
-    initComponent : function() {
+    width: 450,
+    initComponent: function() {
        var me = this;
 
        var nodename = me.pveSelNode.data.node;
@@ -122,16 +103,15 @@ Ext.define('PVE.qemu.EFIDiskEdit', {
            throw "no node name specified";
        }
 
-       /*jslint confusion: true */
-       /* because create is a method above..., really jslint? */
        me.items = [{
            xtype: 'pveEFIDiskInputPanel',
+           onlineHelp: 'qm_bios_and_uefi',
            confid: me.confid,
            nodename: nodename,
-           create: true
+           usesEFI: me.usesEFI,
+           isCreate: true,
        }];
-       /* jslint confusion: false */
 
        me.callParent();
-    }
+    },
 });