all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: "Fabian Grünbichler" <f.gruenbichler@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>
Subject: Re: [pve-devel] [PATCH V2 common 1/1] fix #4849: download file from url: add opt parameter for a decompression command
Date: Fri, 28 Jul 2023 10:11:38 +0200	[thread overview]
Message-ID: <1690530444.e3nmon08p5.astroid@yuna.none> (raw)
In-Reply-To: <20230727152817.775699-2-p.hufnagl@proxmox.com>

On July 27, 2023 5:28 pm, Philipp Hufnagl wrote:
> Signed-off-by: Philipp Hufnagl <p.hufnagl@proxmox.com>
> ---
>  src/PVE/Tools.pm | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/src/PVE/Tools.pm b/src/PVE/Tools.pm
> index 9ffac12..d9869e8 100644
> --- a/src/PVE/Tools.pm
> +++ b/src/PVE/Tools.pm
> @@ -2059,6 +2059,15 @@ sub download_file_from_url {
>      }
>  
>      print "download of '$url' to '$dest' finished\n";
> +
> +    if ($opts->{decompression_command}) {

this is still hard-coding the "file has extensions that is automatically
removed by decompression command" assumption, which makes for a
difficult interface (what if we add a decompression command that doesn't
work like that? why is $dest now no longer the destination file path?)

switching to "decompress to stdout" like I suggested in the review of v1
would make the command returned by decompressor_info more flexible, as
it can then be included in a pipe (like we do for vma in
PVE::QemuServer::restore_vma_archive) or its output redirected to a
file.

then the whole decompression block can move a bit higher up, before the
rename, since $dest will remain the final destination path for both
uncompressed and compressed cases.

> +         my $cmd = join(' ', $opts->{decompression_command}->@*, $dest);

this is wrong - see the rather lengthy comment on top of run_command.
the string variant should basically only be used if you have a static
command, else use the array or array of arrays variant.
PVE::QemuServer::restore_vma_archive has an example, but it's likely
more complicated than you need here ;)

> +        eval{run_command($cmd);};

nit: style ;)

> +        my $rerr = $@;

nit: we usually just use $err for this

> +        unlink $dest;
> +        die "$rerr\n" if $rerr;
> +        print "decompressed $dest\n";
> +    }
>  }
>  
>  sub get_file_hash {
> -- 
> 2.39.2
> 
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 
> 




  reply	other threads:[~2023-07-28  8:11 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-07-27 15:28 [pve-devel] [PATCH V2 storage/manager/common 0/3] allow download of compressed ISOs Philipp Hufnagl
2023-07-27 15:28 ` [pve-devel] [PATCH V2 common 1/1] fix #4849: download file from url: add opt parameter for a decompression command Philipp Hufnagl
2023-07-28  8:11   ` Fabian Grünbichler [this message]
2023-07-27 15:28 ` [pve-devel] [PATCH V2 manager 1/1] fix #4849: download to storage: automatically dectect and configure compression Philipp Hufnagl
2023-07-27 15:28 ` [pve-devel] [PATCH V2 storage 1/1] fix #4849: download-url: allow download and decompression of compressed ISOs Philipp Hufnagl
2023-07-28  8:11   ` Fabian Grünbichler

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=1690530444.e3nmon08p5.astroid@yuna.none \
    --to=f.gruenbichler@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal