]> git.proxmox.com Git - pve-manager.git/commitdiff
ui: guest import: add checkbox for virtio drive
authorDominik Csapak <d.csapak@proxmox.com>
Tue, 12 Mar 2024 14:12:39 +0000 (15:12 +0100)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 14 Mar 2024 14:17:43 +0000 (15:17 +0100)
similar to what we have in the wizard.

in the case we cannot find a suitable slot (ide0/2, sata0-6), we
continue, but print a warning into the javascript log

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
www/manager6/window/GuestImport.js

index 17c5d8dbbfe81480aec99e7d400ab2a8a4fe8b88..ec6079c2c461c450d80b4f7b8e620424e2e2a3d2 100644 (file)
@@ -159,6 +159,12 @@ Ext.define('PVE.window.GuestImport', {
            this.lookup('diskGrid').reconfigure();
        },
 
+       toggleIsoSelector: function(_cb, value) {
+           let me = this;
+           me.lookup('isoSelector').setDisabled(!value);
+           me.lookup('isoSelector').setHidden(!value);
+       },
+
        control: {
            'grid field': {
                // update records from widgetcolumns
@@ -186,6 +192,9 @@ Ext.define('PVE.window.GuestImport', {
            'combobox[name=ostype]': {
                change: 'refreshDiskGrid',
            },
+           'proxmoxcheckbox[reference=enableSecondCD]': {
+               change: 'toggleIsoSelector',
+           },
        },
     },
 
@@ -314,6 +323,27 @@ Ext.define('PVE.window.GuestImport', {
                            config['live-restore'] = 1;
                        }
 
+                       if (grid.lookup('enableSecondCD')) {
+                           let idsToTry = ['ide0', 'ide2'];
+                           for (let i = 0; i <=PVE.Utils.diskControllerMaxIDs.sata; i++) {
+                               idsToTry.push(`sata{$i}`);
+                           }
+                           let found = false;
+                           for (const id of idsToTry) {
+                               if (!config[id]) {
+                                   config[id] = PVE.Parser.printQemuDrive({
+                                       media: 'cdrom',
+                                       file: grid.lookup('isoSelector').getValue(),
+                                   });
+                                   found = true;
+                                   break;
+                               }
+                           }
+                           if (!found) {
+                               console.warn('could not insert cd drive for virtio');
+                           }
+                       }
+
                        // remove __default__ values
                        for (const [key, value] of Object.entries(config)) {
                            if (value === '__default__') {
@@ -489,6 +519,18 @@ Ext.define('PVE.window.GuestImport', {
                            submitValue: false,
                            fieldLabel: gettext('SCSI Controller'),
                        },
+                       {
+                           xtype: 'proxmoxcheckbox',
+                           reference: 'enableSecondCD',
+                           isFormField: false,
+                           hidden: true,
+                           checked: false,
+                           boxLabel: gettext('Add additional drive for VirtIO drivers'),
+                           bind: {
+                               hidden: '{!isWindows}',
+                               disabled: '{!isWindows}',
+                           },
+                       },
                    ],
 
                    column2: [
@@ -509,6 +551,16 @@ Ext.define('PVE.window.GuestImport', {
                                'data-qtip': gettext('Useful when wanting to use VirtIO-SCSI'),
                            },
                        },
+                       {
+                           xtype: 'pveIsoSelector',
+                           reference: 'isoSelector',
+                           submitValue: false,
+                           labelWidth: 120,
+                           labelAlign: 'left',
+                           insideWizard: true,
+                           hidden: true,
+                           disabled: true,
+                       },
                    ],
 
                    columnB: [
@@ -781,6 +833,7 @@ Ext.define('PVE.window.GuestImport', {
 
        me.lookup('defaultStorage').setNodename(me.nodename);
        me.lookup('defaultBridge').setNodename(me.nodename);
+       me.lookup('isoSelector').setNodename(me.nodename);
 
        let renderWarning = w => {
            const warningsCatalogue = {