[pve-devel] [RFC pve-storage 12/36] plugin: lvmthin: move helper that lists thinpools to common LVM module
Max Carrara
m.carrara at proxmox.com
Wed Jul 17 11:40:10 CEST 2024
and deprecate the original helper, emitting a warning if it's used.
Also document the moved subroutine.
Signed-off-by: Max Carrara <m.carrara at proxmox.com>
---
src/PVE/Storage/Common/LVM.pm | 49 ++++++++++++++++++++++++++++++++
src/PVE/Storage/LvmThinPlugin.pm | 30 +++++++------------
2 files changed, 60 insertions(+), 19 deletions(-)
diff --git a/src/PVE/Storage/Common/LVM.pm b/src/PVE/Storage/Common/LVM.pm
index e0e3263..d4fa95f 100644
--- a/src/PVE/Storage/Common/LVM.pm
+++ b/src/PVE/Storage/Common/LVM.pm
@@ -16,6 +16,7 @@ our @EXPORT_OK = qw(
lvm_destroy_volume_group
lvm_vgs
lvm_list_volumes
+ lvm_list_thinpools
lvm_lvcreate
lvm_lvrename
);
@@ -380,6 +381,54 @@ sub lvm_list_volumes : prototype(;$) {
return $lvs;
}
+=pod
+
+=head3 lvm_list_thinpools
+
+ $thinpools = lvm_list_thinpools()
+ $thinpools = lvm_list_thinpools($vgname)
+
+Returns a list of hashes containing all I<thin pools> (I<logical volumes> with
+C<lv_type> B<C<t>>). May optionally be limited to a single I<volume group> by
+providing its name C<$vgname>.
+
+The returned list has the following structure:
+
+ [
+ {
+ lv => 'lv-name-00',
+ vg => 'vg-name-00',
+ },
+ {
+ lv => 'lv-name-01',
+ vg => 'vg-name-00',
+ },
+ ...
+ ]
+
+See also: L<C<lvm_list_volumes>|/lvm_list_volumes>
+
+=cut
+
+sub lvm_list_thinpools : prototype(;$) {
+ my ($vg) = @_;
+
+ my $lvs = lvm_list_volumes($vg);
+ my $thinpools = [];
+
+ foreach my $vg (keys %$lvs) {
+ foreach my $lvname (keys %{$lvs->{$vg}}) {
+ next if $lvs->{$vg}->{$lvname}->{lv_type} ne 't';
+ my $lv = $lvs->{$vg}->{$lvname};
+ $lv->{lv} = $lvname;
+ $lv->{vg} = $vg;
+ push @$thinpools, $lv;
+ }
+ }
+
+ return $thinpools;
+}
+
=head3 lvm_lvcreate
lvm_lvcreate($vgname, $name, $size, $tags)
diff --git a/src/PVE/Storage/LvmThinPlugin.pm b/src/PVE/Storage/LvmThinPlugin.pm
index 480cc78..1fcafdd 100644
--- a/src/PVE/Storage/LvmThinPlugin.pm
+++ b/src/PVE/Storage/LvmThinPlugin.pm
@@ -6,6 +6,7 @@ use warnings;
use IO::File;
use PVE::Tools qw(run_command trim);
+use PVE::Storage::Common qw(get_deprecation_warning);
use PVE::Storage::Common::LVM qw(lvm_vgs lvm_list_volumes);
use PVE::Storage::Plugin;
use PVE::Storage::LVMPlugin;
@@ -25,6 +26,16 @@ use PVE::JSONSchema qw(get_standard_option);
use base qw(PVE::Storage::LVMPlugin);
+sub list_thinpools {
+ warn get_deprecation_warning(
+ "PVE::Storage::Common::LVM::lvm_list_thinpools"
+ );
+
+ my ($vgname) = @_;
+
+ return PVE::Storage::Common::LVM::lvm_list_thinpools($vgname);
+}
+
sub type {
return 'lvmthin';
}
@@ -174,25 +185,6 @@ sub list_images {
return $res;
}
-sub list_thinpools {
- my ($vg) = @_;
-
- my $lvs = lvm_list_volumes($vg);
- my $thinpools = [];
-
- foreach my $vg (keys %$lvs) {
- foreach my $lvname (keys %{$lvs->{$vg}}) {
- next if $lvs->{$vg}->{$lvname}->{lv_type} ne 't';
- my $lv = $lvs->{$vg}->{$lvname};
- $lv->{lv} = $lvname;
- $lv->{vg} = $vg;
- push @$thinpools, $lv;
- }
- }
-
- return $thinpools;
-}
-
sub status {
my ($class, $storeid, $scfg, $cache) = @_;
--
2.39.2
More information about the pve-devel
mailing list