From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <pve-devel-bounces@lists.proxmox.com>
Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9])
	by lore.proxmox.com (Postfix) with ESMTPS id 60E041FF16E
	for <inbox@lore.proxmox.com>; Mon, 17 Mar 2025 12:05:31 +0100 (CET)
Received: from firstgate.proxmox.com (localhost [127.0.0.1])
	by firstgate.proxmox.com (Proxmox) with ESMTP id 0AEEE303;
	Mon, 17 Mar 2025 12:05:20 +0100 (CET)
Message-ID: <4c3c6f3c-deb1-4adb-879c-468716ca9aad@proxmox.com>
Date: Mon, 17 Mar 2025 12:05:16 +0100
MIME-Version: 1.0
User-Agent: Mozilla Thunderbird
Content-Language: en-US
To: pve-devel@lists.proxmox.com
References: <20250313111756.1560235-1-d.csapak@proxmox.com>
 <20250313111756.1560235-5-d.csapak@proxmox.com>
From: Filip Schauer <f.schauer@proxmox.com>
In-Reply-To: <20250313111756.1560235-5-d.csapak@proxmox.com>
X-SPAM-LEVEL: Spam detection results:  0
 AWL -0.019 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DMARC_MISSING             0.1 Missing DMARC policy
 KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment
 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 RCVD_IN_VALIDITY_RPBL_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 RCVD_IN_VALIDITY_SAFE_BLOCKED 0.001 ADMINISTRATOR NOTICE: The query to
 Validity was blocked. See
 https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more
 information.
 SPF_HELO_NONE           0.001 SPF: HELO does not publish an SPF Record
 SPF_PASS               -0.001 SPF: sender matches SPF record
Subject: Re: [pve-devel] [PATCH manager 3/3] ui: qemu hd edit: allow
 importing a disk from the import storage
X-BeenThere: pve-devel@lists.proxmox.com
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Proxmox VE development discussion <pve-devel.lists.proxmox.com>
List-Unsubscribe: <https://lists.proxmox.com/cgi-bin/mailman/options/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=unsubscribe>
List-Archive: <http://lists.proxmox.com/pipermail/pve-devel/>
List-Post: <mailto:pve-devel@lists.proxmox.com>
List-Help: <mailto:pve-devel-request@lists.proxmox.com?subject=help>
List-Subscribe: <https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel>, 
 <mailto:pve-devel-request@lists.proxmox.com?subject=subscribe>
Reply-To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset="us-ascii"; Format="flowed"
Errors-To: pve-devel-bounces@lists.proxmox.com
Sender: "pve-devel" <pve-devel-bounces@lists.proxmox.com>

I ran into a bug when creating a VM in the Web UI:
On the "Disks" tab the wizard does not let me proceed with the default
configuration. When selecting an image to import and then unchecking the
"Import Image" box again, the wizard lets me proceed again.

On the other hand, adding a qcow2 image to an existing VM via the Web UI
works fine.

