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)