[pve-devel] [PATCH pve-manager] pvesh: proxy : display result if not json

Alexandre Derumier aderumier at odiso.com
Mon Feb 10 09:16:24 CET 2020


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 at 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 <aderumier at 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



More information about the pve-devel mailing list