On 13/03/2025 12:17, Dominik Csapak wrote:
> adds a checkbox 'import image' above the storage selector which:
> * hides the original storage selector
> * shows a 'source storage' selector
> * shows a 'import file' selector
> * shows a 'target storage' selector
>
> Since the wizard and the hd edit share this panel, this also works in
> the wizard.
>
> Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
> ---
>   www/manager6/qemu/HDEdit.js | 72 ++++++++++++++++++++++++++++++++++++-
>   1 file changed, 71 insertions(+), 1 deletion(-)
>
> diff --git a/www/manager6/qemu/HDEdit.js b/www/manager6/qemu/HDEdit.js
> index b78647ec..a235815d 100644
> --- a/www/manager6/qemu/HDEdit.js
> +++ b/www/manager6/qemu/HDEdit.js
> @@ -78,11 +78,17 @@ Ext.define('PVE.qemu.HDInputPanel', {
>   	    if (values.hdimage) {
>   		me.drive.file = values.hdimage;
>   	    } else {
> -		me.drive.file = values.hdstorage + ":" + values.disksize;
> +		let disksize = values.disksize;
> +		if (values['import-from']) {
> +		    PVE.Utils.propertyStringSet(me.drive, values['import-from'], 'import-from');
> +		    disksize = 0;
> +		}
> +		me.drive.file = `${values.hdstorage}:${disksize}`;
>   	    }
>   	    me.drive.format = values.diskformat;
>   	}
>   
> +
>   	PVE.Utils.propertyStringSet(me.drive, !values.backup, 'backup', '0');
>   	PVE.Utils.propertyStringSet(me.drive, values.noreplicate, 'replicate', 'no');
>   	PVE.Utils.propertyStringSet(me.drive, values.discard, 'discard', 'on');
> @@ -168,6 +174,11 @@ Ext.define('PVE.qemu.HDInputPanel', {
>   	var me = this;
>   	me.down('#hdstorage').setNodename(nodename);
>   	me.down('#hdimage').setStorage(undefined, nodename);
> +
> +	me.lookup('new-disk').setNodename(nodename);
> +	me.lookup('import-source').setNodename(nodename);
> +	me.lookup('import-source-file').setNodename(nodename);
> +	me.lookup('import-target').setNodename(nodename);
>       },
>   
>       hasAdvanced: true,
> @@ -221,12 +232,71 @@ Ext.define('PVE.qemu.HDInputPanel', {
>   	    column1.push(me.unusedDisks);
>   	} else if (me.isCreate) {
>   	    column1.push({
> +		xtype: 'proxmoxcheckbox',
> +		isFormField: false,
> +		fieldLabel: gettext("Import Image"),
> +		listeners: {
> +		    change: function(_cb, value) {
> +			me.lookup('new-disk').setVisible(!value);
> +			me.lookup('new-disk').setDisabled(!!value);
> +
> +			me.lookup('import-source').setVisible(!!value);
> +			me.lookup('import-source').setDisabled(!value);
> +			me.lookup('import-source-file').setVisible(!!value);
> +
> +			me.lookup('import-target').setVisible(!!value);
> +			me.lookup('import-target').setDisabled(!value);
> +		    },
> +		},
> +	    });
> +	    column1.push({
> +		reference: 'new-disk',
>   		xtype: 'pveDiskStorageSelector',
>   		storageContent: 'images',
>   		name: 'disk',
>   		nodename: me.nodename,
>   		autoSelect: me.insideWizard,
>   	    });
> +	    column1.push({
> +		xtype: 'pveStorageSelector',
> +		reference: 'import-source',
> +		fieldLabel: gettext('Import Storage'),
> +		name: 'import-source-storage',
> +		hidden: true,
> +		disabled: true,
> +		storageContent: 'import',
> +		nodename: me.nodename,
> +		autoSelect: me.insideWizard,
> +		listeners: {
> +		    change: function(_selector, storage) {
> +			me.lookup('import-source-file').setDisabled(!storage);
> +			me.lookup('import-source-file').setStorage(storage);
> +		    },
> +		},
> +	    });
> +	    column1.push({
> +		xtype: 'pveFileSelector',
> +		reference: 'import-source-file',
> +		fieldLabel: gettext("Select Image"),
> +		hidden: true,
> +		disabled: true,
> +		storageContent: 'import',
> +		name: 'import-from',
> +		filter: (rec) => rec?.data?.format === 'qcow2',
> +		nodename: me.nodename,
> +	    });
> +	    column1.push({
> +		xtype: 'pveDiskStorageSelector',
> +		reference: 'import-target',
> +		storageLabel: gettext('Target Storage'),
> +		hidden: true,
> +		disabled: true,
> +		hideSize: true,
> +		storageContent: 'images',
> +		name: 'target',
> +		nodename: me.nodename,
> +		autoSelect: me.insideWizard,
> +	    });
>   	} else {
>   	    column1.push({
>   		xtype: 'textfield',


_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel