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:
parent
8d31df3061
commit
bcbf6e8483
@ -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
|
||||||
|
@ -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
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user