AdminSocket users: use generic formatting

All call() routines get a format parameter; all places where
JSONFormatter was created get a new_formatter() instead.
'plain' formatting is unsupported, and help is forced to be
'json-pretty' as it was.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
Formatter, admin_socket: make default formatter be json-pretty

If not given, default to json-pretty; if given but not equal to one
of the formatter choices, return NULL as before.  Remove defaulting
code in admin_socket.cc in favor of this.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
In general, flush in caller of dump worker rather than worker

This allows easier refactoring of workers (no dual flushes when code
changes).

Signed-off-by: Dan Mick <dan.mick@inktank.com>
ceph_argparse.py, ceph.in: validate_command: stop handling format

We were passing the entire parsed_args Namespace just to look at
and tack on 'format', and that's kinda silly; do it in the callers
instead.

Signed-off-by: Dan Mick <dan.mick@inktank.com>
ceph.in: admin_socket() now validates command and passes format

Signed-off-by: Dan Mick <dan.mick@inktank.com>
ceph.in: clean up help, fix partial matching on all help

Signed-off-by: Dan Mick <dan.mick@inktank.com>
ceph.in/ceph_argparse.py: move find_cmd_target() to ceph_argparse.py

Signed-off-by: Dan Mick <dan.mick@inktank.com>
OSD: provide newer command descs with module/perm/avail

Signed-off-by: Dan Mick <dan.mick@inktank.com>
OSD: "tell <osd.n>" version, bench, dump_pg_recovery_stats: formatted

Signed-off-by: Dan Mick <dan.mick@inktank.com>
PG: add formatted output to pg <pgid> query, list_missing

Signed-off-by: Dan Mick <dan.mick@inktank.com>
rest/test.py: osd lspools should be a 'GET'

Signed-off-by: Dan Mick <dan.mick@inktank.com>
MonCommands.h: osd pool delete "rw" perms, osd pool set no longer exp

Signed-off-by: Dan Mick <dan.mick@inktank.com>
ceph_rest_api.py: obtain and handle tell <osd> and pg <pgid> commands

Special treatment throughout for these commands:

* hack the help signature dump
* keep a 'flavor' per command to allow special handler() processing
* strip off 'tell/<target>' when constructing command
* allow multiple dicts with the same url for /pg?pgid=NN?cmd=XX
  (the parameters and get/put methods change)
* because of above, method must be validated in handler()
* validate the given OSD
* calculate target for command (mon, osd, pg)

Unrelated: make method_dict into global METHOD_DICT

Signed-off-by: Dan Mick <dan.mick@inktank.com>
ceph.in: remove dead code

Signed-off-by: Dan Mick <dan.mick@inktank.com>
ceph_argparse, mon: make "tell <pgid>" work (duplicating "pg <pgid>")

It's a wad of special cases, but it implements "tell <pgid>" such that
it has the same effect as "pg <pgid>".

Signed-off-by: Dan Mick <dan.mick@inktank.com>