X-Git-Url: https://git.proxmox.com/?p=pve-client.git;a=blobdiff_plain;f=pveclient;h=09e308657e4494bf4501a1bc8c286ea033d60559;hp=f78770b5d4ce5f50bdf60622e8992ef057356b18;hb=faa47c20e27c8d4050594e9abaa2c65d792a7eda;hpb=4db9ff67bc9b370e179e568f102be9242323632a diff --git a/pveclient b/pveclient index f78770b..09e3086 100755 --- a/pveclient +++ b/pveclient @@ -8,7 +8,9 @@ use Cwd 'abs_path'; use Data::Dumper; use PVE::APIClient::JSONSchema qw(register_standard_option get_standard_option); +use PVE::APIClient::CLIFormatter; use PVE::APIClient::CLIHandler; +use PVE::APIClient::PTY; use PVE::APIClient::LWP; use PVE::APIClient::Helpers; @@ -35,8 +37,8 @@ sub call_api_method { my $config = PVE::APIClient::Config->load(); - # test if api path exists - my $info = PVE::APIClient::Helpers::lookup_api_method($path, $method); + my $uri_param = {}; + my $info = PVE::APIClient::Helpers::find_method_info($path, $method, $uri_param); my $conn = PVE::APIClient::Config->remote_conn($config, $remote); @@ -49,6 +51,11 @@ sub call_api_method { use base qw(PVE::APIClient::CLIHandler); +sub read_password { + return PVE::APIClient::PTY::read_password("Remote password: ") +} + + my $cmd = $ARGV[0]; if ($cmd && $cmd eq 'packagedepends') { @@ -78,12 +85,16 @@ my $path_returns = { type => 'null' }; # dynamically update schema definition for direct API call # like: pveclient api -if (my $info = PVE::APIClient::Helpers::extract_path_info()) { - $path_properties = $info->{parameters}->{properties}; +my $uri_param = {}; +if (my $info = PVE::APIClient::Helpers::extract_path_info($uri_param)) { + foreach my $key (keys %{$info->{parameters}->{properties}}) { + next if defined($uri_param->{$key}); + $path_properties->{$key} = $info->{parameters}->{properties}->{$key}; + } $path_returns = $info->{returns}; } -$path_properties->{format} = get_standard_option('pveclient-output-format'), +$path_properties->{format} = get_standard_option('pve-output-format'), $path_properties->{remote} = get_standard_option('pveclient-remote-name'); $path_properties->{api_path} = { description => "API path.", @@ -98,14 +109,18 @@ $path_properties->{api_path} = { my $format_result = sub { my ($data) = @_; - PVE::APIClient::Helpers::print_result($data, $path_returns); + my $format = PVE::APIClient::Helpers::get_output_format(); + + my $options = PVE::APIClient::CLIFormatter::query_terminal_options({}); + + PVE::APIClient::CLIFormatter::print_api_result($format, $data, $path_returns, undef, $options); }; __PACKAGE__->register_method ({ name => 'pveclient_get', path => 'pveclient_get', method => 'GET', - description => "call API GET on .", + description => "Call API GET on .", parameters => { additionalProperties => 0, properties => $path_properties, @@ -121,7 +136,7 @@ __PACKAGE__->register_method ({ name => 'pveclient_set', path => 'pveclient_set', method => 'PUT', - description => "call API PUT on .", + description => "Call API PUT on .", parameters => { additionalProperties => 0, properties => $path_properties, @@ -136,8 +151,8 @@ __PACKAGE__->register_method ({ __PACKAGE__->register_method ({ name => 'pveclient_create', path => 'pveclient_create', - method => 'PUSH', - description => "call API PUSH on .", + method => 'POST', + description => "Call API POST on .", parameters => { additionalProperties => 0, properties => $path_properties, @@ -153,7 +168,7 @@ __PACKAGE__->register_method ({ name => 'pveclient_delete', path => 'pveclient_delete', method => 'DELETE', - description => "call API DELETE on .", + description => "Call API DELETE on .", parameters => { additionalProperties => 0, properties => $path_properties, @@ -172,9 +187,12 @@ our $cmddef = { lxc => $PVE::APIClient::Commands::lxc::cmddef, remote => $PVE::APIClient::Commands::remote::cmddef, + resume => [ 'PVE::APIClient::Commands::GuestStatus', 'resume', ['remote', 'vmid']], + shutdown => [ 'PVE::APIClient::Commands::GuestStatus', 'shutdown', ['remote', 'vmid']], spice => [ 'PVE::APIClient::Commands::GuestStatus', 'spice', ['remote', 'vmid']], start => [ 'PVE::APIClient::Commands::GuestStatus', 'start', ['remote', 'vmid']], stop => [ 'PVE::APIClient::Commands::GuestStatus', 'stop', ['remote', 'vmid']], + suspend => [ 'PVE::APIClient::Commands::GuestStatus', 'suspend', ['remote', 'vmid']], api => { get => [ __PACKAGE__, 'pveclient_get', ['remote', 'api_path'], {}, $format_result ], @@ -185,4 +203,11 @@ our $cmddef = { }; +if ($cmd && $cmd eq 'printsynopsis') { + + print __PACKAGE__->generate_asciidoc_synopsis(); + + exit(0); +} + __PACKAGE__->run_cli_handler();