}
};
+my $default_output_format = 'text';
+my $client_output_format = $default_output_format;
+
+sub set_output_format {
+ my ($format) = @_;
+
+ if (!defined($format)) {
+ $client_output_format = $default_output_format;
+ } else {
+ $client_output_format = $format;
+ }
+}
+
+sub get_output_format {
+ return $client_output_format;
+}
+
+sub print_result {
+ my ($data, $result_schema) = @_;
+
+ my $format = get_output_format();
+
+ return if $result_schema->{type} eq 'null';
+
+ # TODO: implement different output formats ($format)
+
+ if ($format eq 'json') {
+ 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";
+ }
+ } else {
+ die "internal error: unknown output format"; # should not happen
+ }
+}
+
sub get_api_definition {
if (!defined($pve_api_definition)) {
$test_path_properties->([$0, @ARGV]);
} elsif ($cmd eq 'bashcomplete') {
my $cmdline = substr($ENV{COMP_LINE}, 0, $ENV{COMP_POINT});
- my $args = PVE::Tools::split_args($cmdline);
+ my $args = PVE::APIClient::Tools::split_args($cmdline);
$test_path_properties->($args);
}
}
return $info;
}
+sub get_vmid_resource {
+ my ($conn, $vmid) = @_;
+
+ my $resources = $conn->get('api2/json/cluster/resources', {type => 'vm'});
+
+ my $resource;
+ for my $tmp (@$resources) {
+ if ($tmp->{vmid} eq $vmid) {
+ $resource = $tmp;
+ last;
+ }
+ }
+
+ if (!defined($resource)) {
+ die "\"$vmid\" not found";
+ }
+
+ return $resource;
+}
+
+sub poll_task {
+ my ($conn, $node, $upid) = @_;
+
+ my $path = "api2/json/nodes/$node/tasks/$upid/status";
+
+ my $task_status;
+ while(1) {
+ $task_status = $conn->get($path, {});
+
+ if ($task_status->{status} eq "stopped") {
+ last;
+ }
+
+ sleep(10);
+ }
+
+ return $task_status->{exitstatus};
+}
+
1;