Changes from v2:
* Use new options parameter instead of adding more
dependency to PVE::Cluster
* storage API bump and now there is an inter-package dependency:
#2 container depends on #1 storage
PVE/Storage.pm | 8 ++++----
PVE/Storage/Plugin.pm | 7 ++++++-
2 files changed, 10 insertions(+), 5 deletions(-)
diff --git a/PVE/Storage.pm b/PVE/Storage.pm
index a46550c..fcfc6af 100755
--- a/PVE/Storage.pm
+++ b/PVE/Storage.pm
@@ -39,11 +39,11 @@ use PVE::Storage::DRBDPlugin;
use PVE::Storage::PBSPlugin;
# Storage API version. Icrement it on changes in storage API interface.
-use constant APIVER => 3;
+use constant APIVER => 4;
# Age is the number of versions we're backward compatible with.
# This is like having 'current=APIVER' and age='APIAGE' in libtool,
# see
https://www.gnu.org/software/libtool/manual/html_node/Libtool-versioning.html
-use constant APIAGE => 2;
+use constant APIAGE => 3;
# load standard plugins
PVE::Storage::DirPlugin->register();
@@ -286,13 +286,13 @@ sub volume_snapshot_delete {
}
sub volume_has_feature {
- my ($cfg, $feature, $volid, $snap, $running) = @_;
+ my ($cfg, $feature, $volid, $snap, $running, $opts) = @_;
my ($storeid, $volname) = parse_volume_id($volid, 1);
if ($storeid) {
my $scfg = storage_config($cfg, $storeid);
my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
- return $plugin->volume_has_feature($scfg, $feature, $storeid,
$volname, $snap, $running);
+ return $plugin->volume_has_feature($scfg, $feature, $storeid,
$volname, $snap, $running, $opts);
} elsif ($volid =~ m|^(/.+)$| && -e $volid) {
return undef;
} else {
diff --git a/PVE/Storage/Plugin.pm b/PVE/Storage/Plugin.pm
index 2232261..8c0dae1 100644
--- a/PVE/Storage/Plugin.pm
+++ b/PVE/Storage/Plugin.pm
@@ -828,7 +828,7 @@ sub storage_can_replicate {
}
sub volume_has_feature {
- my ($class, $scfg, $feature, $storeid, $volname, $snapname, $running) = @_;
+ my ($class, $scfg, $feature, $storeid, $volname, $snapname, $running,
$opts) = @_;
my $features = {
snapshot => { current => { qcow2 => 1}, snap => { qcow2 => 1} },
@@ -841,6 +841,11 @@ sub volume_has_feature {
current => {qcow2 => 1, raw => 1, vmdk => 1} },
};
+ # clone_image creates a qcow2 volume
+ return 0 if $feature eq 'clone' &&
+ defined($opts->{valid_target_formats}) &&
+ !(grep { $_ eq 'qcow2' } @{$opts->{valid_target_formats}});
+
my ($vtype, $name, $vmid, $basename, $basevmid, $isBase, $format) =
$class->parse_volname($volname);
--
2.20.1
_______________________________________________
pve-devel mailing list
pve-devel@pve.proxmox.com
https://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel