prepare storage for lvmthin gui

this patch adds an lvmthin scan to the api, so that we can get a list
of thinpools for a specific vg via an api call

Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
This commit is contained in:
Dominik Csapak
2016-02-19 14:51:44 +01:00
committed by Dietmar Maurer
parent a8f47479d5
commit d0ea89e564
2 changed files with 49 additions and 0 deletions

View File

@ -238,6 +238,41 @@ __PACKAGE__->register_method ({
return PVE::RESTHandler::hash_to_array($res, 'vg');
}});
__PACKAGE__->register_method ({
name => 'thinlvmscan',
path => 'lvmthin',
method => 'GET',
description => "List local LVM Thin Pools.",
protected => 1,
proxyto => "node",
permissions => {
check => ['perm', '/storage', ['Datastore.Allocate']],
},
parameters => {
additionalProperties => 0,
properties => {
node => get_standard_option('pve-node'),
vg => {
type => 'string',
pattern => '[a-zA-Z0-9\.\+\_][a-zA-Z0-9\.\+\_\-]+', # see lvm(8) manpage
maxLength => 100,
},
},
},
returns => {
type => 'array',
items => {
type => "object",
properties => {
lv => { type => 'string'},
},
},
},
code => sub {
my ($param) = @_;
return PVE::Storage::LvmThinPlugin::list_thinpools($param->{vg});
}});
__PACKAGE__->register_method ({
name => 'usbscan',
path => 'usb',

View File

@ -163,6 +163,20 @@ sub list_images {
return $res;
}
sub list_thinpools {
my ($vg) = @_;
my $lvs = PVE::Storage::LVMPlugin::lvm_list_volumes($vg);
my $thinpools = [];
foreach my $lvname (keys %{$lvs->{$vg}}) {
next if $lvs->{$vg}->{$lvname}->{lv_type} ne 't';
push @$thinpools, { lv => $lvname };
}
return $thinpools;
}
sub status {
my ($class, $storeid, $scfg, $cache) = @_;