On August 1, 2023 4:45 pm, Philipp Hufnagl wrote: a bit of description here would be nice..
that being said, Reviewed-by: Fabian Grünbichler <f.gruenbich...@proxmox.com> Tested-by: Fabian Grünbichler <f.gruenbich...@proxmox.com> can be applied with a corresponding bumped dep on libpve-common-perl after that one has been released! > Signed-off-by: Philipp Hufnagl <p.hufn...@proxmox.com> > --- > src/PVE/API2/Storage/Status.pm | 14 +++++++++++++- > src/PVE/Storage.pm | 6 ++++++ > src/PVE/Storage/Plugin.pm | 3 ++- > 3 files changed, 21 insertions(+), 2 deletions(-) > > diff --git a/src/PVE/API2/Storage/Status.pm b/src/PVE/API2/Storage/Status.pm > index 2aaeff6..7875530 100644 > --- a/src/PVE/API2/Storage/Status.pm > +++ b/src/PVE/API2/Storage/Status.pm > @@ -578,6 +578,12 @@ __PACKAGE__->register_method({ > requires => 'checksum-algorithm', > optional => 1, > }, > + compression => { > + description => "Decompress the downloaded file using specified > compression algorithm", > + type => 'string', > + enum => $PVE::Storage::Plugin::KNOWN_COMPRESSION_FORMATS, > + optional => 1, > + }, > 'checksum-algorithm' => { > description => "The algorithm to calculate the checksum of the > file.", > type => 'string', > @@ -604,7 +610,7 @@ __PACKAGE__->register_method({ > > my $cfg = PVE::Storage::config(); > > - my ($node, $storage) = $param->@{'node', 'storage'}; > + my ($node, $storage, $compression) = $param->@{'node', > 'storage','compression'}; > my $scfg = PVE::Storage::storage_check_enabled($cfg, $storage, $node); > > die "can't upload to storage type '$scfg->{type}', not a file based > storage!\n" > @@ -649,6 +655,12 @@ __PACKAGE__->register_method({ > } > > my $worker = sub { > + if ($compression) { > + die "decompression not supported for $content\n" if $content ne > 'iso'; > + my $info = PVE::Storage::decompressor_info('iso', $compression); > + die "no decompression method found\n" if (! > $info->{decompressor}); > + $opts->{decompression_command} = $info->{decompressor}; > + } > PVE::Tools::download_file_from_url("$path/$filename", $url, $opts); > }; > > diff --git a/src/PVE/Storage.pm b/src/PVE/Storage.pm > index a4d85e1..cb70113 100755 > --- a/src/PVE/Storage.pm > +++ b/src/PVE/Storage.pm > @@ -1531,6 +1531,12 @@ sub decompressor_info { > lzo => ['lzop', '-d', '-c'], > zst => ['zstd', '-q', '-d', '-c'], > }, > + iso => { > + # zstd seem to be able to handle .gzip fine. Therefore we dont need > additional other tool > + gz => ['zcat'], > + lzo => ['lzop', '-d', '-c'], > + zst => ['zstd', '-q', '-d', '-c'], > + }, > }; > > die "ERROR: archive format not defined\n" > diff --git a/src/PVE/Storage/Plugin.pm b/src/PVE/Storage/Plugin.pm > index 9d3b1ae..18cb5d5 100644 > --- a/src/PVE/Storage/Plugin.pm > +++ b/src/PVE/Storage/Plugin.pm > @@ -19,7 +19,8 @@ use JSON; > > use base qw(PVE::SectionConfig); > > -use constant COMPRESSOR_RE => 'gz|lzo|zst'; > +use constant KNOWN_COMPRESSION_FORMATS => ( 'gz', 'lzo', 'zst'); > +use constant COMPRESSOR_RE => join( '|', KNOWN_COMPRESSION_FORMATS); > > use constant LOG_EXT => ".log"; > use constant NOTES_EXT => ".notes"; > -- > 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