spdkcli: Catch JSONRPCException in execute_command

Move try-catch sections from create and delete commands to
execute_command method. Move refresh methods
to execute_command.

Change-Id: Idfa1cacd8a1a1c8ac738a84595610f4e57cace44
Signed-off-by: Pawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-on: https://review.gerrithub.io/c/442395
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Pawel Wodkowski <pawelx.wodkowski@intel.com>
Reviewed-by: Darek Stojaczyk <dariusz.stojaczyk@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/447599
This commit is contained in:
Pawel Kaminski 2019-01-28 11:08:32 -05:00 committed by Darek Stojaczyk
parent 8d31df3061
commit bcbf6e8483
3 changed files with 173 additions and 487 deletions

View File

@ -21,6 +21,9 @@ class UINode(ConfigNode):
for child in self.children: for child in self.children:
child.refresh() child.refresh()
def refresh_node(self):
self.refresh()
def ui_command_refresh(self): def ui_command_refresh(self):
self.refresh() self.refresh()
@ -36,10 +39,19 @@ class UINode(ConfigNode):
pparams, kparams) pparams, kparams)
except Exception as msg: except Exception as msg:
self.shell.log.error(str(msg)) self.shell.log.error(str(msg))
pass
else: else:
self.shell.log.debug("Command %s succeeded." % command) self.shell.log.debug("Command %s succeeded." % command)
return result return result
finally:
if command in ["create", "delete", "delete_all", "add_initiator",
"allow_any_host", "split_bdev", "add_lun",
"add_pg_ig_maps", "remove_target", "add_secret",
"destruct_split_bdev", "delete_pmem_pool",
"create_pmem_pool", "delete_secret_all",
"delete_initiator", "set_auth", "delete_secret",
"delete_pg_ig_maps"]:
self.get_root().refresh()
self.refresh_node()
class UIBdevs(UINode): class UIBdevs(UINode):
@ -90,14 +102,7 @@ class UILvolStores(UINode):
""" """
cluster_size = self.ui_eval_param(cluster_size, "number", None) cluster_size = self.ui_eval_param(cluster_size, "number", None)
self.get_root().create_lvol_store(lvs_name=name, bdev_name=bdev_name, cluster_sz=cluster_size)
try:
self.get_root().create_lvol_store(lvs_name=name, bdev_name=bdev_name, cluster_sz=cluster_size)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
def ui_command_delete(self, name=None, uuid=None): def ui_command_delete(self, name=None, uuid=None):
""" """
@ -109,14 +114,10 @@ class UILvolStores(UINode):
uuid - UUID number of the logical volume store to be deleted. uuid - UUID number of the logical volume store to be deleted.
""" """
self.delete(name, uuid) self.delete(name, uuid)
self.get_root().refresh()
self.refresh()
def ui_command_delete_all(self): def ui_command_delete_all(self):
for lvs in self._children: for lvs in self._children:
self.delete(None, lvs.lvs.uuid) self.delete(None, lvs.lvs.uuid)
self.get_root().refresh()
self.refresh()
def summary(self): def summary(self):
return "Lvol stores: %s" % len(self.children), None return "Lvol stores: %s" % len(self.children), None
@ -133,18 +134,13 @@ class UIBdev(UINode):
UIBdevObj(bdev, self) UIBdevObj(bdev, self)
def ui_command_get_bdev_iostat(self, name=None): def ui_command_get_bdev_iostat(self, name=None):
try: ret = self.get_root().get_bdevs_iostat(name=name)
ret = self.get_root().get_bdevs_iostat(name=name) self.shell.log.info(json.dumps(ret, indent=2))
self.shell.log.info(json.dumps(ret, indent=2))
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_delete_all(self): def ui_command_delete_all(self):
"""Delete all bdevs from this tree node.""" """Delete all bdevs from this tree node."""
for bdev in self._children: for bdev in self._children:
self.delete(bdev.name) self.delete(bdev.name)
self.get_root().refresh()
self.refresh()
def summary(self): def summary(self):
return "Bdevs: %d" % len(self.children), None return "Bdevs: %d" % len(self.children), None
@ -155,10 +151,7 @@ class UIMallocBdev(UIBdev):
UIBdev.__init__(self, "malloc", parent) UIBdev.__init__(self, "malloc", parent)
def delete(self, name): def delete(self, name):
try: self.get_root().delete_malloc_bdev(name=name)
self.get_root().delete_malloc_bdev(name=name)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, size, block_size, name=None, uuid=None): def ui_command_create(self, size, block_size, name=None, uuid=None):
""" """
@ -175,17 +168,10 @@ class UIMallocBdev(UIBdev):
size = self.ui_eval_param(size, "number", None) size = self.ui_eval_param(size, "number", None)
block_size = self.ui_eval_param(block_size, "number", None) block_size = self.ui_eval_param(block_size, "number", None)
ret_name = self.get_root().create_malloc_bdev(num_blocks=size * 1024 * 1024 // block_size,
try: block_size=block_size,
ret_name = self.get_root().create_malloc_bdev(num_blocks=size * 1024 * 1024 // block_size, name=name, uuid=uuid)
block_size=block_size, self.shell.log.info(ret_name)
name=name, uuid=uuid)
self.shell.log.info(ret_name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
def ui_command_delete(self, name): def ui_command_delete(self, name):
""" """
@ -195,8 +181,6 @@ class UIMallocBdev(UIBdev):
name - Is a unique identifier of the malloc bdev to be deleted - UUID number or name alias. name - Is a unique identifier of the malloc bdev to be deleted - UUID number or name alias.
""" """
self.delete(name) self.delete(name)
self.get_root().refresh()
self.refresh()
class UIAIOBdev(UIBdev): class UIAIOBdev(UIBdev):
@ -204,10 +188,7 @@ class UIAIOBdev(UIBdev):
UIBdev.__init__(self, "aio", parent) UIBdev.__init__(self, "aio", parent)
def delete(self, name): def delete(self, name):
try: self.get_root().delete_aio_bdev(name=name)
self.get_root().delete_aio_bdev(name=name)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, name, filename, block_size): def ui_command_create(self, name, filename, block_size):
""" """
@ -222,17 +203,10 @@ class UIAIOBdev(UIBdev):
""" """
block_size = self.ui_eval_param(block_size, "number", None) block_size = self.ui_eval_param(block_size, "number", None)
ret_name = self.get_root().create_aio_bdev(name=name,
try: block_size=int(block_size),
ret_name = self.get_root().create_aio_bdev(name=name, filename=filename)
block_size=int(block_size), self.shell.log.info(ret_name)
filename=filename)
self.shell.log.info(ret_name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
def ui_command_delete(self, name): def ui_command_delete(self, name):
""" """
@ -242,8 +216,6 @@ class UIAIOBdev(UIBdev):
name - Is a unique identifier of the aio bdev to be deleted - UUID number or name alias. name - Is a unique identifier of the aio bdev to be deleted - UUID number or name alias.
""" """
self.delete(name) self.delete(name)
self.get_root().refresh()
self.refresh()
class UILvolBdev(UIBdev): class UILvolBdev(UIBdev):
@ -251,10 +223,7 @@ class UILvolBdev(UIBdev):
UIBdev.__init__(self, "logical_volume", parent) UIBdev.__init__(self, "logical_volume", parent)
def delete(self, name): def delete(self, name):
try: self.get_root().destroy_lvol_bdev(name=name)
self.get_root().destroy_lvol_bdev(name=name)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, name, size, lvs, thin_provision=None): def ui_command_create(self, name, size, lvs, thin_provision=None):
""" """
@ -280,16 +249,10 @@ class UILvolBdev(UIBdev):
size *= (1024 * 1024) size *= (1024 * 1024)
thin_provision = self.ui_eval_param(thin_provision, "bool", False) thin_provision = self.ui_eval_param(thin_provision, "bool", False)
try: ret_uuid = self.get_root().create_lvol_bdev(lvol_name=name, size=size,
ret_uuid = self.get_root().create_lvol_bdev(lvol_name=name, size=size, lvs_name=lvs_name, uuid=uuid,
lvs_name=lvs_name, uuid=uuid, thin_provision=thin_provision)
thin_provision=thin_provision) self.shell.log.info(ret_uuid)
self.shell.log.info(ret_uuid)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
def ui_command_delete(self, name): def ui_command_delete(self, name):
""" """
@ -299,8 +262,6 @@ class UILvolBdev(UIBdev):
name - Is a unique identifier of the lvol bdev to be deleted - UUID number or name alias. name - Is a unique identifier of the lvol bdev to be deleted - UUID number or name alias.
""" """
self.delete(name) self.delete(name)
self.get_root().refresh()
self.refresh()
class UINvmeBdev(UIBdev): class UINvmeBdev(UIBdev):
@ -308,28 +269,17 @@ class UINvmeBdev(UIBdev):
UIBdev.__init__(self, "nvme", parent) UIBdev.__init__(self, "nvme", parent)
def delete(self, name): def delete(self, name):
try: self.get_root().delete_nvme_controller(name=name)
self.get_root().delete_nvme_controller(name=name)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, name, trtype, traddr, def ui_command_create(self, name, trtype, traddr,
adrfam=None, trsvcid=None, subnqn=None): adrfam=None, trsvcid=None, subnqn=None):
if "rdma" in trtype and None in [adrfam, trsvcid, subnqn]: if "rdma" in trtype and None in [adrfam, trsvcid, subnqn]:
self.shell.log.error("Using RDMA transport type." self.shell.log.error("Using RDMA transport type."
"Please provide arguments for adrfam, trsvcid and subnqn.") "Please provide arguments for adrfam, trsvcid and subnqn.")
ret_name = self.get_root().create_nvme_bdev(name=name, trtype=trtype,
try: traddr=traddr, adrfam=adrfam,
ret_name = self.get_root().create_nvme_bdev(name=name, trtype=trtype, trsvcid=trsvcid, subnqn=subnqn)
traddr=traddr, adrfam=adrfam, self.shell.log.info(ret_name)
trsvcid=trsvcid, subnqn=subnqn)
self.shell.log.info(ret_name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
def ui_command_delete_all(self): def ui_command_delete_all(self):
ctrlrs = [x.name for x in self._children] ctrlrs = [x.name for x in self._children]
@ -337,8 +287,6 @@ class UINvmeBdev(UIBdev):
ctrlrs = set(ctrlrs) ctrlrs = set(ctrlrs)
for ctrlr in ctrlrs: for ctrlr in ctrlrs:
self.delete(ctrlr) self.delete(ctrlr)
self.get_root().refresh()
self.refresh()
def ui_command_delete(self, name): def ui_command_delete(self, name):
""" """
@ -348,8 +296,6 @@ class UINvmeBdev(UIBdev):
name - Is a unique identifier of the NVMe controller to be deleted. name - Is a unique identifier of the NVMe controller to be deleted.
""" """
self.delete(name) self.delete(name)
self.get_root().refresh()
self.refresh()
class UINullBdev(UIBdev): class UINullBdev(UIBdev):
@ -357,10 +303,7 @@ class UINullBdev(UIBdev):
UIBdev.__init__(self, "null", parent) UIBdev.__init__(self, "null", parent)
def delete(self, name): def delete(self, name):
try: self.get_root().delete_null_bdev(name=name)
self.get_root().delete_null_bdev(name=name)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, name, size, block_size, uuid=None): def ui_command_create(self, name, size, block_size, uuid=None):
""" """
@ -377,17 +320,10 @@ class UINullBdev(UIBdev):
size = self.ui_eval_param(size, "number", None) size = self.ui_eval_param(size, "number", None)
block_size = self.ui_eval_param(block_size, "number", None) block_size = self.ui_eval_param(block_size, "number", None)
num_blocks = size * 1024 * 1024 // block_size num_blocks = size * 1024 * 1024 // block_size
ret_name = self.get_root().create_null_bdev(num_blocks=num_blocks,
try: block_size=block_size,
ret_name = self.get_root().create_null_bdev(num_blocks=num_blocks, name=name, uuid=uuid)
block_size=block_size, self.shell.log.info(ret_name)
name=name, uuid=uuid)
self.shell.log.info(ret_name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
def ui_command_delete(self, name): def ui_command_delete(self, name):
""" """
@ -397,8 +333,6 @@ class UINullBdev(UIBdev):
name - Is a unique identifier of the null bdev to be deleted - UUID number or name alias. name - Is a unique identifier of the null bdev to be deleted - UUID number or name alias.
""" """
self.delete(name) self.delete(name)
self.get_root().refresh()
self.refresh()
class UIErrorBdev(UIBdev): class UIErrorBdev(UIBdev):
@ -406,10 +340,7 @@ class UIErrorBdev(UIBdev):
UIBdev.__init__(self, "error", parent) UIBdev.__init__(self, "error", parent)
def delete(self, name): def delete(self, name):
try: self.get_root().delete_error_bdev(name=name)
self.get_root().delete_error_bdev(name=name)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, base_name): def ui_command_create(self, base_name):
""" """
@ -419,13 +350,7 @@ class UIErrorBdev(UIBdev):
base_name - base bdev name on top of which error bdev will be created. base_name - base bdev name on top of which error bdev will be created.
""" """
try: self.get_root().create_error_bdev(base_name=base_name)
self.get_root().create_error_bdev(base_name=base_name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
def ui_command_delete(self, name): def ui_command_delete(self, name):
""" """
@ -435,8 +360,6 @@ class UIErrorBdev(UIBdev):
name - Is a unique identifier of the error bdev to be deleted - UUID number or name alias. name - Is a unique identifier of the error bdev to be deleted - UUID number or name alias.
""" """
self.delete(name) self.delete(name)
self.get_root().refresh()
self.refresh()
class UISplitBdev(UIBdev): class UISplitBdev(UIBdev):
@ -459,16 +382,10 @@ class UISplitBdev(UIBdev):
split_count = self.ui_eval_param(split_count, "number", None) split_count = self.ui_eval_param(split_count, "number", None)
split_size_mb = self.ui_eval_param(split_size_mb, "number", None) split_size_mb = self.ui_eval_param(split_size_mb, "number", None)
try: ret_name = self.get_root().split_bdev(base_bdev=base_bdev,
ret_name = self.get_root().split_bdev(base_bdev=base_bdev, split_count=split_count,
split_count=split_count, split_size_mb=split_size_mb)
split_size_mb=split_size_mb) self.shell.log.info(ret_name)
self.shell.log.info(ret_name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.parent.refresh()
self.refresh()
def ui_command_destruct_split_bdev(self, base_bdev): def ui_command_destruct_split_bdev(self, base_bdev):
"""Destroy split block devices associated with base bdev. """Destroy split block devices associated with base bdev.
@ -477,13 +394,7 @@ class UISplitBdev(UIBdev):
base_bdev: name of previously split bdev base_bdev: name of previously split bdev
""" """
try: self.get_root().destruct_split_bdev(base_bdev=base_bdev)
self.get_root().destruct_split_bdev(base_bdev=base_bdev)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.parent.refresh()
self.refresh()
class UIPmemBdev(UIBdev): class UIPmemBdev(UIBdev):
@ -491,46 +402,28 @@ class UIPmemBdev(UIBdev):
UIBdev.__init__(self, "pmemblk", parent) UIBdev.__init__(self, "pmemblk", parent)
def delete(self, name): def delete(self, name):
try: self.get_root().delete_pmem_bdev(name=name)
self.get_root().delete_pmem_bdev(name=name)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create_pmem_pool(self, pmem_file, total_size, block_size): def ui_command_create_pmem_pool(self, pmem_file, total_size, block_size):
total_size = self.ui_eval_param(total_size, "number", None) total_size = self.ui_eval_param(total_size, "number", None)
block_size = self.ui_eval_param(block_size, "number", None) block_size = self.ui_eval_param(block_size, "number", None)
num_blocks = int((total_size * 1024 * 1024) / block_size) num_blocks = int((total_size * 1024 * 1024) / block_size)
try: self.get_root().create_pmem_pool(pmem_file=pmem_file,
self.get_root().create_pmem_pool(pmem_file=pmem_file, num_blocks=num_blocks,
num_blocks=num_blocks, block_size=block_size)
block_size=block_size)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_delete_pmem_pool(self, pmem_file): def ui_command_delete_pmem_pool(self, pmem_file):
try: self.get_root().delete_pmem_pool(pmem_file=pmem_file)
self.get_root().delete_pmem_pool(pmem_file=pmem_file)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_info_pmem_pool(self, pmem_file): def ui_command_info_pmem_pool(self, pmem_file):
try: ret = self.get_root().delete_pmem_pool(pmem_file=pmem_file)
ret = self.get_root().delete_pmem_pool(pmem_file=pmem_file) self.shell.log.info(ret)
self.shell.log.info(ret)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, pmem_file, name): def ui_command_create(self, pmem_file, name):
try: ret_name = self.get_root().create_pmem_bdev(pmem_file=pmem_file,
ret_name = self.get_root().create_pmem_bdev(pmem_file=pmem_file, name=name)
name=name) self.shell.log.info(ret_name)
self.shell.log.info(ret_name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
def ui_command_delete(self, name): def ui_command_delete(self, name):
""" """
@ -540,8 +433,6 @@ class UIPmemBdev(UIBdev):
name - Is a unique identifier of the pmem bdev to be deleted - UUID number or name alias. name - Is a unique identifier of the pmem bdev to be deleted - UUID number or name alias.
""" """
self.delete(name) self.delete(name)
self.get_root().refresh()
self.refresh()
class UIRbdBdev(UIBdev): class UIRbdBdev(UIBdev):
@ -549,25 +440,16 @@ class UIRbdBdev(UIBdev):
UIBdev.__init__(self, "rbd", parent) UIBdev.__init__(self, "rbd", parent)
def delete(self, name): def delete(self, name):
try: self.get_root().delete_rbd_bdev(name=name)
self.get_root().delete_rbd_bdev(name=name)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, pool_name, rbd_name, block_size, name=None): def ui_command_create(self, pool_name, rbd_name, block_size, name=None):
block_size = self.ui_eval_param(block_size, "number", None) block_size = self.ui_eval_param(block_size, "number", None)
try: ret_name = self.get_root().create_rbd_bdev(pool_name=pool_name,
ret_name = self.get_root().create_rbd_bdev(pool_name=pool_name, rbd_name=rbd_name,
rbd_name=rbd_name, block_size=block_size,
block_size=block_size, name=name)
name=name) self.shell.log.info(ret_name)
self.shell.log.info(ret_name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
def ui_command_delete(self, name): def ui_command_delete(self, name):
""" """
@ -577,8 +459,6 @@ class UIRbdBdev(UIBdev):
name - Is a unique identifier of the rbd bdev to be deleted - UUID number or name alias. name - Is a unique identifier of the rbd bdev to be deleted - UUID number or name alias.
""" """
self.delete(name) self.delete(name)
self.get_root().refresh()
self.refresh()
class UIiSCSIBdev(UIBdev): class UIiSCSIBdev(UIBdev):
@ -586,10 +466,7 @@ class UIiSCSIBdev(UIBdev):
UIBdev.__init__(self, "iscsi", parent) UIBdev.__init__(self, "iscsi", parent)
def delete(self, name): def delete(self, name):
try: self.get_root().delete_iscsi_bdev(name=name)
self.get_root().delete_iscsi_bdev(name=name)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, name, url, initiator_iqn): def ui_command_create(self, name, url, initiator_iqn):
""" """
@ -602,16 +479,10 @@ class UIiSCSIBdev(UIBdev):
Example: iscsi://127.0.0.1:3260/iqn.2018-06.org.spdk/0. Example: iscsi://127.0.0.1:3260/iqn.2018-06.org.spdk/0.
initiator_iqn - IQN to use for initiating connection with the target. initiator_iqn - IQN to use for initiating connection with the target.
""" """
try: ret_name = self.get_root().create_iscsi_bdev(name=name,
ret_name = self.get_root().create_iscsi_bdev(name=name, url=url,
url=url, initiator_iqn=initiator_iqn)
initiator_iqn=initiator_iqn) self.shell.log.info(ret_name)
self.shell.log.info(ret_name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
def ui_command_delete(self, name): def ui_command_delete(self, name):
""" """
@ -621,8 +492,6 @@ class UIiSCSIBdev(UIBdev):
name - name of the iscsi bdev to be deleted. name - name of the iscsi bdev to be deleted.
""" """
self.delete(name) self.delete(name)
self.get_root().refresh()
self.refresh()
class UIVirtioBlkBdev(UIBdev): class UIVirtioBlkBdev(UIBdev):
@ -635,20 +504,14 @@ class UIVirtioBlkBdev(UIBdev):
vq_count = self.ui_eval_param(vq_count, "number", None) vq_count = self.ui_eval_param(vq_count, "number", None)
vq_size = self.ui_eval_param(vq_size, "number", None) vq_size = self.ui_eval_param(vq_size, "number", None)
try: ret = self.get_root().create_virtio_dev(name=name,
ret = self.get_root().create_virtio_dev(name=name, trtype=trtype,
trtype=trtype, traddr=traddr,
traddr=traddr, dev_type="blk",
dev_type="blk", vq_count=vq_count,
vq_count=vq_count, vq_size=vq_size)
vq_size=vq_size)
self.shell.log.info(ret) self.shell.log.info(ret)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
def ui_command_delete(self, name): def ui_command_delete(self, name):
""" """
@ -657,12 +520,7 @@ class UIVirtioBlkBdev(UIBdev):
Arguments: Arguments:
name - Is a unique identifier of the virtio scsi bdev to be deleted - UUID number or name alias. name - Is a unique identifier of the virtio scsi bdev to be deleted - UUID number or name alias.
""" """
try: self.get_root().remove_virtio_bdev(name=name)
self.get_root().remove_virtio_bdev(name=name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
class UIVirtioScsiBdev(UIBdev): class UIVirtioScsiBdev(UIBdev):
@ -680,29 +538,17 @@ class UIVirtioScsiBdev(UIBdev):
vq_count = self.ui_eval_param(vq_count, "number", None) vq_count = self.ui_eval_param(vq_count, "number", None)
vq_size = self.ui_eval_param(vq_size, "number", None) vq_size = self.ui_eval_param(vq_size, "number", None)
try: ret = self.get_root().create_virtio_dev(name=name,
ret = self.get_root().create_virtio_dev(name=name, trtype=trtype,
trtype=trtype, traddr=traddr,
traddr=traddr, dev_type="scsi",
dev_type="scsi", vq_count=vq_count,
vq_count=vq_count, vq_size=vq_size)
vq_size=vq_size)
self.shell.log.info(ret) self.shell.log.info(ret)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
def ui_command_delete(self, name): def ui_command_delete(self, name):
try: self.get_root().remove_virtio_bdev(name=name)
self.get_root().remove_virtio_bdev(name=name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
class UIBdevObj(UINode): class UIBdevObj(UINode):
@ -802,8 +648,6 @@ class UIVhost(UINode):
name - Controller name. name - Controller name.
""" """
self.get_root().remove_vhost_controller(ctrlr=name) self.get_root().remove_vhost_controller(ctrlr=name)
self.get_root().refresh()
self.refresh()
class UIVhostBlk(UIVhost): class UIVhostBlk(UIVhost):
@ -828,16 +672,10 @@ class UIVhostBlk(UIVhost):
readonly - Whether controller should be read only or not. readonly - Whether controller should be read only or not.
Default: False. Default: False.
""" """
try: self.get_root().create_vhost_blk_controller(ctrlr=name,
self.get_root().create_vhost_blk_controller(ctrlr=name, dev_name=bdev,
dev_name=bdev, cpumask=cpumask,
cpumask=cpumask, readonly=bool(readonly))
readonly=bool(readonly))
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
class UIVhostScsi(UIVhost): class UIVhostScsi(UIVhost):
@ -859,14 +697,8 @@ class UIVhostScsi(UIVhost):
cpumask - Optional. Integer to specify mask of CPUs to use. cpumask - Optional. Integer to specify mask of CPUs to use.
Default: 1. Default: 1.
""" """
try: self.get_root().create_vhost_scsi_controller(ctrlr=name,
self.get_root().create_vhost_scsi_controller(ctrlr=name, cpumask=cpumask)
cpumask=cpumask)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh()
class UIVhostCtrl(UINode): class UIVhostCtrl(UINode):
@ -883,12 +715,9 @@ class UIVhostCtrl(UINode):
delay_base_us = self.ui_eval_param(delay_base_us, "number", None) delay_base_us = self.ui_eval_param(delay_base_us, "number", None)
iops_threshold = self.ui_eval_param(iops_threshold, "number", None) iops_threshold = self.ui_eval_param(iops_threshold, "number", None)
try: self.get_root().set_vhost_controller_coalescing(ctrlr=self.ctrlr.ctrlr,
self.get_root().set_vhost_controller_coalescing(ctrlr=self.ctrlr.ctrlr, delay_base_us=delay_base_us,
delay_base_us=delay_base_us, iops_threshold=iops_threshold)
iops_threshold=iops_threshold)
except JSONRPCException as e:
self.shell.log.error(e.message)
class UIVhostScsiCtrlObj(UIVhostCtrl): class UIVhostScsiCtrlObj(UIVhostCtrl):
@ -904,17 +733,11 @@ class UIVhostScsiCtrlObj(UIVhostCtrl):
Arguments: Arguments:
target_num - Integer identifier of target node to delete. target_num - Integer identifier of target node to delete.
""" """
try: self.get_root().remove_vhost_scsi_target(ctrlr=self.ctrlr.ctrlr,
self.get_root().remove_vhost_scsi_target(ctrlr=self.ctrlr.ctrlr, scsi_target_num=int(target_num))
scsi_target_num=int(target_num)) for ctrlr in self.get_root().get_vhost_controllers(ctrlr_type="scsi"):
for ctrlr in self.get_root().get_vhost_controllers(ctrlr_type="scsi"): if ctrlr.ctrlr == self.ctrlr.ctrlr:
if ctrlr.ctrlr == self.ctrlr.ctrlr: self.ctrlr = ctrlr
self.ctrlr = ctrlr
except JSONRPCException as e:
self.shell.log.error(e.message)
self.refresh()
self.get_root().refresh()
def ui_command_add_lun(self, target_num, bdev_name): def ui_command_add_lun(self, target_num, bdev_name):
""" """
@ -926,17 +749,12 @@ class UIVhostScsiCtrlObj(UIVhostCtrl):
target_num - Integer identifier of target node to modify. target_num - Integer identifier of target node to modify.
bdev - Which bdev to add as LUN. bdev - Which bdev to add as LUN.
""" """
try: self.get_root().add_vhost_scsi_lun(ctrlr=self.ctrlr.ctrlr,
self.get_root().add_vhost_scsi_lun(ctrlr=self.ctrlr.ctrlr, scsi_target_num=int(target_num),
scsi_target_num=int(target_num), bdev_name=bdev_name)
bdev_name=bdev_name) for ctrlr in self.get_root().get_vhost_controllers(ctrlr_type="scsi"):
for ctrlr in self.get_root().get_vhost_controllers(ctrlr_type="scsi"): if ctrlr.ctrlr == self.ctrlr.ctrlr:
if ctrlr.ctrlr == self.ctrlr.ctrlr: self.ctrlr = ctrlr
self.ctrlr = ctrlr
except JSONRPCException as e:
self.shell.log.error(e.message)
self.refresh()
def summary(self): def summary(self):
info = self.ctrlr.socket info = self.ctrlr.socket

View File

@ -43,13 +43,9 @@ class UIISCSIGlobalParams(UINode):
disable_chap = self.ui_eval_param(d, "bool", None) disable_chap = self.ui_eval_param(d, "bool", None)
require_chap = self.ui_eval_param(r, "bool", None) require_chap = self.ui_eval_param(r, "bool", None)
mutual_chap = self.ui_eval_param(m, "bool", None) mutual_chap = self.ui_eval_param(m, "bool", None)
try: self.get_root().set_iscsi_discovery_auth(
self.get_root().set_iscsi_discovery_auth( chap_group=chap_group, disable_chap=disable_chap,
chap_group=chap_group, disable_chap=disable_chap, require_chap=require_chap, mutual_chap=mutual_chap)
require_chap=require_chap, mutual_chap=mutual_chap)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.refresh()
class UIISCSIGlobalParam(UINode): class UIISCSIGlobalParam(UINode):
@ -74,10 +70,7 @@ class UIISCSIDevices(UINode):
UIISCSIDevice(device, node, self) UIISCSIDevice(device, node, self)
def delete(self, name): def delete(self, name):
try: self.get_root().delete_target_node(target_node_name=name)
self.get_root().delete_target_node(target_node_name=name)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, name, alias_name, bdev_name_id_pairs, def ui_command_create(self, name, alias_name, bdev_name_id_pairs,
pg_ig_mappings, queue_depth, g=None, d=None, r=None, pg_ig_mappings, queue_depth, g=None, d=None, r=None,
@ -115,17 +108,12 @@ class UIISCSIDevices(UINode):
mutual_chap = self.ui_eval_param(m, "bool", None) mutual_chap = self.ui_eval_param(m, "bool", None)
header_digest = self.ui_eval_param(h, "bool", None) header_digest = self.ui_eval_param(h, "bool", None)
data_digest = self.ui_eval_param(t, "bool", None) data_digest = self.ui_eval_param(t, "bool", None)
try: self.get_root().construct_target_node(
self.get_root().construct_target_node( name=name, alias_name=alias_name, luns=luns,
name=name, alias_name=alias_name, luns=luns, pg_ig_maps=pg_ig_maps, queue_depth=queue_depth,
pg_ig_maps=pg_ig_maps, queue_depth=queue_depth, chap_group=chap_group, disable_chap=disable_chap,
chap_group=chap_group, disable_chap=disable_chap, require_chap=require_chap, mutual_chap=mutual_chap,
require_chap=require_chap, mutual_chap=mutual_chap, header_digest=header_digest, data_digest=data_digest)
header_digest=header_digest, data_digest=data_digest)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.refresh()
def ui_command_delete(self, name=None): def ui_command_delete(self, name=None):
"""Delete a target node. If name is not specified delete all target nodes. """Delete a target node. If name is not specified delete all target nodes.
@ -134,13 +122,11 @@ class UIISCSIDevices(UINode):
name - Target node name. name - Target node name.
""" """
self.delete(name) self.delete(name)
self.refresh()
def ui_command_delete_all(self): def ui_command_delete_all(self):
"""Delete all target nodes""" """Delete all target nodes"""
for device in self.scsi_devices: for device in self.scsi_devices:
self.delete(device.device_name) self.delete(device.device_name)
self.refresh()
def ui_command_add_lun(self, name, bdev_name, lun_id=None): def ui_command_add_lun(self, name, bdev_name, lun_id=None):
"""Add lun to the target node. """Add lun to the target node.
@ -153,12 +139,8 @@ class UIISCSIDevices(UINode):
""" """
if lun_id: if lun_id:
lun_id = self.ui_eval_param(lun_id, "number", None) lun_id = self.ui_eval_param(lun_id, "number", None)
try: self.get_root().target_node_add_lun(
self.get_root().target_node_add_lun( name=name, bdev_name=bdev_name, lun_id=lun_id)
name=name, bdev_name=bdev_name, lun_id=lun_id)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.parent.refresh()
def summary(self): def summary(self):
count = 0 count = 0
@ -190,14 +172,10 @@ class UIISCSIDevice(UINode):
disable_chap = self.ui_eval_param(d, "bool", None) disable_chap = self.ui_eval_param(d, "bool", None)
require_chap = self.ui_eval_param(r, "bool", None) require_chap = self.ui_eval_param(r, "bool", None)
mutual_chap = self.ui_eval_param(m, "bool", None) mutual_chap = self.ui_eval_param(m, "bool", None)
try: self.get_root().set_iscsi_target_node_auth(
self.get_root().set_iscsi_target_node_auth( name=self.device.device_name, chap_group=chap_group,
name=self.device.device_name, chap_group=chap_group, disable_chap=disable_chap,
disable_chap=disable_chap, require_chap=require_chap, mutual_chap=mutual_chap)
require_chap=require_chap, mutual_chap=mutual_chap)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.parent.refresh()
def ui_command_add_pg_ig_maps(self, pg_ig_mappings): def ui_command_add_pg_ig_maps(self, pg_ig_mappings):
"""Add PG-IG maps to the target node. """Add PG-IG maps to the target node.
@ -209,12 +187,8 @@ class UIISCSIDevice(UINode):
for u in pg_ig_mappings.strip().split(" "): for u in pg_ig_mappings.strip().split(" "):
pg, ig = u.split(":") pg, ig = u.split(":")
pg_ig_maps.append({"pg_tag": int(pg), "ig_tag": int(ig)}) pg_ig_maps.append({"pg_tag": int(pg), "ig_tag": int(ig)})
try: self.get_root().add_pg_ig_maps(
self.get_root().add_pg_ig_maps( pg_ig_maps=pg_ig_maps, name=self.device.device_name)
pg_ig_maps=pg_ig_maps, name=self.device.device_name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.parent.refresh()
def ui_command_delete_pg_ig_maps(self, pg_ig_mappings): def ui_command_delete_pg_ig_maps(self, pg_ig_mappings):
"""Add PG-IG maps to the target node. """Add PG-IG maps to the target node.
@ -226,12 +200,8 @@ class UIISCSIDevice(UINode):
for u in pg_ig_mappings.strip().split(" "): for u in pg_ig_mappings.strip().split(" "):
pg, ig = u.split(":") pg, ig = u.split(":")
pg_ig_maps.append({"pg_tag": int(pg), "ig_tag": int(ig)}) pg_ig_maps.append({"pg_tag": int(pg), "ig_tag": int(ig)})
try: self.get_root().delete_pg_ig_maps(
self.get_root().delete_pg_ig_maps( pg_ig_maps=pg_ig_maps, name=self.device.device_name)
pg_ig_maps=pg_ig_maps, name=self.device.device_name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.parent.refresh()
def refresh(self): def refresh(self):
self._children = set([]) self._children = set([])
@ -315,10 +285,7 @@ class UIPortalGroups(UINode):
self.refresh() self.refresh()
def delete(self, tag): def delete(self, tag):
try: self.get_root().delete_portal_group(tag=tag)
self.get_root().delete_portal_group(tag=tag)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, tag, portal_list): def ui_command_create(self, tag, portal_list):
"""Add a portal group. """Add a portal group.
@ -338,24 +305,17 @@ class UIPortalGroups(UINode):
if cpumask: if cpumask:
portals[-1]['cpumask'] = cpumask portals[-1]['cpumask'] = cpumask
tag = self.ui_eval_param(tag, "number", None) tag = self.ui_eval_param(tag, "number", None)
try: self.get_root().construct_portal_group(tag=tag, portals=portals)
self.get_root().construct_portal_group(tag=tag, portals=portals)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.refresh()
def ui_command_delete(self, tag): def ui_command_delete(self, tag):
"""Delete a portal group with given tag (unique, integer > 0))""" """Delete a portal group with given tag (unique, integer > 0))"""
tag = self.ui_eval_param(tag, "number", None) tag = self.ui_eval_param(tag, "number", None)
self.delete(tag) self.delete(tag)
self.refresh()
def ui_command_delete_all(self): def ui_command_delete_all(self):
"""Delete all portal groups""" """Delete all portal groups"""
for pg in self.pgs: for pg in self.pgs:
self.delete(pg.tag) self.delete(pg.tag)
self.refresh()
def refresh(self): def refresh(self):
self._children = set([]) self._children = set([])
@ -395,10 +355,7 @@ class UIInitiatorGroups(UINode):
self.refresh() self.refresh()
def delete(self, tag): def delete(self, tag):
try: self.get_root().delete_initiator_group(tag=tag)
self.get_root().delete_initiator_group(tag=tag)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, tag, initiator_list, netmask_list): def ui_command_create(self, tag, initiator_list, netmask_list):
"""Add an initiator group. """Add an initiator group.
@ -411,14 +368,9 @@ class UIInitiatorGroups(UINode):
e.g. 255.255.0.0 255.248.0.0 e.g. 255.255.0.0 255.248.0.0
""" """
tag = self.ui_eval_param(tag, "number", None) tag = self.ui_eval_param(tag, "number", None)
try: self.get_root().construct_initiator_group(
self.get_root().construct_initiator_group( tag=tag, initiators=initiator_list.split(" "),
tag=tag, initiators=initiator_list.split(" "), netmasks=netmask_list.split(" "))
netmasks=netmask_list.split(" "))
except JSONRPCException as e:
self.shell.log.error(e.message)
self.refresh()
def ui_command_delete(self, tag): def ui_command_delete(self, tag):
"""Delete an initiator group. """Delete an initiator group.
@ -428,13 +380,11 @@ class UIInitiatorGroups(UINode):
""" """
tag = self.ui_eval_param(tag, "number", None) tag = self.ui_eval_param(tag, "number", None)
self.delete(tag) self.delete(tag)
self.refresh()
def ui_command_delete_all(self): def ui_command_delete_all(self):
"""Delete all initiator groups""" """Delete all initiator groups"""
for ig in self.igs: for ig in self.igs:
self.delete(ig.tag) self.delete(ig.tag)
self.refresh()
def ui_command_add_initiator(self, tag, initiators, netmasks): def ui_command_add_initiator(self, tag, initiators, netmasks):
"""Add initiators to an existing initiator group. """Add initiators to an existing initiator group.
@ -447,14 +397,9 @@ class UIInitiatorGroups(UINode):
e.g. 255.255.0.0 255.248.0.0 e.g. 255.255.0.0 255.248.0.0
""" """
tag = self.ui_eval_param(tag, "number", None) tag = self.ui_eval_param(tag, "number", None)
try: self.get_root().add_initiators_to_initiator_group(
self.get_root().add_initiators_to_initiator_group( tag=tag, initiators=initiators.split(" "),
tag=tag, initiators=initiators.split(" "), netmasks=netmasks.split(" "))
netmasks=netmasks.split(" "))
except JSONRPCException as e:
self.shell.log.error(e.message)
self.refresh()
def ui_command_delete_initiator(self, tag, initiators=None, netmasks=None): def ui_command_delete_initiator(self, tag, initiators=None, netmasks=None):
"""Delete initiators from an existing initiator group. """Delete initiators from an existing initiator group.
@ -469,14 +414,9 @@ class UIInitiatorGroups(UINode):
initiators = initiators.split(" ") initiators = initiators.split(" ")
if netmasks: if netmasks:
netmasks = netmasks.split(" ") netmasks = netmasks.split(" ")
try: self.get_root().delete_initiators_from_initiator_group(
self.get_root().delete_initiators_from_initiator_group( tag=tag, initiators=initiators,
tag=tag, initiators=initiators, netmasks=netmasks)
netmasks=netmasks)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.refresh()
def refresh(self): def refresh(self):
self._children = set([]) self._children = set([])
@ -558,17 +498,11 @@ class UIISCSIAuthGroups(UINode):
UIISCSIAuthGroup(ag, self) UIISCSIAuthGroup(ag, self)
def delete(self, tag): def delete(self, tag):
try: self.get_root().delete_iscsi_auth_group(tag=tag)
self.get_root().delete_iscsi_auth_group(tag=tag)
except JSONRPCException as e:
self.shell.log.error(e.message)
def delete_secret(self, tag, user): def delete_secret(self, tag, user):
try: self.get_root().delete_secret_from_iscsi_auth_group(
self.get_root().delete_secret_from_iscsi_auth_group( tag=tag, user=user)
tag=tag, user=user)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, tag, secrets=None): def ui_command_create(self, tag, secrets=None):
"""Add authentication group for CHAP authentication. """Add authentication group for CHAP authentication.
@ -583,12 +517,7 @@ class UIISCSIAuthGroups(UINode):
if secrets: if secrets:
secrets = [dict(u.split(":") for u in a.split(" ")) secrets = [dict(u.split(":") for u in a.split(" "))
for a in secrets.split(",")] for a in secrets.split(",")]
try: self.get_root().add_iscsi_auth_group(tag=tag, secrets=secrets)
self.get_root().add_iscsi_auth_group(tag=tag, secrets=secrets)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.refresh()
def ui_command_delete(self, tag): def ui_command_delete(self, tag):
"""Delete an authentication group. """Delete an authentication group.
@ -598,13 +527,11 @@ class UIISCSIAuthGroups(UINode):
""" """
tag = self.ui_eval_param(tag, "number", None) tag = self.ui_eval_param(tag, "number", None)
self.delete(tag) self.delete(tag)
self.refresh()
def ui_command_delete_all(self): def ui_command_delete_all(self):
"""Delete all authentication groups.""" """Delete all authentication groups."""
for iscsi_auth_group in self.iscsi_auth_groups: for iscsi_auth_group in self.iscsi_auth_groups:
self.delete(iscsi_auth_group['tag']) self.delete(iscsi_auth_group['tag'])
self.refresh()
def ui_command_add_secret(self, tag, user, secret, def ui_command_add_secret(self, tag, user, secret,
muser=None, msecret=None): muser=None, msecret=None):
@ -619,13 +546,9 @@ class UIISCSIAuthGroups(UINode):
msecret: Secret for mutual CHAP authentication msecret: Secret for mutual CHAP authentication
""" """
tag = self.ui_eval_param(tag, "number", None) tag = self.ui_eval_param(tag, "number", None)
try: self.get_root().add_secret_to_iscsi_auth_group(
self.get_root().add_secret_to_iscsi_auth_group( tag=tag, user=user, secret=secret,
tag=tag, user=user, secret=secret, muser=muser, msecret=msecret)
muser=muser, msecret=msecret)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.refresh()
def ui_command_delete_secret(self, tag, user): def ui_command_delete_secret(self, tag, user):
"""Delete a secret from an authentication group. """Delete a secret from an authentication group.
@ -636,7 +559,6 @@ class UIISCSIAuthGroups(UINode):
""" """
tag = self.ui_eval_param(tag, "number", None) tag = self.ui_eval_param(tag, "number", None)
self.delete_secret(tag, user) self.delete_secret(tag, user)
self.refresh()
def ui_command_delete_secret_all(self, tag): def ui_command_delete_secret_all(self, tag):
"""Delete all secrets from an authentication group. """Delete all secrets from an authentication group.
@ -649,7 +571,6 @@ class UIISCSIAuthGroups(UINode):
if ag['tag'] == tag: if ag['tag'] == tag:
for secret in ag['secrets']: for secret in ag['secrets']:
self.delete_secret(tag, secret['user']) self.delete_secret(tag, secret['user'])
self.refresh()
def summary(self): def summary(self):
return "Groups: %s" % len(self.iscsi_auth_groups), None return "Groups: %s" % len(self.iscsi_auth_groups), None

View File

@ -42,17 +42,14 @@ class UINVMfTransports(UINode):
max_io_size = self.ui_eval_param(max_io_size, "number", None) max_io_size = self.ui_eval_param(max_io_size, "number", None)
io_unit_size = self.ui_eval_param(io_unit_size, "number", None) io_unit_size = self.ui_eval_param(io_unit_size, "number", None)
max_aq_depth = self.ui_eval_param(max_aq_depth, "number", None) max_aq_depth = self.ui_eval_param(max_aq_depth, "number", None)
try:
self.get_root().create_nvmf_transport(trtype=trtype, self.get_root().create_nvmf_transport(trtype=trtype,
max_queue_depth=max_queue_depth, max_queue_depth=max_queue_depth,
max_qpairs_per_ctrlr=max_qpairs_per_ctrlr, max_qpairs_per_ctrlr=max_qpairs_per_ctrlr,
in_capsule_data_size=in_capsule_data_size, in_capsule_data_size=in_capsule_data_size,
max_io_size=max_io_size, max_io_size=max_io_size,
io_unit_size=io_unit_size, io_unit_size=io_unit_size,
max_aq_depth=max_aq_depth) max_aq_depth=max_aq_depth)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.refresh()
def summary(self): def summary(self):
return "Transports: %s" % len(self.children), None return "Transports: %s" % len(self.children), None
@ -75,10 +72,7 @@ class UINVMfSubsystems(UINode):
UINVMfSubsystem(subsystem, self) UINVMfSubsystem(subsystem, self)
def delete(self, subsystem_nqn): def delete(self, subsystem_nqn):
try: self.get_root().delete_nvmf_subsystem(nqn=subsystem_nqn)
self.get_root().delete_nvmf_subsystem(nqn=subsystem_nqn)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, nqn, serial_number=None, def ui_command_create(self, nqn, serial_number=None,
max_namespaces=None, allow_any_host="false"): max_namespaces=None, allow_any_host="false"):
@ -94,13 +88,9 @@ class UINVMfSubsystems(UINode):
""" """
allow_any_host = self.ui_eval_param(allow_any_host, "bool", False) allow_any_host = self.ui_eval_param(allow_any_host, "bool", False)
max_namespaces = self.ui_eval_param(max_namespaces, "number", 0) max_namespaces = self.ui_eval_param(max_namespaces, "number", 0)
try: self.get_root().create_nvmf_subsystem(nqn=nqn, serial_number=serial_number,
self.get_root().create_nvmf_subsystem(nqn=nqn, serial_number=serial_number, allow_any_host=allow_any_host,
allow_any_host=allow_any_host, max_namespaces=max_namespaces)
max_namespaces=max_namespaces)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.refresh()
def ui_command_delete(self, subsystem_nqn): def ui_command_delete(self, subsystem_nqn):
"""Delete subsystem with given nqn. """Delete subsystem with given nqn.
@ -109,13 +99,11 @@ class UINVMfSubsystems(UINode):
nqn_subsystem - Name of susbsytem to delete nqn_subsystem - Name of susbsytem to delete
""" """
self.delete(subsystem_nqn) self.delete(subsystem_nqn)
self.refresh()
def ui_command_delete_all(self): def ui_command_delete_all(self):
"""Delete all subsystems""" """Delete all subsystems"""
for child in self._children: for child in self._children:
self.delete(child.subsystem.nqn) self.delete(child.subsystem.nqn)
self.refresh()
def summary(self): def summary(self):
return "Subsystems: %s" % len(self.children), None return "Subsystems: %s" % len(self.children), None
@ -150,13 +138,8 @@ class UINVMfSubsystem(UINode):
disable - Optional parameter. If false then enable, if true disable disable - Optional parameter. If false then enable, if true disable
""" """
disable = self.ui_eval_param(disable, "bool", None) disable = self.ui_eval_param(disable, "bool", None)
try: self.get_root().nvmf_subsystem_allow_any_host(
self.get_root().nvmf_subsystem_allow_any_host( nqn=self.subsystem.nqn, disable=disable)
nqn=self.subsystem.nqn, disable=disable)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh_node()
def summary(self): def summary(self):
sn = None sn = None
@ -190,12 +173,9 @@ class UINVMfSubsystemListeners(UINode):
self.refresh() self.refresh()
def delete(self, trtype, traddr, trsvcid, adrfam=None): def delete(self, trtype, traddr, trsvcid, adrfam=None):
try: self.get_root().nvmf_subsystem_remove_listener(
self.get_root().nvmf_subsystem_remove_listener( nqn=self.parent.subsystem.nqn, trtype=trtype,
nqn=self.parent.subsystem.nqn, trtype=trtype, traddr=traddr, trsvcid=trsvcid, adrfam=adrfam)
traddr=traddr, trsvcid=trsvcid, adrfam=adrfam)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, trtype, traddr, trsvcid, adrfam): def ui_command_create(self, trtype, traddr, trsvcid, adrfam):
"""Create address listener for subsystem. """Create address listener for subsystem.
@ -206,14 +186,9 @@ class UINVMfSubsystemListeners(UINode):
trsvcid - NVMe-oF transport service id: e.g., a port number. trsvcid - NVMe-oF transport service id: e.g., a port number.
adrfam - NVMe-oF transport adrfam: e.g., ipv4, ipv6, ib, fc. adrfam - NVMe-oF transport adrfam: e.g., ipv4, ipv6, ib, fc.
""" """
try: self.get_root().nvmf_subsystem_add_listener(
self.get_root().nvmf_subsystem_add_listener( nqn=self.parent.subsystem.nqn, trtype=trtype, traddr=traddr,
nqn=self.parent.subsystem.nqn, trtype=trtype, traddr=traddr, trsvcid=trsvcid, adrfam=adrfam)
trsvcid=trsvcid, adrfam=adrfam)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh_node()
def ui_command_delete(self, trtype, traddr, trsvcid, adrfam=None): def ui_command_delete(self, trtype, traddr, trsvcid, adrfam=None):
"""Remove address listener for subsystem. """Remove address listener for subsystem.
@ -225,15 +200,11 @@ class UINVMfSubsystemListeners(UINode):
adrfam - Optional argument. Address family ("IPv4", "IPv6", "IB" or "FC"). adrfam - Optional argument. Address family ("IPv4", "IPv6", "IB" or "FC").
""" """
self.delete(trtype, traddr, trsvcid, adrfam) self.delete(trtype, traddr, trsvcid, adrfam)
self.get_root().refresh()
self.refresh_node()
def ui_command_delete_all(self): def ui_command_delete_all(self):
"""Remove all address listeners from subsystem.""" """Remove all address listeners from subsystem."""
for la in self.listen_addresses: for la in self.listen_addresses:
self.delete(la['trtype'], la['traddr'], la['trsvcid'], la['adrfam']) self.delete(la['trtype'], la['traddr'], la['trsvcid'], la['adrfam'])
self.get_root().refresh()
self.refresh_node()
def summary(self): def summary(self):
return "Addresses: %s" % len(self.listen_addresses), None return "Addresses: %s" % len(self.listen_addresses), None
@ -267,11 +238,8 @@ class UINVMfSubsystemHosts(UINode):
self.refresh() self.refresh()
def delete(self, host): def delete(self, host):
try: self.get_root().nvmf_subsystem_remove_host(
self.get_root().nvmf_subsystem_remove_host( nqn=self.parent.subsystem.nqn, host=host)
nqn=self.parent.subsystem.nqn, host=host)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, host): def ui_command_create(self, host):
"""Add a host NQN to the whitelist of allowed hosts. """Add a host NQN to the whitelist of allowed hosts.
@ -279,13 +247,8 @@ class UINVMfSubsystemHosts(UINode):
Args: Args:
host: Host NQN to add to the list of allowed host NQNs host: Host NQN to add to the list of allowed host NQNs
""" """
try: self.get_root().nvmf_subsystem_add_host(
self.get_root().nvmf_subsystem_add_host( nqn=self.parent.subsystem.nqn, host=host)
nqn=self.parent.subsystem.nqn, host=host)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh_node()
def ui_command_delete(self, host): def ui_command_delete(self, host):
"""Delete host from subsystem. """Delete host from subsystem.
@ -294,15 +257,11 @@ class UINVMfSubsystemHosts(UINode):
host - NQN of host to remove. host - NQN of host to remove.
""" """
self.delete(host) self.delete(host)
self.get_root().refresh()
self.refresh_node()
def ui_command_delete_all(self): def ui_command_delete_all(self):
"""Delete host from subsystem""" """Delete host from subsystem"""
for host in self.hosts: for host in self.hosts:
self.delete(host['nqn']) self.delete(host['nqn'])
self.get_root().refresh()
self.refresh_node()
def summary(self): def summary(self):
return "Hosts: %s" % len(self.hosts), None return "Hosts: %s" % len(self.hosts), None
@ -332,11 +291,8 @@ class UINVMfSubsystemNamespaces(UINode):
self.refresh() self.refresh()
def delete(self, nsid): def delete(self, nsid):
try: self.get_root().nvmf_subsystem_remove_ns(
self.get_root().nvmf_subsystem_remove_ns( nqn=self.parent.subsystem.nqn, nsid=nsid)
nqn=self.parent.subsystem.nqn, nsid=nsid)
except JSONRPCException as e:
self.shell.log.error(e.message)
def ui_command_create(self, bdev_name, nsid=None, def ui_command_create(self, bdev_name, nsid=None,
nguid=None, eui64=None, uuid=None): nguid=None, eui64=None, uuid=None):
@ -351,14 +307,9 @@ class UINVMfSubsystemNamespaces(UINode):
uuid: Namespace UUID. uuid: Namespace UUID.
""" """
nsid = self.ui_eval_param(nsid, "number", None) nsid = self.ui_eval_param(nsid, "number", None)
try: self.get_root().nvmf_subsystem_add_ns(
self.get_root().nvmf_subsystem_add_ns( nqn=self.parent.subsystem.nqn, bdev_name=bdev_name,
nqn=self.parent.subsystem.nqn, bdev_name=bdev_name, nsid=nsid, nguid=nguid, eui64=eui64, uuid=uuid)
nsid=nsid, nguid=nguid, eui64=eui64, uuid=uuid)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh()
self.refresh_node()
def ui_command_delete(self, nsid): def ui_command_delete(self, nsid):
"""Delete namespace from subsystem. """Delete namespace from subsystem.
@ -368,15 +319,11 @@ class UINVMfSubsystemNamespaces(UINode):
""" """
nsid = self.ui_eval_param(nsid, "number", None) nsid = self.ui_eval_param(nsid, "number", None)
self.delete(nsid) self.delete(nsid)
self.get_root().refresh()
self.refresh_node()
def ui_command_delete_all(self): def ui_command_delete_all(self):
"""Delete all namespaces from subsystem.""" """Delete all namespaces from subsystem."""
for namespace in self.namespaces: for namespace in self.namespaces:
self.delete(namespace['nsid']) self.delete(namespace['nsid'])
self.get_root().refresh()
self.refresh_node()
def summary(self): def summary(self):
return "Namespaces: %s" % len(self.namespaces), None return "Namespaces: %s" % len(self.namespaces), None