Spdk/scripts/rpc/nvmf.py
Daniel Verkamp 57ae6bf646 nvmf: allow overriding namespace UUID in RPCs
The default is still to retrieve the bdev UUID, but now the end user may
also specify their own UUID if desired when adding NVMe-oF target
namespaces via construct_nvmf_subsystem or nvmf_subsystem_add_ns.

Change-Id: I950eb84b9fdecbc2eae8ca39d9acd6acabe8d31d
Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
Reviewed-on: https://review.gerrithub.io/414269
Tested-by: SPDK Automated Test System <sys_sgsw@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
2018-06-11 07:41:39 +00:00

128 lines
3.2 KiB
Python
Executable File

def get_nvmf_subsystems(client, args):
return client.call('get_nvmf_subsystems')
def construct_nvmf_subsystem(client, args):
params = {
'nqn': args.nqn,
'serial_number': args.serial_number,
}
if args.max_namespaces:
params['max_namespaces'] = args.max_namespaces
if args.listen:
params['listen_addresses'] = [dict(u.split(":", 1) for u in a.split(" "))
for a in args.listen.split(",")]
if args.hosts:
hosts = []
for u in args.hosts.strip().split(" "):
hosts.append(u)
params['hosts'] = hosts
if args.allow_any_host:
params['allow_any_host'] = True
if args.namespaces:
namespaces = []
for u in args.namespaces.strip().split(" "):
bdev_name = u
nsid = 0
if ':' in u:
(bdev_name, nsid) = u.split(":")
ns_params = {'bdev_name': bdev_name}
nsid = int(nsid)
if nsid != 0:
ns_params['nsid'] = nsid
namespaces.append(ns_params)
params['namespaces'] = namespaces
return client.call('construct_nvmf_subsystem', params)
def nvmf_subsystem_add_listener(client, args):
listen_address = {'trtype': args.trtype,
'traddr': args.traddr,
'trsvcid': args.trsvcid}
if args.adrfam:
listen_address['adrfam'] = args.adrfam
params = {'nqn': args.nqn,
'listen_address': listen_address}
return client.call('nvmf_subsystem_add_listener', params)
def nvmf_subsystem_remove_listener(client, args):
listen_address = {'trtype': args.trtype,
'traddr': args.traddr,
'trsvcid': args.trsvcid}
if args.adrfam:
listen_address['adrfam'] = args.adrfam
params = {'nqn': args.nqn,
'listen_address': listen_address}
return client.call('nvmf_subsystem_remove_listener', params)
def nvmf_subsystem_add_ns(client, args):
ns = {'bdev_name': args.bdev_name}
if args.nsid:
ns['nsid'] = args.nsid
if args.nguid:
ns['nguid'] = args.nguid
if args.eui64:
ns['eui64'] = args.eui64
if args.uuid:
ns['uuid'] = args.uuid
params = {'nqn': args.nqn,
'namespace': ns}
return client.call('nvmf_subsystem_add_ns', params)
def nvmf_subsystem_remove_ns(client, args):
params = {'nqn': args.nqn,
'nsid': args.nsid}
return client.call('nvmf_subsystem_remove_ns', params)
def nvmf_subsystem_add_host(client, args):
params = {'nqn': args.nqn,
'host': args.host}
return client.call('nvmf_subsystem_add_host', params)
def nvmf_subsystem_remove_host(client, args):
params = {'nqn': args.nqn,
'host': args.host}
return client.call('nvmf_subsystem_remove_host', params)
def nvmf_subsystem_allow_any_host(client, args):
params = {'nqn': args.nqn}
params['allow_any_host'] = False if args.disable else True
return client.call('nvmf_subsystem_allow_any_host', params)
def delete_nvmf_subsystem(client, args):
params = {'nqn': args.subsystem_nqn}
return client.call('delete_nvmf_subsystem', params)