public inbox for pve-devel@lists.proxmox.com
 help / color / mirror / Atom feed
From: Fabian Ebner <f.ebner@proxmox.com>
To: pve-devel@lists.proxmox.com
Subject: [pve-devel] [PATCH v10 manager 19/19] ui: qemu: wizard: add import from OVF functionality
Date: Wed,  6 Apr 2022 10:04:16 +0200	[thread overview]
Message-ID: <20220406080416.66227-20-f.ebner@proxmox.com> (raw)
In-Reply-To: <20220406080416.66227-1-f.ebner@proxmox.com>

From: Dominic Jäger <d.jaeger@proxmox.com>

Signed-off-by: Dominic Jäger <d.jaeger@proxmox.com>
[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 <f.ebner@proxmox.com>
---
 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





      parent reply	other threads:[~2022-04-06  8:05 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-04-06  8:03 [pve-devel] [PATCH-SERIES v10 manager] Add GUI to import disk & VM Fabian Ebner
2022-04-06  8:03 ` [pve-devel] [PATCH v10 manager 01/19] api: nodes: add readovf endpoint Fabian Ebner
2022-04-06  8:03 ` [pve-devel] [PATCH v10 manager 02/19] ui: HD edit: get rid of unneeded binding for backup checkbox Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 03/19] ui: HD edit: move advanced options into a dedicated tab Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 04/19] ui: disk storage selector: add setSize function Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 05/19] ui: file selector: add getCurrentSize function Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 06/19] ui: HD edit: allow selecting import source Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 07/19] ui: CD edit: handle change even if not yet rendered Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 08/19] ui: multi disk edit: only pass confid for addPanel Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 09/19] ui: HD edit: allow preselecting config ID Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 10/19] ui: multi HD edit: pre select passed-in " Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 11/19] ui: multi disk edit: allow setting config ID when adding disk Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 12/19] ui: multi disk edit: add removeAllDisks function Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 13/19] ui: multi disk edit: allow adding a disk with existing settings Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 14/19] ui: multi disk edit: expose addDisk outside of the controller Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 15/19] ui: HD edit: set drive: make specifying file/volid optional Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 16/19] ui: HD edit: support setting an import path in setDrive Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 17/19] ui: qemu: memory edit: expose setMemory outside the controller Fabian Ebner
2022-04-06  8:04 ` [pve-devel] [PATCH v10 manager 18/19] ui: qemu: memory edit: allow passing explicit value Fabian Ebner
2022-04-06  8:04 ` Fabian Ebner [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220406080416.66227-20-f.ebner@proxmox.com \
    --to=f.ebner@proxmox.com \
    --cc=pve-devel@lists.proxmox.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal