From: Dominic Jäger <[email protected]>

Signed-off-by: Dominic Jäger <[email protected]>
[FE: Split out preparatory work, and re-use existing classes
     Show message upon successfull readovf API call
     Simplify a few things]
Signed-off-by: Fabian Ebner <[email protected]>
---
 www/manager6/qemu/CreateWizard.js | 61 +++++++++++++++++++++++++++++++
 1 file changed, 61 insertions(+)

diff --git a/www/manager6/qemu/CreateWizard.js 
b/www/manager6/qemu/CreateWizard.js
index a785a882..d522c09b 100644
--- a/www/manager6/qemu/CreateWizard.js
+++ b/www/manager6/qemu/CreateWizard.js
@@ -22,6 +22,7 @@ Ext.define('PVE.qemu.CreateWizard', {
        {
            xtype: 'inputpanel',
            title: gettext('General'),
+           itemId: 'generalPanel',
            onlineHelp: 'qm_general_settings',
            column1: [
                {
@@ -63,6 +64,63 @@ Ext.define('PVE.qemu.CreateWizard', {
                    value: '',
                    allowBlank: true,
                },
+               {
+                   xtype: 'textfield',
+                   name: 'ovfTextfield',
+                   emptyText: '/path/to/manifest.ovf',
+                   fieldLabel: gettext('Import from OVF'),
+                   hidden: Proxmox.UserName !== 'root@pam',
+               },
+               {
+                   xtype: 'proxmoxButton',
+                   text: gettext('Load .ovf'),
+                   hidden: Proxmox.UserName !== 'root@pam',
+                   handler: function() {
+                       const inputpanel = this.up('#generalPanel');
+                       const nodename = 
inputpanel.down('pveNodeSelector').getValue();
+                       const ovfTextfieldValue = 
inputpanel.down('textfield[name=ovfTextfield]').getValue();
+                       const wizard = this.up('window');
+
+                       Proxmox.Utils.API2Request({
+                           url: `/nodes/${nodename}/readovf`,
+                           method: 'GET',
+                           params: {
+                               manifest: ovfTextfieldValue,
+                           },
+                           success: function(response) {
+                               const ovfData = response.result.data;
+
+                               
wizard.down('textfield[name=name]').setValue(ovfData.name);
+                               
wizard.down('#cpuPanel').getViewModel().set('coreCount', ovfData.cores);
+                               
wizard.down('#memoryPanel').setMemory(ovfData.memory);
+
+                               delete ovfData.cores;
+                               delete ovfData.name;
+                               delete ovfData.memory;
+
+                               let multiDiskPanel = 
wizard.down('pveMultiHDPanel');
+                               multiDiskPanel.removeAllDisks();
+                               
Object.keys(ovfData).sort().forEach(function(drive) {
+                                   multiDiskPanel.addDisk(drive, { 
'importPath': ovfData[drive] });
+                               });
+
+                               
wizard.down('radiofield[inputValue=none]').setValue(true);
+                               // Need to manually uncheck when not yet 
rendered.
+                               
wizard.down('radiofield[inputValue=iso]').setValue(false);
+
+                               Ext.Msg.show({
+                                   title: gettext('Success'),
+                                   icon: Ext.Msg.INFO,
+                                   msg: gettext('VM settings updated'),
+                                   buttons: Ext.Msg.OK,
+                               });
+                           },
+                           failure: function(response) {
+                               Ext.Msg.alert(gettext('Error'), 
response.htmlStatus);
+                           },
+                       });
+                   },
+               },
            ],
            advancedColumn1: [
                {
@@ -120,6 +178,7 @@ Ext.define('PVE.qemu.CreateWizard', {
                delete values.order;
                delete values.up;
                delete values.down;
+               delete values.ovfTextfield;
 
                return values;
            },
@@ -162,11 +221,13 @@ Ext.define('PVE.qemu.CreateWizard', {
        },
        {
            xtype: 'pveQemuProcessorPanel',
+           itemId: 'cpuPanel',
            insideWizard: true,
            title: gettext('CPU'),
        },
        {
            xtype: 'pveQemuMemoryPanel',
+           itemId: 'memoryPanel',
            insideWizard: true,
            title: gettext('Memory'),
        },
-- 
2.30.2



_______________________________________________
pve-devel mailing list
[email protected]
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to