Pārlūkot izejas kodu

support to print jsonrpc reponse as yaml

- the output is more compact
- in kamcli.ini set outformat=yaml inside section [jsonrpc]
Daniel-Constantin Mierla 10 gadi atpakaļ
vecāks
revīzija
00c0385152
1 mainītis faili ar 14 papildinājumiem un 1 dzēšanām
  1. 14 1
      kamcli/iorpc.py

+ 14 - 1
kamcli/iorpc.py

@@ -6,6 +6,13 @@ import threading
 import json
 from random import randint
 
+iorpc_yaml_format = True
+try:
+    import yaml
+except ImportError, e:
+    iorpc_yaml_format = False
+    pass # module doesn't exist, deal with it.
+
 
 COMMAND_NAMES = {
     "stats.clear_statistics": {
@@ -78,6 +85,11 @@ class IOFifoThread (threading.Thread):
             print
             if self.oformat == "json":
                 print json.dumps(json.loads(rdata), indent=4, separators=(',', ': '))
+            elif self.oformat == "yaml":
+                if iorpc_yaml_format is True:
+                    print yaml.safe_dump(json.loads(rdata), default_flow_style=False)
+                else:
+                    print json.dumps(json.loads(rdata), indent=4, separators=(',', ': '))
             else:
                 print rdata
 
@@ -213,7 +225,8 @@ def command_jsonrpc_fifo(ctx, dryrun, sndpath, rcvname, oformat, cmd, params):
 def command_ctl(ctx, cmd, params):
     if ctx.gconfig.get('ctl', 'type') == 'jsonrpc':
         command_jsonrpc_fifo(ctx, False, ctx.gconfig.get('jsonrpc', 'path'),
-                ctx.gconfig.get('jsonrpc', 'rplnamebase'), "json", COMMAND_NAMES[cmd]['rpc'], params)
+                ctx.gconfig.get('jsonrpc', 'rplnamebase'), ctx.gconfig.get('jsonrpc', 'outformat'),
+                COMMAND_NAMES[cmd]['rpc'], params)
     else:
         command_mi_fifo(ctx, False, ctx.gconfig.get('mi', 'path'),
                 ctx.gconfig.get('mi', 'rplnamebase'), "raw", COMMAND_NAMES[cmd]['mi'], params)