Commit 52381094 authored by Ben Walker's avatar Ben Walker Committed by Jim Harris
Browse files

nvmf: Dump new-style configuration RPCs



Avoid using the deprecated construct_nvmf_subsystem
when dumping configuration.

Change-Id: I908d87bdd77a8b2a8e54baeb7b73e8b52c4912ee
Signed-off-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/425186


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
parent ca12cb30
Loading
Loading
Loading
Loading
+60 −29
Original line number Diff line number Diff line
@@ -332,15 +332,25 @@ spdk_nvmf_write_subsystem_config_json(struct spdk_json_write_ctx *w,

	/* { */
	spdk_json_write_object_begin(w);
	spdk_json_write_named_string(w, "method", "construct_nvmf_subsystem");
	spdk_json_write_named_string(w, "method", "nvmf_subsystem_create");

	/*     "params" : { */
	spdk_json_write_named_object_begin(w, "params");
	spdk_json_write_named_string(w, "nqn", spdk_nvmf_subsystem_get_nqn(subsystem));
	spdk_json_write_named_bool(w, "allow_any_host", spdk_nvmf_subsystem_get_allow_any_host(subsystem));
	spdk_json_write_named_string(w, "serial_number", spdk_nvmf_subsystem_get_sn(subsystem));

	max_namespaces = spdk_nvmf_subsystem_get_max_namespaces(subsystem);
	if (max_namespaces != 0) {
		spdk_json_write_named_uint32(w, "max_namespaces", max_namespaces);
	}

	/*     } "params" */
	spdk_json_write_object_end(w);

	/* } */
	spdk_json_write_object_end(w);

	/*         "listen_addresses" : [ */
	spdk_json_write_named_array_begin(w, "listen_addresses");
	for (listener = spdk_nvmf_subsystem_get_first_listener(subsystem); listener != NULL;
	     listener = spdk_nvmf_subsystem_get_next_listener(subsystem, listener)) {
		trid = spdk_nvmf_listener_get_trid(listener);
@@ -348,8 +358,17 @@ spdk_nvmf_write_subsystem_config_json(struct spdk_json_write_ctx *w,
		trtype = spdk_nvme_transport_id_trtype_str(trid->trtype);
		adrfam = spdk_nvme_transport_id_adrfam_str(trid->adrfam);

		/*        { */
		spdk_json_write_object_begin(w);
		spdk_json_write_named_string(w, "method", "nvmf_subsystem_add_listener");

		/*     "params" : { */
		spdk_json_write_named_object_begin(w, "params");

		spdk_json_write_named_string(w, "nqn", spdk_nvmf_subsystem_get_nqn(subsystem));

		/*     "listen_address" : { */
		spdk_json_write_named_object_begin(w, "listen_address");

		spdk_json_write_named_string(w, "trtype", trtype);
		if (adrfam) {
			spdk_json_write_named_string(w, "adrfam", adrfam);
@@ -357,36 +376,50 @@ spdk_nvmf_write_subsystem_config_json(struct spdk_json_write_ctx *w,

		spdk_json_write_named_string(w, "traddr", trid->traddr);
		spdk_json_write_named_string(w, "trsvcid", trid->trsvcid);
		/*     } "listen_address" */
		spdk_json_write_object_end(w);

		/*     } "params" */
		spdk_json_write_object_end(w);

		/* } */
		spdk_json_write_object_end(w);
	}
	spdk_json_write_array_end(w);
	/*         ] "listen_addresses" */

	/*         "hosts" : [ */
	spdk_json_write_named_array_begin(w, "hosts");
	for (host = spdk_nvmf_subsystem_get_first_host(subsystem); host != NULL;
	     host = spdk_nvmf_subsystem_get_next_host(subsystem, host)) {
		spdk_json_write_string(w, spdk_nvmf_host_get_nqn(host));
	}
	spdk_json_write_array_end(w);
	/*         ] "hosts" */

	spdk_json_write_named_string(w, "serial_number", spdk_nvmf_subsystem_get_sn(subsystem));
		spdk_json_write_object_begin(w);
		spdk_json_write_named_string(w, "method", "nvmf_subsystem_add_host");

	max_namespaces = spdk_nvmf_subsystem_get_max_namespaces(subsystem);
	if (max_namespaces != 0) {
		spdk_json_write_named_uint32(w, "max_namespaces", max_namespaces);
		/*     "params" : { */
		spdk_json_write_named_object_begin(w, "params");

		spdk_json_write_named_string(w, "nqn", spdk_nvmf_subsystem_get_nqn(subsystem));
		spdk_json_write_named_string(w, "host", spdk_nvmf_host_get_nqn(host));

		/*     } "params" */
		spdk_json_write_object_end(w);

		/* } */
		spdk_json_write_object_end(w);
	}

	/*         "namespaces" : [ */
	spdk_json_write_named_array_begin(w, "namespaces");
	for (ns = spdk_nvmf_subsystem_get_first_ns(subsystem); ns != NULL;
	     ns = spdk_nvmf_subsystem_get_next_ns(subsystem, ns)) {
		spdk_nvmf_ns_get_opts(ns, &ns_opts, sizeof(ns_opts));

		/*         { */
		spdk_json_write_object_begin(w);
		spdk_json_write_named_string(w, "method", "nvmf_subsystem_add_ns");

		/*     "params" : { */
		spdk_json_write_named_object_begin(w, "params");

		spdk_json_write_named_string(w, "nqn", spdk_nvmf_subsystem_get_nqn(subsystem));

		/*     "namespace" : { */
		spdk_json_write_named_object_begin(w, "namespace");

		spdk_json_write_named_uint32(w, "nsid", spdk_nvmf_ns_get_id(ns));
		spdk_json_write_named_string(w, "bdev_name", spdk_bdev_get_name(spdk_nvmf_ns_get_bdev(ns)));

@@ -405,12 +438,9 @@ spdk_nvmf_write_subsystem_config_json(struct spdk_json_write_ctx *w,
			spdk_uuid_fmt_lower(uuid_str, sizeof(uuid_str), &ns_opts.uuid);
			spdk_json_write_named_string(w, "uuid",  uuid_str);
		}
		/*         } */
		spdk_json_write_object_end(w);
	}

	/*         ] "namespaces" */
	spdk_json_write_array_end(w);
		/*     "namespace" */
		spdk_json_write_object_end(w);

		/*     } "params" */
		spdk_json_write_object_end(w);
@@ -418,6 +448,7 @@ spdk_nvmf_write_subsystem_config_json(struct spdk_json_write_ctx *w,
		/* } */
		spdk_json_write_object_end(w);
	}
}

void
spdk_nvmf_tgt_write_config_json(struct spdk_json_write_ctx *w, struct spdk_nvmf_tgt *tgt)
+5 −6
Original line number Diff line number Diff line
@@ -81,12 +81,11 @@ def clear_bdev_subsystem(args, bdev_config):


def get_nvmf_destroy_method(nvmf):
    destroy_method_map = {'construct_nvmf_subsystem': "delete_nvmf_subsystem",
                          'set_nvmf_target_config': None,
                          'set_nvmf_target_options': None,
                          'nvmf_create_transport': None
                          }
    destroy_method_map = {'nvmf_subsystem_create': "delete_nvmf_subsystem"}
    try:
        return destroy_method_map[nvmf['method']]
    except KeyError:
        return None


def clear_nvmf_subsystem(args, nvmf_config):