pve-client/PVE/APIClient/Commands/list.pm
René Jochum 5b0908432b Add a simple implementation of list
Signed-off-by: René Jochum <r.jochum@proxmox.com>
2018-06-12 06:39:35 +02:00

58 lines
1.4 KiB
Perl

package PVE::APIClient::Commands::list;
use strict;
use warnings;
use JSON;
use PVE::JSONSchema qw(get_standard_option);
use base qw(PVE::CLIHandler);
__PACKAGE__->register_method ({
name => 'list',
path => 'list',
method => 'GET',
description => "List containers.",
parameters => {
additionalProperties => 0,
properties => {
remote => get_standard_option('pveclient-remote-name'),
format => {
type => 'string',
description => 'Output format',
enum => [ 'table', 'json' ],
optional => 1,
default => 'table',
}
},
},
returns => { type => 'null'},
code => sub {
my ($param) = @_;
my $config = PVE::APIClient::Config->load();
my $conn = PVE::APIClient::Config->remote_conn($config, $param->{remote});
my $resources = $conn->get('api2/json/cluster/resources', { type => 'vm' });
if (!defined($param->{format}) or $param->{format} eq 'table') {
my $headers = ['Node', 'VMID', 'Type', 'Name', 'Status'];
my $data = [];
for my $el (@$resources) {
push(@$data, [$el->{node}, $el->{vmid}, $el->{type}, $el->{name}, $el->{status}]);
}
printf("%10s %10s %10s %10s %10s\n", @$headers);
for my $row (@$data) {
printf("%10s %10s %10s %10s %10s\n", @$row);
}
} else {
print JSON::to_json($resources, {utf8 => 1, pretty => 1});
}
return undef;
}});
our $cmddef = [ __PACKAGE__, 'list', ['remote']];
1;