all lists on lists.proxmox.com
 help / color / mirror / Atom feed
From: Dominik Csapak <d.csapak@proxmox.com>
To: Proxmox VE development discussion <pve-devel@lists.proxmox.com>,
	Philipp Hufnagl <p.hufnagl@proxmox.com>
Subject: Re: [pve-devel] [PATCH manager v6 1/2] fix #4849: api: download to storage: automatically dectect and configure compression
Date: Wed, 23 Aug 2023 11:04:28 +0200	[thread overview]
Message-ID: <ccf38003-578d-43d2-809b-26f03623ced2@proxmox.com> (raw)
In-Reply-To: <20230814144217.2082571-2-p.hufnagl@proxmox.com>

looks mostly good, one high level comment, and a few nits inline:

do we really need the 'detect-compression' parameter?

when wouldn't we want that? also the gui always enables that for isos anyway?
if there is a good reason, that would be nice to have in a commit message

if we can always use the detection, we don't have to give the parameter in the gui
and save a few lines and an additional api parameter we have to bring with us for a long time ;)

On 8/14/23 16:42, Philipp Hufnagl wrote:
> extends the query_url_metadata callback with the functionallity to
> detect used compressions. If a compression is used it tells the ui which
> one
> 
> Signed-off-by: Philipp Hufnagl <p.hufnagl@proxmox.com>
> ---
>   PVE/API2/Nodes.pm | 20 ++++++++++++++++++++
>   1 file changed, 20 insertions(+)
> 
> diff --git a/PVE/API2/Nodes.pm b/PVE/API2/Nodes.pm
> index 5a148d1d..66a8bb0b 100644
> --- a/PVE/API2/Nodes.pm
> +++ b/PVE/API2/Nodes.pm
> @@ -1564,6 +1564,12 @@ __PACKAGE__->register_method({
>   		type => 'boolean',
>   		optional => 1,
>   		default => 1,
> +	    },
> +	    'detect-compression' => {
> +		description => "If true an auto detect of used compression will be attempted",
> +		type => 'boolean',
> +		optional => 1,
> +		default => 0,
>   	    }
>   	},
>       },
> @@ -1583,6 +1589,11 @@ __PACKAGE__->register_method({
>   		type => 'string',
>   		optional => 1,
>   	    },
> +	    compression => {
> +		type => 'string',
> +		enum => $PVE::Storage::Plugin::KNOWN_COMPRESSION_FORMATS,

if you use this, you have to import it with a 'use' statement at the top of the package
in this case it works because the storage part includes it already, but should that change
it would not work anymore

> +		optional => 1,
> +	    },
>   	},
>       },
>       code => sub {
> @@ -1606,6 +1617,8 @@ __PACKAGE__->register_method({
>   	    );
>   	}
>   
> +	my $detect_compression = $param->{'detect-compression'};
> +

if we decide to leave the parameter in, i'd prefer to set the default here:

my $detect_compression = $param->{'detect-compression'} // 0;


(it works fine without that, but now i don't have to guess what the default should be without 
looking at the parameter description)

>   	my $req = HTTP::Request->new(HEAD => $url);
>   	my $res = $ua->request($req);
>   
> @@ -1615,6 +1628,7 @@ __PACKAGE__->register_method({
>   	my $disposition = $res->header("Content-Disposition");
>   	my $type = $res->header("Content-Type");
>   
> +	my $compression;
>   	my $filename;
>   
>   	if ($disposition && ($disposition =~ m/filename="([^"]*)"/ || $disposition =~ m/filename=([^;]*)/)) {
> @@ -1628,10 +1642,16 @@ __PACKAGE__->register_method({
>   	    $type = $1;
>   	}
>   
> +	if ($detect_compression && $filename =~ m!^(.+)\.(${\PVE::Storage::Plugin::COMPRESSOR_RE})$!) {
> +	    $filename = $1;
> +	    $compression = $2;
> +	}
> +
>   	my $ret = {};
>   	$ret->{filename} = $filename if $filename;
>   	$ret->{size} = $size + 0 if $size;
>   	$ret->{mimetype} = $type if $type;
> +	$ret->{compression} = $compression if $compression;
>   
>   	return $ret;
>       }});





  reply	other threads:[~2023-08-23  9:04 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-08-14 14:42 [pve-devel] [PATCH manager/storage v6 0/3] fix #4849: allow download of compressed ISOs Philipp Hufnagl
2023-08-14 14:42 ` [pve-devel] [PATCH manager v6 1/2] fix #4849: api: download to storage: automatically dectect and configure compression Philipp Hufnagl
2023-08-23  9:04   ` Dominik Csapak [this message]
2023-08-14 14:42 ` [pve-devel] [PATCH manager v6 2/2] fix #4849: ui: " Philipp Hufnagl
2023-08-23  9:04   ` Dominik Csapak
2023-08-14 14:42 ` [pve-devel] [PATCH storage v6 1/1] fix #4849: download-url: allow download and decompression of compressed ISOs Philipp Hufnagl
2023-08-23  8:00   ` [pve-devel] applied: " Wolfgang Bumiller

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=ccf38003-578d-43d2-809b-26f03623ced2@proxmox.com \
    --to=d.csapak@proxmox.com \
    --cc=p.hufnagl@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