From: Dominik Csapak <d.csapak@proxmox.com>
To: Fiona Ebner <f.ebner@proxmox.com>,
Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Subject: Re: [pve-devel] [PATCH qemu-server v6 4/6] api: create: implement extracting disks when needed for import-from
Date: Mon, 18 Nov 2024 14:36:12 +0100 [thread overview]
Message-ID: <1d6afa95-972b-4c66-a55f-5b22e2486352@proxmox.com> (raw)
In-Reply-To: <a919d4ff-22bd-413a-aa68-0d04c34a9d30@proxmox.com>
On 11/18/24 14:31, Fiona Ebner wrote:
> Am 15.11.24 um 16:17 schrieb Dominik Csapak:
>> @@ -416,6 +427,23 @@ my sub create_disks : prototype($$$$$$$$$$) {
>> my ($source_storage, $source_volid) = PVE::Storage::parse_volume_id($source, 1);
>>
>> if ($source_storage) { # PVE-managed volume
>> + my ($vtype, undef, undef, undef, undef, undef, $fmt)
>> + = PVE::Storage::parse_volname($storecfg, $source);
>> + my $needs_extraction = PVE::QemuServer::Helpers::needs_extraction($vtype, $fmt);
>> + if ($needs_extraction) {
>> + print "extracting $source\n";
>> + my $extracted_volid
>> + = PVE::GuestImport::extract_disk_from_import_file($source, $vmid);
>> + print "finished extracting to $extracted_volid\n";
>> + push @$vollist, $extracted_volid;
>> + $source = $extracted_volid;
>> +
>> + my (undef, undef, undef, $parent)
>> + = PVE::Storage::volume_size_info($storecfg, $source);
>> + die "importing from extracted images with backing file ($parent) not allowed\n"
>> + if $parent;
>> + }
>> +
>> if ($live_import && $ds ne 'efidisk0') {
>> my $path = PVE::Storage::path($storecfg, $source)
>> or die "failed to get a path for '$source'\n";
>
> Below here is a $source = $path
>
>> @@ -424,9 +452,11 @@ my sub create_disks : prototype($$$$$$$$$$) {
>>
>> die "could not get file size of $source\n" if !$size;
>> $live_import_mapping->{$ds} = {
>> - path => $source,
>> + path => $path,
>
> So this doesn't change anything. It's nicer to read though :P
>
>> format => $source_format,
>> };
>> + $live_import_mapping->{$ds}->{'delete-after-finish'} = $source
>
> But here you already have $path assigned to $source rather than the
> original volume ID. Doesn't vdisk_free() fail later then?
yep, i noticed that 5 minutes ago ;)
i'll change it so that source does not get overwritten and we save the volid
to delete instead of the path
>
>> + if $needs_extraction;
>> } else {
>> my $dest_info = {
>> vmid => $vmid,
>> @@ -438,8 +468,14 @@ my sub create_disks : prototype($$$$$$$$$$) {
>> $dest_info->{efisize} = PVE::QemuServer::get_efivars_size($conf, $disk)
>> if $ds eq 'efidisk0';
>>
>> - ($dst_volid, $size) = eval {
>> - $import_from_volid->($storecfg, $source, $dest_info, $vollist);
>> + eval {
>> + ($dst_volid, $size)
>> + = $import_from_volid->($storecfg, $source, $dest_info, $vollist);
>> +
>> + # remove extracted volumes after importing
>> + PVE::Storage::vdisk_free($storecfg, $source) if $needs_extraction;
>> + print "cleaned up extracted image $source\n";
>> + @$vollist = grep { $_ ne $source } @$vollist;
>> };
>> die "cannot import from '$source' - $@" if $@;
>> }
>> @@ -1964,7 +2000,6 @@ my $update_vm_api = sub {
>>
>> assert_scsi_feature_compatibility($opt, $conf, $storecfg, $param->{$opt})
>> if $opt =~ m/^scsi\d+$/;
>> -
>> my (undef, $created_opts) = create_disks(
>> $rpcenv,
>> $authuser,
>
> Unrelated hunk should not be here
>
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
next prev parent reply other threads:[~2024-11-18 13:36 UTC|newest]
Thread overview: 67+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-15 15:17 [pve-devel] [PATCH storage/qemu-server/manager v6] implement ova/ovf import for file based storages Dominik Csapak
2024-11-15 15:17 ` [pve-devel] [PATCH storage v6 01/12] copy OVF.pm from qemu-server Dominik Csapak
2024-11-17 15:50 ` [pve-devel] applied: " Thomas Lamprecht
2024-11-15 15:17 ` [pve-devel] [PATCH storage v6 02/12] plugin: dir: implement import content type Dominik Csapak
2024-11-18 12:16 ` Fiona Ebner
2024-11-15 15:17 ` [pve-devel] [PATCH storage v6 03/12] plugin: dir: handle ova files for import Dominik Csapak
2024-11-18 12:17 ` Fiona Ebner
2024-11-15 15:17 ` [pve-devel] [PATCH storage v6 04/12] ovf: improve and simplify path checking code Dominik Csapak
2024-11-18 12:25 ` Fiona Ebner
2024-11-15 15:17 ` [pve-devel] [PATCH storage v6 05/12] ovf: implement parsing the ostype Dominik Csapak
2024-11-15 15:17 ` [pve-devel] [PATCH storage v6 06/12] ovf: implement parsing out firmware type Dominik Csapak
2024-11-15 15:17 ` [pve-devel] [PATCH storage v6 07/12] ovf: implement rudimentary boot order Dominik Csapak
2024-11-15 15:17 ` [pve-devel] [PATCH storage v6 08/12] ovf: implement parsing nics Dominik Csapak
2024-11-15 15:17 ` [pve-devel] [PATCH storage v6 09/12] api: allow ova upload/download Dominik Csapak
2024-11-18 12:42 ` Fiona Ebner
2024-11-15 15:17 ` [pve-devel] [PATCH storage v6 10/12] plugin: enable import for nfs/btrfs/cifs/cephfs/glusterfs Dominik Csapak
2024-11-15 15:17 ` [pve-devel] [PATCH storage v6 11/12] add 'import' content type to 'check_volume_access' Dominik Csapak
2024-11-18 12:58 ` Fiona Ebner
2024-11-15 15:17 ` [pve-devel] [PATCH storage v6 12/12] plugin: file_size_info: don't ignore base path with whitespace Dominik Csapak
2024-11-17 15:16 ` Thomas Lamprecht
2024-11-18 7:42 ` Dominik Csapak
2024-11-18 7:48 ` Thomas Lamprecht
2024-11-15 15:17 ` [pve-devel] [PATCH qemu-server v6 1/6] disk import: add additional safeguards for imported image files Dominik Csapak
2024-11-18 13:08 ` Fiona Ebner
2024-11-15 15:17 ` [pve-devel] [PATCH qemu-server v6 2/6] api: delete unused OVF.pm Dominik Csapak
2024-11-17 15:18 ` [pve-devel] applied: " Thomas Lamprecht
2024-11-15 15:17 ` [pve-devel] [PATCH qemu-server v6 3/6] use OVF from Storage Dominik Csapak
2024-11-17 17:42 ` Thomas Lamprecht
2024-11-15 15:17 ` [pve-devel] [PATCH qemu-server v6 4/6] api: create: implement extracting disks when needed for import-from Dominik Csapak
2024-11-18 13:31 ` Fiona Ebner
2024-11-18 13:36 ` Dominik Csapak [this message]
2024-11-15 15:17 ` [pve-devel] [PATCH qemu-server v6 5/6] api: create: add 'import-extraction-storage' parameter Dominik Csapak
2024-11-17 16:13 ` Thomas Lamprecht
2024-11-15 15:17 ` [pve-devel] [PATCH qemu-server v6 6/6] api: check untrusted image files for import content type Dominik Csapak
2024-11-18 14:48 ` Fiona Ebner
2024-11-15 15:17 ` [pve-devel] [PATCH manager v6 1/9] ui: fix special 'import' icon for non-esxi storages Dominik Csapak
2024-11-17 16:21 ` [pve-devel] applied: " Thomas Lamprecht
2024-11-18 8:47 ` Dominik Csapak
2024-11-18 9:56 ` Thomas Lamprecht
2024-11-15 15:17 ` [pve-devel] [PATCH manager v6 2/9] ui: guest import: add ova-needs-extracting warning text Dominik Csapak
2024-11-17 16:29 ` Thomas Lamprecht
2024-11-15 15:17 ` [pve-devel] [PATCH manager v6 3/9] ui: enable import content type for relevant storages Dominik Csapak
2024-11-15 15:17 ` [pve-devel] [PATCH manager v6 4/9] ui: enable upload/download/remove buttons for 'import' type storages Dominik Csapak
2024-11-15 15:17 ` [pve-devel] [PATCH manager v6 5/9] ui: disable 'import' button for non importable formats Dominik Csapak
2024-11-15 15:17 ` [pve-devel] [PATCH manager v6 6/9] ui: import: improve rendering of volume names Dominik Csapak
2024-11-15 15:17 ` [pve-devel] [PATCH manager v6 7/9] ui: guest import: add storage selector for ova extraction storage Dominik Csapak
2024-11-17 16:31 ` Thomas Lamprecht
2024-11-15 15:17 ` [pve-devel] [PATCH manager v6 8/9] ui: guest import: change icon/text for non-esxi import storage Dominik Csapak
2024-11-15 15:17 ` [pve-devel] [PATCH manager v6 9/9] ui: import: show size for dir-based storages Dominik Csapak
2024-11-17 16:37 ` [pve-devel] [PATCH storage/qemu-server/manager v6] implement ova/ovf import for file based storages Thomas Lamprecht
2024-11-18 13:06 ` Lukas Wagner
2024-11-18 13:18 ` Dominik Csapak
2024-11-18 13:39 ` Lukas Wagner
2024-11-18 13:44 ` Dominik Csapak
2024-11-18 13:53 ` Dominik Csapak
2024-11-19 8:15 ` Lukas Wagner
2024-11-19 8:44 ` Dominik Csapak
2024-11-19 8:48 ` Thomas Lamprecht
2024-11-20 16:32 ` Gilberto Ferreira via pve-devel
2024-11-20 16:57 ` Gilberto Ferreira via pve-devel
2024-11-21 8:24 ` Dominik Csapak
2024-11-21 12:05 ` Gilberto Ferreira via pve-devel
2024-11-21 12:23 ` Gilberto Ferreira via pve-devel
2024-11-21 12:34 ` Fabian Grünbichler
2024-11-18 14:35 ` Daniel Herzig
2024-11-18 15:01 ` Daniel Herzig
2024-11-18 15:33 ` Dominik Csapak
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=1d6afa95-972b-4c66-a55f-5b22e2486352@proxmox.com \
--to=d.csapak@proxmox.com \
--cc=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