mirror of
git://git.proxmox.com/git/pve-storage.git
synced 2025-01-10 01:18:05 +03:00
plugin: add volume_snapshot_info function
which allows for better choices of common replication snapshots. Signed-off-by: Fabian Ebner <f.ebner@proxmox.com>
This commit is contained in:
parent
665f61a24b
commit
8c20d8afa3
@ -371,6 +371,15 @@ sub volume_has_feature {
|
||||
}
|
||||
}
|
||||
|
||||
sub volume_snapshot_info {
|
||||
my ($cfg, $volid) = @_;
|
||||
|
||||
my ($storeid, $volname) = parse_volume_id($volid);
|
||||
my $scfg = storage_config($cfg, $storeid);
|
||||
my $plugin = PVE::Storage::Plugin->lookup($scfg->{type});
|
||||
return $plugin->volume_snapshot_info($scfg, $storeid, $volname);
|
||||
}
|
||||
|
||||
sub volume_snapshot_list {
|
||||
my ($cfg, $volid) = @_;
|
||||
|
||||
|
@ -1212,6 +1212,16 @@ sub status {
|
||||
return ($res->{total}, $res->{avail}, $res->{used}, 1);
|
||||
}
|
||||
|
||||
# Returns a hash with the snapshot names as keys and the following data:
|
||||
# id - Unique id to distinguish different snapshots even if the have the same name.
|
||||
# timestamp - Creation time of the snapshot (seconds since epoch).
|
||||
# Returns an empty hash if the volume does not exist.
|
||||
sub volume_snapshot_info {
|
||||
my ($class, $scfg, $storeid, $volname) = @_;
|
||||
|
||||
die "volume_snapshot_info is not implemented for $class";
|
||||
}
|
||||
|
||||
sub volume_snapshot_list {
|
||||
my ($class, $scfg, $storeid, $volname) = @_;
|
||||
|
||||
|
@ -510,6 +510,28 @@ sub volume_rollback_is_possible {
|
||||
return 1;
|
||||
}
|
||||
|
||||
sub volume_snapshot_info {
|
||||
my ($class, $scfg, $storeid, $volname) = @_;
|
||||
|
||||
my $vname = ($class->parse_volname($volname))[1];
|
||||
|
||||
my @params = ('-Hp', '-t', 'snapshot', '-o', 'name,guid,creation', "$scfg->{pool}\/$vname");
|
||||
my $text = $class->zfs_request($scfg, undef, 'list', @params);
|
||||
my @lines = split(/\n/, $text);
|
||||
|
||||
my $info = {};
|
||||
for my $line (@lines) {
|
||||
my ($snapshot, $guid, $creation) = split(/\s+/, $line);
|
||||
(my $snap_name = $snapshot) =~ s/^.*@//;
|
||||
|
||||
$info->{$snap_name} = {
|
||||
id => $guid,
|
||||
timestamp => $creation,
|
||||
};
|
||||
}
|
||||
return $info;
|
||||
}
|
||||
|
||||
sub volume_snapshot_list {
|
||||
my ($class, $scfg, $storeid, $volname) = @_;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user