introducing a seperate regex that only contains ova, since
upload/downloading ovfs does not make sense (since the disks are then
missing).

Signed-off-by: Dominik Csapak <d.csa...@proxmox.com>
---
 src/PVE/API2/Storage/Status.pm | 14 ++++++++++++--
 src/PVE/Storage.pm             | 11 +++++++++++
 2 files changed, 23 insertions(+), 2 deletions(-)

diff --git a/src/PVE/API2/Storage/Status.pm b/src/PVE/API2/Storage/Status.pm
index 77ed57c..14d6fe8 100644
--- a/src/PVE/API2/Storage/Status.pm
+++ b/src/PVE/API2/Storage/Status.pm
@@ -382,7 +382,7 @@ __PACKAGE__->register_method ({
            content => {
                description => "Content type.",
                type => 'string', format => 'pve-storage-content',
-               enum => ['iso', 'vztmpl'],
+               enum => ['iso', 'vztmpl', 'import'],
            },
            filename => {
                description => "The name of the file to create. Caution: This 
will be normalized!",
@@ -448,6 +448,11 @@ __PACKAGE__->register_method ({
                raise_param_exc({ filename => "wrong file extension" });
            }
            $path = PVE::Storage::get_vztmpl_dir($cfg, $param->{storage});
+       } elsif ($content eq 'import') {
+           if ($filename !~ m![^/]+$PVE::Storage::UPLOAD_IMPORT_EXT_RE_1$!) {
+               raise_param_exc({ filename => "wrong file extension" });
+           }
+           $path = PVE::Storage::get_import_dir($cfg, $param->{storage});
        } else {
            raise_param_exc({ content => "upload content type '$content' not 
allowed" });
        }
@@ -572,7 +577,7 @@ __PACKAGE__->register_method({
            content => {
                description => "Content type.", # TODO: could be optional & 
detected in most cases
                type => 'string', format => 'pve-storage-content',
-               enum => ['iso', 'vztmpl'],
+               enum => ['iso', 'vztmpl', 'import'],
            },
            filename => {
                description => "The name of the file to create. Caution: This 
will be normalized!",
@@ -642,6 +647,11 @@ __PACKAGE__->register_method({
                raise_param_exc({ filename => "wrong file extension" });
            }
            $path = PVE::Storage::get_vztmpl_dir($cfg, $storage);
+       } elsif ($content eq 'import') {
+           if ($filename !~ m![^/]+$PVE::Storage::UPLOAD_IMPORT_EXT_RE_1$!) {
+               raise_param_exc({ filename => "wrong file extension" });
+           }
+           $path = PVE::Storage::get_import_dir($cfg, $param->{storage});
        } else {
            raise_param_exc({ content => "upload content-type '$content' is not 
allowed" });
        }
diff --git a/src/PVE/Storage.pm b/src/PVE/Storage.pm
index bc073ef..c90dd42 100755
--- a/src/PVE/Storage.pm
+++ b/src/PVE/Storage.pm
@@ -116,6 +116,8 @@ our $BACKUP_EXT_RE_2 = 
qr/\.(tgz|(?:tar|vma)(?:\.(${\PVE::Storage::Plugin::COMPR
 
 our $IMPORT_EXT_RE_1 = qr/\.(ov[af])/;
 
+our $UPLOAD_IMPORT_EXT_RE_1 = qr/\.(ova)/;
+
 # FIXME remove with PVE 8.0, add versioned breaks for pve-manager
 our $vztmpl_extension_re = $VZTMPL_EXT_RE_1;
 
@@ -462,6 +464,15 @@ sub get_iso_dir {
     return $plugin->get_subdir($scfg, 'iso');
 }
 
+sub get_import_dir {
+    my ($cfg, $storeid) = @_;
+
+    my $scfg = storage_config($cfg, $storeid);
+    my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
+
+    return $plugin->get_subdir($scfg, 'import');
+}
+
 sub get_vztmpl_dir {
     my ($cfg, $storeid) = @_;
 
-- 
2.39.2



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

Reply via email to