mirror of
https://git.proxmox.com/git/pve-client
synced 2025-10-04 22:01:29 +00:00
58 lines
1.4 KiB
Perl
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; |