use File::chdir;
use File::Path;
+use File::Basename;
use PVE::Tools qw(run_command);
use PVE::JSONSchema qw(get_standard_option);
priority => 0, # force first entry
path => '/var/lib/vz',
maxfiles => 0,
- content => { images => 1, rootdir => 1, vztmpl => 1, iso => 1},
+ content => { images => 1, rootdir => 1, vztmpl => 1, iso => 1, snippets => 1},
};
}
return ('backup', $fn, $2);
}
return ('backup', $fn);
+ } elsif ($volname =~ m!^snippets/([^/]+)$!) {
+ return ('snippets', $1);
}
die "unable to parse directory volume name '$volname'\n";
iso => 'template/iso',
vztmpl => 'template/cache',
backup => 'dump',
+ snippets => 'snippets',
};
sub get_subdir {
push @$cmd, '-f', $fmt, $path, "${size}K";
- run_command($cmd, errmsg => "unable to create image");
+ eval { run_command($cmd, errmsg => "unable to create image"); };
+ if ($@) {
+ unlink $path;
+ rmdir $imagedir;
+ die "$@";
+ }
}
return "$vmid/$name";
unlink($path) || die "unlink '$path' failed - $!\n";
}
+
+ # try to cleanup directory to not clutter storage with empty $vmid dirs if
+ # all images from a guest got deleted
+ my $dir = dirname($path);
+ rmdir($dir);
return undef;
}
# do nothing by default
}
+sub map_volume {
+ my ($class, $storeid, $scfg, $volname, $snapname) = @_;
+
+ my ($path) = $class->path($scfg, $volname, $storeid, $snapname);
+ return $path;
+}
+
+sub unmap_volume {
+ my ($class, $storeid, $scfg, $volname, $snapname) = @_;
+
+ return 1;
+}
+
sub activate_volume {
my ($class, $storeid, $scfg, $volname, $snapname, $cache) = @_;