X-Git-Url: https://git.proxmox.com/?p=pve-client.git;a=blobdiff_plain;f=PVE%2FAPIClient%2FHelpers.pm;h=9ee00e9d127bcdc17308bc4964141adb10430840;hp=7d855ec6ce58fc6775569fbb426c364dcc3f58bf;hb=2ecf9b57e894b6308daee2e60a2d7f5bd417932c;hpb=2b267ba22efefb08ac15feac1107b920f6186f50 diff --git a/PVE/APIClient/Helpers.pm b/PVE/APIClient/Helpers.pm index 7d855ec..9ee00e9 100644 --- a/PVE/APIClient/Helpers.pm +++ b/PVE/APIClient/Helpers.pm @@ -51,31 +51,30 @@ sub print_result { # TODO: implement different output formats ($format) if ($format eq 'json') { - print to_json($data, {utf8 => 1, allow_nonref => 1, canonical => 1, pretty => 1 }); + print to_json($data, {utf8 => 1, allow_nonref => 1, canonical => 1, pretty => 1 }); } elsif ($format eq 'text') { - my $type = $result_schema->{type}; - if ($type eq 'object') { - die "implement me"; - } elsif ($type eq 'array') { - my $item_type = $result_schema->{items}->{type}; - if ($item_type eq 'object') { - die "implement me"; - } elsif ($item_type eq 'array') { - die "implement me"; - } else { - foreach my $el (@$data) { - print "$el\n" - } - } - } else { - print "$data\n"; - } + my $type = $result_schema->{type}; + if ($type eq 'object') { + die "implement me"; + } elsif ($type eq 'array') { + my $item_type = $result_schema->{items}->{type}; + if ($item_type eq 'object') { + die "implement me"; + } elsif ($item_type eq 'array') { + die "implement me"; + } else { + foreach my $el (@$data) { + print "$el\n" + } + } + } else { + print "$data\n"; + } } else { - die "internal error: unknown output format"; # should not happen + die "internal error: unknown output format"; # should not happen } } - my $__real_remove_formats; $__real_remove_formats = sub { my ($properties) = @_; @@ -164,7 +163,9 @@ sub find_method_info { my $stack = [ grep { length($_) > 0 } split('\/+' , $path)]; # skip empty fragments - my $child = $map_path_to_info->(get_api_definition(), $stack, $uri_param); + my $api = get_api_definition(); + + my $child = scalar(@$stack) ? $map_path_to_info->($api->{children}, $stack, $uri_param) : $api; if (!($child && $child->{info} && $child->{info}->{$method})) { return undef if $noerr; @@ -229,7 +230,7 @@ sub merge_api_definition_properties { sub complete_api_path { my ($text) = @_; - get_api_definition(); # make sure API data is loaded + my $api = get_api_definition(); # make sure API data is loaded $text =~ s!^/!!; @@ -238,10 +239,10 @@ sub complete_api_path { my $info; if (!defined($dir)) { $dir = ''; - $info = { children => $pve_api_definition }; + $info = $api; } else { my $stack = [ grep { length($_) > 0 } split('\/+' , $dir)]; # skip empty fragments - $info = $map_path_to_info->($pve_api_definition, $stack, {}); + $info = $map_path_to_info->($api->{children}, $stack, {}); } my $res = []; @@ -355,6 +356,10 @@ sub poll_task { sleep(2); } + if ($task_status->{exitstatus} ne "OK") { + die $task_status->{exitstatus}; + } + return $task_status->{exitstatus}; }