JSON input / output for CLI utilities

Martin Schwenke martin at meltin.net
Sat May 29 10:31:08 UTC 2021


On Sat, 29 May 2021 06:23:10 -0400, Andrew Walker
<awalker at ixsystems.com> wrote:

> On Sat, May 29, 2021 at 5:55 AM Martin Schwenke <martin at meltin.net> wrote:
> 
> > Hi Andrew,
> >
> > On Thu, 27 May 2021 17:42:20 -0400, Andrew Walker via samba-technical
> > <samba-technical at lists.samba.org> wrote:
> >  
> > > I know we've added JSON output to a few of the CLI utils. Over the past
> > > year or so I've added this to various utils in FreeNAS (using  
> > libjansson).  
> > > Is there an overall strategy for this? I'd be happy to upstream what I  
> > have.
> >
> > Sounds good!
> >  
> > > Also is there an effort to add support for JSON input to them?  
> >
> > Your effort appears to be it!  Thanks for that!  :-)
> >
> > One wishlist item to think about... and my example is for CTDB...  :-)
> >
> > If adding JSON output and, perhaps, input it would cool to have the
> > command-line tools be able to run in a mode where they stay connected
> > to the relevant Unix domain socket.  The most useful example would
> > allow "ctdb statistics" to be repeatedly run within the one session, so
> > a reporting tool can periodically collect the output without the need
> > to reconnect.
> >
> > This could go hand-in-hand with addition of an interactive mode on
> > tools that don't have one (e.g. "ctdb").
> >
> > If this is an interesting idea then I'm happy to try to work on that
> > with you in whatever time I have available...
> >
> > peace & happiness,
> > martin
> >  
> 
> Yeah, I have some added for most of the ctdb commands.
> 
> truenas# ctdb -j status | jq
> {
>   "nodemap": {
>     "node_count": 2,
>     "deleted_node_count": 1,
>     "nodes": [
>       {
>         "pnn": 0,
>         "address": "192.168.122.176",
>         "flags_str": "OK",
>         "flags_raw": 0,
>         "partially_online": false,
>         "this_node": true
>       }
>     ]
>   },
>   "generation": 1598490685,
>   "size": 1,
>   "vnnmap": [
>     {
>       "hash": 0,
>       "lmaster": 0
>     }
>   ],
>   "recovery_mode_raw": 0,
>   "recovery_mode_str": "NORMAL"
> }

Looks good!

> This one will take a little more time since in the patchset I duplicated
> many functions from /lib/audit_logging to separate library
> "/lib/json_minimal" to have some minimal set of JSON-related functions to
> make bolting-on JSON support somewhat simpler.

No hurry...  :-)

peace & happiness,
martin



More information about the samba-technical mailing list