use base qw(PVE::RESTHandler);
-my $extract_pool_data = sub {
- my ($data, $full) = @_;
-
- my $res = {};
-
- $res->{comment} = $data->{comment} if defined($data->{comment});
-
- return $res if !$full;
-
- $res->{vms} = $data->{vms} ? [ keys %{$data->{vms}} ] : [];
-
- $res->{storages} = $data->{storage} ? [ keys %{$data->{storage}} ] : [];
-
- return $res;
-};
-
__PACKAGE__->register_method ({
name => 'index',
path => '',
my $usercfg = $rpcenv->{user_cfg};
- foreach my $poolpath (keys %{$usercfg->{pools}}) {
- my $entry = &$extract_pool_data($usercfg->{pools}->{$poolpath});
- $entry->{poolid} = $poolpath;
+ foreach my $pool (keys %{$usercfg->{pools}}) {
+ my $entry = { poolid => $pool };
+ my $data = $usercfg->{pools}->{$pool};
+ $entry->{comment} = $data->{comment} if defined($data->{comment});
push @$res, $entry;
}
return undef;
}});
-# fixme: return format!
__PACKAGE__->register_method ({
name => 'read_pool',
path => '{poolid}',
poolid => {type => 'string', format => 'pve-poolid' },
},
},
- returns => {},
+ returns => {
+ type => "object",
+ additionalProperties => 0,
+ properties => {
+ comment => { type => 'string', optional => 1 },
+ members => {
+ type => 'array',
+ items => {
+ type => "object",
+ additionalProperties => 0,
+ properties => {
+ type => { type => 'string', enum => ['vm', 'storage'] },
+ id => { type => 'string' },
+ vmid => { type => 'integer', optional => 1 },
+ storage => { type => 'string', optional => 1 },
+ },
+ },
+ },
+ },
+ },
code => sub {
my ($param) = @_;
die "pool '$pool' does not exist\n"
if !$data;
- return &$extract_pool_data($data, 1);
+ my $members = [];
+
+ foreach my $vmid (keys %{$data->{vms}}) {
+ push @$members, {
+ id => "vm/$vmid",
+ vmid => $vmid + 0,
+ type => 'vm',
+ };
+ }
+
+ foreach my $storage (keys %{$data->{storage}}) {
+ push @$members, {
+ id => "storage/$storage",
+ storage => $storage,
+ type => 'storage',
+ };
+ }
+
+ my $res = { members => $members };
+ $res->{comment} = $data->{comment} if defined($data->{comment});
+
+ return $res;
}});