When a remote node not return a json, we got and error.

This is fixing this:

pvesh set /nodes/localname/network
UPID:kvmformation2:0034937B:09352894:5E41106C:srvreload:networking:root@pam:

pvesh set /nodes/remotenode/network
JSON text must be an object or array (but found number, string, true, false or 
null, use allow_nonref to allow this) at /usr/share/perl5/PVE/CLI/pvesh.pm line 
125.

This patch simply return raw result if it's not a json

Signed-off-by: Alexandre Derumier <aderum...@odiso.com>
---
 PVE/CLI/pvesh.pm | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/PVE/CLI/pvesh.pm b/PVE/CLI/pvesh.pm
index 9b8e3245..56d32c3f 100755
--- a/PVE/CLI/pvesh.pm
+++ b/PVE/CLI/pvesh.pm
@@ -122,7 +122,14 @@ sub proxy_handler {
     PVE::Tools::run_command($remcmd, errmsg => "proxy handler failed",
                            outfunc => sub { $json .= shift });
 
-    return decode_json($json);
+    my $decoded_json = undef;
+    eval {
+       $decoded_json = decode_json($json);
+    };
+    if ($@) {
+       return $json;
+    }
+    return $decoded_json;
 }
 
 sub extract_children {
-- 
2.20.1

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

Reply via email to