use strict;
use warnings;
-use Cwd;
+use File::chdir;
use File::Path;
use PVE::Tools qw(run_command);
use PVE::JSONSchema qw(get_standard_option);
my $path = $class->path($scfg, $newvol);
- # Note: we use relative paths, so we need to call chdir before qemu-img
- my $oldcwd = cwd();
+ # Note: we use relative paths, so we need to call chdir before qemu-img
eval {
- chdir $imagedir;
+ local $CWD = $imagedir;
my $cmd = ['/usr/bin/qemu-img', 'create', '-b', "../$basevmid/$basename",
'-f', 'qcow2', $path];
};
my $err = $@;
- chdir $oldcwd;
-
die $err if $err;
return $newvol;
my $features = {
snapshot => { current => { qcow2 => 1}, snap => { qcow2 => 1} },
- clone => { current => {qcow2 => 1, raw => 1, vmdk => 1} },
+ clone => { base => {qcow2 => 1, raw => 1, vmdk => 1} },
+ copy => { base => {qcow2 => 1, raw => 1, vmdk => 1},
+ current => {qcow2 => 1, raw => 1, vmdk => 1},
+ snap => {qcow2 => 1} },
};
- if ($volname =~ m!^(\d+)/(\S+)$!) {
- my ($vmid, $name) = ($1, $2);
- my (undef, $format) = parse_name_dir($name);
- my $snap = $snapname ? 'snap' : 'current';
- return 1 if defined($features->{$feature}->{$snap}->{$format});
+ my ($vtype, $name, $vmid, $basename, $basevmid, $isBase) =
+ $class->parse_volname($volname);
+
+ my (undef, $format) = parse_name_dir($name);
+ my $key = undef;
+ if($snapname){
+ $key = $snapname
+ }else{
+ $key = $isBase ? 'base' : 'current';
}
+
+ return 1 if defined($features->{$feature}->{$key}->{$format});
+
return undef;
}