pbsclient now uses a timeout of 25 seconds do decode and return the error
if one is returned in json form.

Signed-off-by: Dominik Csapak <d.csa...@proxmox.com>
---
 PVE/API2/Storage/FileRestore.pm | 21 ++++++++++++++++-----
 1 file changed, 16 insertions(+), 5 deletions(-)

diff --git a/PVE/API2/Storage/FileRestore.pm b/PVE/API2/Storage/FileRestore.pm
index 5630f52..7495e77 100644
--- a/PVE/API2/Storage/FileRestore.pm
+++ b/PVE/API2/Storage/FileRestore.pm
@@ -121,13 +121,24 @@ __PACKAGE__->register_method ({
        my $client = PVE::PBSClient->new($scfg, $storeid);
        my $ret = $client->file_restore_list([$scfg->{namespace}, $snap], 
$path, $base64);
 
-       # 'leaf' is a proper JSON boolean, map to perl-y bool
-       # TODO: make PBSClient decode all bools always as 1/0?
-       foreach my $item (@$ret) {
-           $item->{leaf} = $item->{leaf} ? 1 : 0;
+       if (ref($ret) eq "HASH") {
+           my $msg = $ret->{message};
+           if (my $code = $ret->{code}) {
+               die PVE::Exception->new("$msg\n", code => $code);
+           } else {
+               die "$msg\n";
+           }
+       } elsif (ref($ret) eq "ARRAY") {
+           # 'leaf' is a proper JSON boolean, map to perl-y bool
+           # TODO: make PBSClient decode all bools always as 1/0?
+           foreach my $item (@$ret) {
+               $item->{leaf} = $item->{leaf} ? 1 : 0;
+           }
+
+           return $ret;
        }
 
-       return $ret;
+       die "invalid proxmox-file-restore output";
     }});
 
 __PACKAGE__->register_method ({
-- 
2.30.2



_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel

Reply via email to