From 672ed49bbcf9e79e11f663a9d2eb22ad52771856 Mon Sep 17 00:00:00 2001 From: Daniel Verkamp Date: Wed, 19 Jul 2017 16:20:01 -0700 Subject: [PATCH] rpc: add get_rpc_methods RPC call Change-Id: I93690c923feb1a78e88dd5b9d69d9e8e24fd6034 Signed-off-by: Daniel Verkamp Reviewed-on: https://review.gerrithub.io/370560 Tested-by: SPDK Automated Test System Reviewed-by: Ben Walker --- lib/rpc/rpc.c | 28 ++++++++++++++++++++++++++++ scripts/rpc.py | 6 ++++++ 2 files changed, 34 insertions(+) diff --git a/lib/rpc/rpc.c b/lib/rpc/rpc.c index 406fd9f46..2f96bf5fe 100644 --- a/lib/rpc/rpc.c +++ b/lib/rpc/rpc.c @@ -181,3 +181,31 @@ spdk_rpc_close(void) spdk_jsonrpc_server_shutdown(g_jsonrpc_server); } } + + +static void +spdk_rpc_get_rpc_methods(struct spdk_jsonrpc_request *request, + const struct spdk_json_val *params) +{ + struct spdk_json_write_ctx *w; + struct spdk_rpc_method *m; + + if (params != NULL) { + spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS, + "get_rpc_methods requires no parameters"); + return; + } + + w = spdk_jsonrpc_begin_result(request); + if (w == NULL) { + return; + } + + spdk_json_write_array_begin(w); + SLIST_FOREACH(m, &g_rpc_methods, slist) { + spdk_json_write_string(w, m->name); + } + spdk_json_write_array_end(w); + spdk_jsonrpc_end_result(request, w); +} +SPDK_RPC_REGISTER("get_rpc_methods", spdk_rpc_get_rpc_methods) diff --git a/scripts/rpc.py b/scripts/rpc.py index 1c45551fd..994ca5148 100755 --- a/scripts/rpc.py +++ b/scripts/rpc.py @@ -563,5 +563,11 @@ def get_vhost_blk_controllers(args): p = subparsers.add_parser('get_vhost_blk_controllers', help='List vhost block controllers') p.set_defaults(func=get_vhost_blk_controllers) +def get_rpc_methods(args): + print_dict(jsonrpc_call('get_rpc_methods')) + +p = subparsers.add_parser('get_rpc_methods', help='Get list of supported RPC methods') +p.set_defaults(func=get_rpc_methods) + args = parser.parse_args() args.func(args)