On August 1, 2023 4:46 pm, Philipp Hufnagl wrote:

same here - please add a commit message!

with one nit below that could be folded in together with the commit
message, after pve-common and pve-storage have been bumped, since this
one requires their changes and a corresponding bump in d/control:

Reviewed-by: Fabian Grünbichler <f.gruenbich...@proxmox.com>
Tested-by: Fabian Grünbichler <f.gruenbich...@proxmox.com>

> Signed-off-by: Philipp Hufnagl <p.hufn...@proxmox.com>
> ---
>  PVE/API2/Nodes.pm                           | 21 ++++++++++++++++++++-
>  www/manager6/Makefile                       |  1 +
>  www/manager6/form/DecompressionSelector.js  | 13 +++++++++++++
>  www/manager6/window/DownloadUrlToStorage.js | 17 +++++++++++++++++
>  4 files changed, 51 insertions(+), 1 deletion(-)
>  create mode 100644 www/manager6/form/DecompressionSelector.js
> 
> diff --git a/PVE/API2/Nodes.pm b/PVE/API2/Nodes.pm
> index 9269694d..2bae4e6f 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,
> +             optional => 1,
> +         },
>       },
>      },
>      code => sub {
> @@ -1606,6 +1617,8 @@ __PACKAGE__->register_method({
>           );
>       }
>  
> +     my $detect_compression = $param->{'detect-compression'};
> +
>       my $req = HTTP::Request->new(HEAD => $url);
>       my $res = $ua->request($req);
>  
> @@ -1614,7 +1627,7 @@ __PACKAGE__->register_method({
>       my $size = $res->header("Content-Length");
>       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 +1641,16 @@ __PACKAGE__->register_method({
>           $type = $1;
>       }
>  
> +     if ($detect_compression && $filename =~ 
> m!^((.+)\.(${\PVE::Storage::Plugin::COMPRESSOR_RE}))$!) {
> +         $filename = $2;
> +         $compression = $3;
> +     }
> +
>       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;
>      }});
> diff --git a/www/manager6/Makefile b/www/manager6/Makefile
> index 7ec9d7a5..42a27548 100644
> --- a/www/manager6/Makefile
> +++ b/www/manager6/Makefile
> @@ -34,6 +34,7 @@ JSSRC=                                                      
> \
>       form/ContentTypeSelector.js                     \
>       form/ControllerSelector.js                      \
>       form/DayOfWeekSelector.js                       \
> +     form/DecompressionSelector.js       \
>       form/DiskFormatSelector.js                      \
>       form/DiskStorageSelector.js                     \
>       form/EmailNotificationSelector.js               \
> diff --git a/www/manager6/form/DecompressionSelector.js 
> b/www/manager6/form/DecompressionSelector.js
> new file mode 100644
> index 00000000..b85e050c
> --- /dev/null
> +++ b/www/manager6/form/DecompressionSelector.js
> @@ -0,0 +1,13 @@
> +Ext.define('PVE.form.DecompressionSelector', {
> +    extend: 'Proxmox.form.KVComboBox',
> +    alias: ['widget.pveDecompressionSelector'],
> +    config: {
> +     deleteEmpty: false,
> +    },
> +    comboItems: [
> +             ['__default__', Proxmox.Utils.noneText],

nit: this should be NoneText , not noneText, to get the right
capitalization.

> +             ['lzo', 'LZO'],
> +             ['gz', 'GZIP'],
> +             ['zst', 'ZSTD'],
> +    ],
> +});
> diff --git a/www/manager6/window/DownloadUrlToStorage.js 
> b/www/manager6/window/DownloadUrlToStorage.js
> index 48543d28..7a472ce9 100644
> --- a/www/manager6/window/DownloadUrlToStorage.js
> +++ b/www/manager6/window/DownloadUrlToStorage.js
> @@ -49,6 +49,9 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
>           vm.set('size', '-');
>           vm.set('mimetype', '-');
>       },
> +     decompressionPossible: function() {
> +         return this.view.content === 'iso';
> +     },
>  
>       urlCheck: function(field) {
>           let me = this;
> @@ -66,6 +69,7 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
>               params: {
>                   url: queryParam.url,
>                   'verify-certificates': queryParam['verify-certificates'],
> +                 'detect-compression': me.decompressionPossible() ? 1 : 0,
>               },
>               waitMsgTarget: view,
>               failure: res => {
> @@ -84,6 +88,7 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
>                       filename: data.filename || "",
>                       size: (data.size && 
> Proxmox.Utils.format_size(data.size)) || gettext("Unknown"),
>                       mimetype: data.mimetype || gettext("Unknown"),
> +                     compression: data.compression || '__default__',
>                   });
>               },
>           });
> @@ -223,6 +228,18 @@ Ext.define('PVE.window.DownloadUrlToStorage', {
>       if (!me.storage) {
>           throw "no storage ID specified";
>       }
> +     if (me.content === 'iso') {
> +         me.items[0].advancedColumn2.push(
> +
> +             {
> +                 xtype: 'pveDecompressionSelector',
> +                 name: 'compression',
> +                 fieldLabel: gettext('Decompression algorithm'),
> +                 allowBlank: true,
> +                 hasNoneOption: true,
> +                 value: '__default__',
> +             });
> +     }
>  
>          me.callParent();
>      },
> -- 
> 2.39.2
> 
> 
> 
> _______________________________________________
> pve-devel mailing list
> pve-devel@lists.proxmox.com
> https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
> 
> 
> 


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

Reply via email to