sheepdog : delete snapshots when deleting volume

sheepdog don't delete snapshots automatically when deleting volume

Signed-off-by: Alexandre Derumier <aderumier@odiso.com>
This commit is contained in:
Alexandre Derumier
2012-10-31 12:28:37 +01:00
committed by Dietmar Maurer
parent c30470a35e
commit 3cb217030a

View File

@ -48,6 +48,23 @@ sub sheepdog_ls {
return $list;
}
sub sheepdog_snapshot_ls {
my ($scfg, $volname) = @_;
my $cmd = &$collie_cmd($scfg, 'vdi', 'list', '-r');
my $list = {};
run_command($cmd, outfunc => sub {
my $line = shift;
$line = trim($line);
if ($line =~ /s\s(\S+)\s(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\d+)\s(\S+)\s(\d+)\s(\S+)/) {
$list->{$9} = 1;
}
});
return $list;
}
# Configuration
@ -129,6 +146,12 @@ sub alloc_image {
sub free_image {
my ($class, $storeid, $scfg, $volname) = @_;
my $snapshots = sheepdog_snapshot_ls($scfg, $volname);
while (my ($snapname) = each %$snapshots) {
my $cmd = &$collie_cmd($scfg, 'vdi', 'delete' , '-s', $snapname, $volname);
run_command($cmd, errmsg => "sheepdog delete snapshot $snapname $volname' error");
}
my $cmd = &$collie_cmd($scfg, 'vdi', 'delete' , $volname);
run_command($cmd, errmsg => "sheepdog delete $volname' error");