package PVE::APIClient::Commands::list;

use strict;
use warnings;
use JSON;

use PVE::APIClient::JSONSchema qw(get_standard_option);

use PVE::APIClient::Helpers;
use PVE::APIClient::Config;
use PVE::APIClient::CLIHandler;

use base qw(PVE::APIClient::CLIHandler);

# define as array to keep ordering
my $list_returns_properties = [
    'vmid' => get_standard_option('pve-vmid'),
    'node' => get_standard_option('pve-node'),
    'type' => { type => 'string' },
    'status' =>  { type => 'string' },
    'name' => { type => 'string', optional => 1 },
    ];

__PACKAGE__->register_method ({
    name => 'list',
    path => 'list',
    method => 'GET',
    description => "List containers.",
    parameters => {
	additionalProperties => 0,
	properties => {
	    remote => get_standard_option('pveclient-remote-name'),
	    'format' => get_standard_option('pve-output-format'),
	},
    },
    returns => {
	type => 'array',
	items => {
	    type => 'object',
	    properties => { @$list_returns_properties },
	},
    },
    code => sub {
	my ($param) = @_;

	my $format = PVE::APIClient::Tools::extract_param($param, 'format');
	PVE::APIClient::Helpers::set_output_format($format);

	my $config = PVE::APIClient::Config->load();
	my $conn = PVE::APIClient::Config->remote_conn($config, $param->{remote});

	return $conn->get('api2/json/cluster/resources', { type => 'vm' });
    }});


our $cmddef = [ __PACKAGE__, 'list', ['remote'], {}, sub {
    PVE::APIClient::Helpers::print_ordered_result($list_returns_properties, @_);
}];

1;
