Commit c89b7bac authored by Seth Howell's avatar Seth Howell Committed by Ben Walker
Browse files

nvmf: add rpc for getting transport information



Change-Id: I8c3cbc1b08a219844c9b25f8c8494efd09e347f6
Signed-off-by: default avatarSeth Howell <seth.howell@intel.com>
Reviewed-on: https://review.gerrithub.io/430623


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
parent 433a1e7b
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -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.
+48 −0
Original line number Diff line number Diff line
@@ -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)
+8 −0
Original line number Diff line number Diff line
@@ -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))
+9 −0
Original line number Diff line number Diff line
@@ -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.