]> git.proxmox.com Git - qemu-server.git/commitdiff
template_create: check for 'clone' feature
authorDietmar Maurer <dietmar@proxmox.com>
Fri, 15 Feb 2013 07:44:12 +0000 (08:44 +0100)
committerDietmar Maurer <dietmar@proxmox.com>
Fri, 15 Feb 2013 07:44:12 +0000 (08:44 +0100)
PVE/QemuServer.pm

index 16d02ab1f35bca0299f354e8167c6b459247c27a..189366a7df3c225faaf6bb148eca94edf64f37f6 100644 (file)
@@ -4409,7 +4409,7 @@ sub snapshot_delete {
     lock_config($vmid, $updatefn);
 }
 
-sub has_feature{
+sub has_feature {
     my ($feature, $conf, $storecfg, $snapname, $running) = @_;
 
     my $err = undef;
@@ -4433,6 +4433,20 @@ sub template_create {
     my $storecfg = PVE::Storage::config();
     my $i = 0;
 
+    # First check if all disks have feature 'clone'.
+    # Note: there is no feature 'create_base', but we can safely assume
+    # that a storage with feature 'clone' can create base images.
+    foreach_drive($conf, sub {
+       my ($ds, $drive) = @_;
+
+       return if drive_is_cdrom($drive);
+       return if $disk && $ds ne $disk;
+
+       my $volid = $drive->{file};
+       die "volume '$volid' does not support template/clone\n" 
+           if !PVE::Storage::volume_has_feature($storecfg, 'clone', $volid);
+    });
+
     foreach_drive($conf, sub {
        my ($ds, $drive) = @_;