In preparation to the introduction of a parameter which allows
pvesm to pick a different name on collision.

In Storage.pm's volume_import, when a plugin returns 'undef',
it can be assumed that the import with the requested volid was
successful (it should've died otherwise) and so volid is returned.
This is done for backwards compatibility with foreign plugins.

Signed-off-by: Fabian Ebner <f.eb...@proxmox.com>
---
 PVE/CLI/pvesm.pm             | 13 ++++++++-----
 PVE/Storage.pm               |  2 +-
 PVE/Storage/LVMPlugin.pm     |  2 ++
 PVE/Storage/Plugin.pm        |  2 ++
 PVE/Storage/ZFSPoolPlugin.pm |  2 +-
 5 files changed, 14 insertions(+), 7 deletions(-)

diff --git a/PVE/CLI/pvesm.pm b/PVE/CLI/pvesm.pm
index 510faba..7b83ec8 100755
--- a/PVE/CLI/pvesm.pm
+++ b/PVE/CLI/pvesm.pm
@@ -299,7 +299,7 @@ __PACKAGE__->register_method ({
            },
        },
     },
-    returns => { type => 'null' },
+    returns => { type => 'string' },
     code => sub {
        my ($param) = @_;
 
@@ -352,11 +352,11 @@ __PACKAGE__->register_method ({
        my $cfg = PVE::Storage::config();
        my $volume = $param->{volume};
        my $delete = $param->{'delete-snapshot'};
-       PVE::Storage::volume_import($cfg, $infh, $volume, $param->{format},
+       my $imported_volid = PVE::Storage::volume_import($cfg, $infh, $volume, 
$param->{format},
            $param->{base}, $param->{'with-snapshots'});
-       PVE::Storage::volume_snapshot_delete($cfg, $volume, $delete)
+       PVE::Storage::volume_snapshot_delete($cfg, $imported_volid, $delete)
            if defined($delete);
-       return;
+       return $imported_volid;
     }
 });
 
@@ -777,7 +777,10 @@ our $cmddef = {
     path => [ __PACKAGE__, 'path', ['volume']],
     extractconfig => [__PACKAGE__, 'extractconfig', ['volume']],
     export => [ __PACKAGE__, 'export', ['volume', 'format', 'filename']],
-    import => [ __PACKAGE__, 'import', ['volume', 'format', 'filename']],
+    import => [ __PACKAGE__, 'import', ['volume', 'format', 'filename'], {}, 
sub  {
+       my $volid = shift;
+       print "successfully imported '$volid'\n";
+    }],
 };
 
 1;
diff --git a/PVE/Storage.pm b/PVE/Storage.pm
index a46550c..38341f6 100755
--- a/PVE/Storage.pm
+++ b/PVE/Storage.pm
@@ -1426,7 +1426,7 @@ sub volume_import {
     my $scfg = storage_config($cfg, $storeid);
     my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
     return $plugin->volume_import($scfg, $storeid, $fh, $volname, $format,
-                                  $base_snapshot, $with_snapshots);
+                                  $base_snapshot, $with_snapshots) // $volid;
 }
 
 sub volume_export_formats {
diff --git a/PVE/Storage/LVMPlugin.pm b/PVE/Storage/LVMPlugin.pm
index f02c110..fcd48ef 100644
--- a/PVE/Storage/LVMPlugin.pm
+++ b/PVE/Storage/LVMPlugin.pm
@@ -661,6 +661,8 @@ sub volume_import {
        warn $@ if $@;
        die $err;
     }
+
+    return "$storeid:$volname";
 }
 
 sub volume_import_write {
diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm
index eab73f5..0a35ce5 100644
--- a/PVE/Storage/Plugin.pm
+++ b/PVE/Storage/Plugin.pm
@@ -1242,6 +1242,8 @@ sub volume_import {
        warn $@ if $@;
        die $err;
     }
+
+    return "$storeid:$volname";
 }
 
 sub volume_import_formats {
diff --git a/PVE/Storage/ZFSPoolPlugin.pm b/PVE/Storage/ZFSPoolPlugin.pm
index b538e3b..b618e06 100644
--- a/PVE/Storage/ZFSPoolPlugin.pm
+++ b/PVE/Storage/ZFSPoolPlugin.pm
@@ -773,7 +773,7 @@ sub volume_import {
        die $err;
     }
 
-    return;
+    return "$storeid:$dataset";
 }
 
 sub volume_import_formats {
-- 
2.20.1


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

Reply via email to