diff --git a/PVE/CLI/pvesm.pm b/PVE/CLI/pvesm.pm index 003b019..9b9676b 100755 --- a/PVE/CLI/pvesm.pm +++ b/PVE/CLI/pvesm.pm @@ -30,8 +30,6 @@ use PVE::CLIHandler; use base qw(PVE::CLIHandler); -my $KNOWN_EXPORT_FORMATS = ['raw+size', 'tar+size', 'qcow2+size', 'vmdk+size', 'zfs', 'btrfs']; - my $nodename = PVE::INotify::nodename(); sub param_mapping { @@ -269,7 +267,7 @@ __PACKAGE__->register_method ({ format => { description => "Export stream format", type => 'string', - enum => $KNOWN_EXPORT_FORMATS, + enum => $PVE::Storage::KNOWN_EXPORT_FORMATS, }, filename => { description => "Destination file name", @@ -355,7 +353,7 @@ __PACKAGE__->register_method ({ format => { description => "Import stream format", type => 'string', - enum => $KNOWN_EXPORT_FORMATS, + enum => $PVE::Storage::KNOWN_EXPORT_FORMATS, }, filename => { description => "Source file name. For '-' stdin is used, the " . diff --git a/PVE/Storage.pm b/PVE/Storage.pm index b9c53a1..c21b85e 100755 --- a/PVE/Storage.pm +++ b/PVE/Storage.pm @@ -48,6 +48,8 @@ use constant APIVER => 10; # see https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html use constant APIAGE => 1; +our $KNOWN_EXPORT_FORMATS = ['raw+size', 'tar+size', 'qcow2+size', 'vmdk+size', 'zfs', 'btrfs']; + # load standard plugins PVE::Storage::DirPlugin->register(); PVE::Storage::LVMPlugin->register(); @@ -1949,6 +1951,12 @@ sub volume_import_start { sub volume_export_start { my ($cfg, $volid, $format, $log, $opts) = @_; + my $known_format = [ grep { $_ eq $format } $KNOWN_EXPORT_FORMATS->@* ]; + if (!$known_format->@*) { + die "Cannot export '$volid' using unknown export format '$format'\n"; + } + $format = $known_format->[0]; + my $run_command_params = delete $opts->{cmd} // {}; my $cmds = $volume_export_prepare->($cfg, $volid, $format, $log, $opts);