mirror of
git://git.proxmox.com/git/pve-storage.git
synced 2025-01-25 06:03:53 +03:00
Add function volume_snapshot_delete_remote.
This function we need for replica to handle snapshots on remote nodes.
This commit is contained in:
parent
c4bb4a3d19
commit
4bd0b38f53
@ -250,6 +250,21 @@ sub volume_snapshot_rollback {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub volume_snapshot_delete_remote {
|
||||||
|
my ($cfg, $volid, $snap, $ip) = @_;
|
||||||
|
|
||||||
|
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_snapshot_delete_remote($scfg, $storeid, $volname, $snap, $ip);
|
||||||
|
} elsif ($volid =~ m|^(/.+)$| && -e $volid) {
|
||||||
|
die "snapshot delete file/device '$volid' is not possible\n";
|
||||||
|
} else {
|
||||||
|
die "unable to parse volume ID '$volid'\n";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
sub volume_snapshot_delete {
|
sub volume_snapshot_delete {
|
||||||
my ($cfg, $volid, $snap, $running) = @_;
|
my ($cfg, $volid, $snap, $running) = @_;
|
||||||
|
|
||||||
|
@ -725,6 +725,13 @@ sub volume_snapshot_rollback {
|
|||||||
return undef;
|
return undef;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub volume_snapshot_delete_remote {
|
||||||
|
my ($class, $scfg, $storeid, $volname, $snap, $ip) = @_;
|
||||||
|
|
||||||
|
# implement in subclass
|
||||||
|
die "Volume_snapshot_delete_remote is not implemented for $class";
|
||||||
|
}
|
||||||
|
|
||||||
sub volume_snapshot_delete {
|
sub volume_snapshot_delete {
|
||||||
my ($class, $scfg, $storeid, $volname, $snap, $running) = @_;
|
my ($class, $scfg, $storeid, $volname, $snap, $running) = @_;
|
||||||
|
|
||||||
|
@ -180,7 +180,10 @@ sub zfs_request {
|
|||||||
}
|
}
|
||||||
|
|
||||||
push @$cmd, @params;
|
push @$cmd, @params;
|
||||||
|
if ($ip) {
|
||||||
|
$ip = "[$ip]" if Net::IP::ip_is_ipv6($ip);
|
||||||
|
unshift @$cmd, 'ssh', '-o', 'BatchMode=yes', "root\@${ip}", '--';
|
||||||
|
}
|
||||||
my $msg = '';
|
my $msg = '';
|
||||||
|
|
||||||
my $output = sub {
|
my $output = sub {
|
||||||
@ -517,12 +520,20 @@ sub volume_send {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub volume_snapshot_delete_remote {
|
||||||
|
my ($class, $scfg, $storeid, $volname, $snap, $ip) = @_;
|
||||||
|
|
||||||
|
my $vname = ($class->parse_volname($volname))[1];
|
||||||
|
$class->zfs_request($scfg, $ip, undef, 'destroy', "$scfg->{pool}/$vname\@$snap");
|
||||||
|
}
|
||||||
|
|
||||||
sub volume_snapshot_delete {
|
sub volume_snapshot_delete {
|
||||||
my ($class, $scfg, $storeid, $volname, $snap, $running) = @_;
|
my ($class, $scfg, $storeid, $volname, $snap, $running) = @_;
|
||||||
|
|
||||||
my $vname = ($class->parse_volname($volname))[1];
|
my $vname = ($class->parse_volname($volname))[1];
|
||||||
|
|
||||||
$class->deactivate_volume($storeid, $scfg, $vname, $snap, {});
|
$class->deactivate_volume($storeid, $scfg, $vname, $snap, {});
|
||||||
|
|
||||||
$class->zfs_request($scfg, undef, undef, 'destroy', "$scfg->{pool}/$vname\@$snap");
|
$class->zfs_request($scfg, undef, undef, 'destroy', "$scfg->{pool}/$vname\@$snap");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user