nvmf: add rpc for getting transport information
Change-Id: I8c3cbc1b08a219844c9b25f8c8494efd09e347f6 Signed-off-by: Seth Howell <seth.howell@intel.com> Reviewed-on: https://review.gerrithub.io/430623 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
433a1e7b67
commit
c89b7bac82
@ -3394,6 +3394,41 @@ Example response:
|
||||
}
|
||||
~~~
|
||||
|
||||
## get_nvmf_transports method {#rpc_get_nvmf_transports}
|
||||
|
||||
### Parameters
|
||||
|
||||
This method has no parameters.
|
||||
|
||||
### Example
|
||||
|
||||
Example request:
|
||||
~~~
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1,
|
||||
"method": "get_nvmf_transports"
|
||||
}
|
||||
~~~
|
||||
|
||||
Example response:
|
||||
~~~
|
||||
{
|
||||
"jsonrpc": "2.0",
|
||||
"id": 1,
|
||||
"result": [
|
||||
{
|
||||
"type": "RDMA".
|
||||
"max_queue_depth": 128,
|
||||
"max_qpairs_per_ctrlr": 64,
|
||||
"in_capsule_data_size": 4096,
|
||||
"max_io_size": 131072,
|
||||
"io_unit_size": 131072
|
||||
}
|
||||
]
|
||||
}
|
||||
~~~
|
||||
|
||||
# Vhost Target {#jsonrpc_components_vhost_tgt}
|
||||
|
||||
The following common preconditions need to be met in all target types.
|
||||
|
@ -1560,3 +1560,51 @@ nvmf_rpc_create_transport(struct spdk_jsonrpc_request *request,
|
||||
}
|
||||
|
||||
SPDK_RPC_REGISTER("nvmf_create_transport", nvmf_rpc_create_transport, SPDK_RPC_RUNTIME)
|
||||
|
||||
static void
|
||||
dump_nvmf_transport(struct spdk_json_write_ctx *w, struct spdk_nvmf_transport *transport)
|
||||
{
|
||||
const struct spdk_nvmf_transport_opts *opts = spdk_nvmf_get_transport_opts(transport);
|
||||
spdk_nvme_transport_type_t type = spdk_nvmf_get_transport_type(transport);
|
||||
|
||||
spdk_json_write_object_begin(w);
|
||||
|
||||
spdk_json_write_named_string(w, "trtype", spdk_nvme_transport_id_trtype_str(type));
|
||||
spdk_json_write_named_uint32(w, "max_queue_depth", opts->max_queue_depth);
|
||||
spdk_json_write_named_uint32(w, "max_qpairs_per_ctrlr", opts->max_qpairs_per_ctrlr);
|
||||
spdk_json_write_named_uint32(w, "in_capsule_data_size", opts->in_capsule_data_size);
|
||||
spdk_json_write_named_uint32(w, "max_io_size", opts->max_io_size);
|
||||
spdk_json_write_named_uint32(w, "io_unit_size", opts->io_unit_size);
|
||||
spdk_json_write_named_uint32(w, "max_aq_depth", opts->max_aq_depth);
|
||||
|
||||
spdk_json_write_object_end(w);
|
||||
}
|
||||
|
||||
static void
|
||||
nvmf_rpc_get_nvmf_transports(struct spdk_jsonrpc_request *request,
|
||||
const struct spdk_json_val *params)
|
||||
{
|
||||
struct spdk_json_write_ctx *w;
|
||||
struct spdk_nvmf_transport *transport;
|
||||
|
||||
if (params != NULL) {
|
||||
spdk_jsonrpc_send_error_response(request, SPDK_JSONRPC_ERROR_INVALID_PARAMS,
|
||||
"get_nvmf_transports requires no parameters");
|
||||
return;
|
||||
}
|
||||
|
||||
w = spdk_jsonrpc_begin_result(request);
|
||||
if (w == NULL) {
|
||||
return;
|
||||
}
|
||||
|
||||
spdk_json_write_array_begin(w);
|
||||
transport = spdk_nvmf_transport_get_first(g_spdk_nvmf_tgt);
|
||||
while (transport) {
|
||||
dump_nvmf_transport(w, transport);
|
||||
transport = spdk_nvmf_transport_get_next(transport);
|
||||
}
|
||||
spdk_json_write_array_end(w);
|
||||
spdk_jsonrpc_end_result(request, w);
|
||||
}
|
||||
SPDK_RPC_REGISTER("get_nvmf_transports", nvmf_rpc_get_nvmf_transports, SPDK_RPC_RUNTIME)
|
||||
|
@ -1312,6 +1312,14 @@ Format: 'user:u1 secret:s1 muser:mu1 msecret:ms1,user:u2 secret:s2 muser:mu2 mse
|
||||
p.add_argument('-a', '--max-aq-depth', help='Max number of admin cmds per AQ', type=int)
|
||||
p.set_defaults(func=nvmf_create_transport)
|
||||
|
||||
@call_cmd
|
||||
def get_nvmf_transports(args):
|
||||
print_dict(rpc.nvmf.get_nvmf_transports(args.client))
|
||||
|
||||
p = subparsers.add_parser('get_nvmf_transports',
|
||||
help='Display nvmf transports')
|
||||
p.set_defaults(func=get_nvmf_transports)
|
||||
|
||||
@call_cmd
|
||||
def get_nvmf_subsystems(args):
|
||||
print_dict(rpc.nvmf.get_nvmf_subsystems(args.client))
|
||||
|
@ -98,6 +98,15 @@ def nvmf_create_transport(client,
|
||||
return client.call('nvmf_create_transport', params)
|
||||
|
||||
|
||||
def get_nvmf_transports(client):
|
||||
"""Get list of NVMe-oF transports.
|
||||
|
||||
Returns:
|
||||
List of NVMe-oF transport objects.
|
||||
"""
|
||||
return client.call('get_nvmf_transports')
|
||||
|
||||
|
||||
def get_nvmf_subsystems(client):
|
||||
"""Get list of NVMe-oF subsystems.
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user