spdkcli: add try-except guards to calls
Catch expcetions thrown by rpc.client properly. Solved issue with errors not being displayed properly when using python2. Change-Id: I7f0823b2fda7e0e0b6e957de769ae5e10315b446 Signed-off-by: Karol Latecki <karol.latecki@intel.com> Reviewed-on: https://review.gerrithub.io/419225 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Pawel Kaminski <pawelx.kaminski@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
This commit is contained in:
parent
cd5579e89a
commit
2cb6391545
@ -1,5 +1,6 @@
|
||||
from configshell_fb import ConfigNode, ExecutionError
|
||||
from uuid import UUID
|
||||
from rpc.client import JSONRPCException
|
||||
import json
|
||||
|
||||
|
||||
@ -94,7 +95,11 @@ class UILvolStores(UINode):
|
||||
|
||||
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()
|
||||
|
||||
@ -135,16 +140,20 @@ class UIBdev(UINode):
|
||||
Arguments:
|
||||
name - Is a unique identifier of the bdev to be deleted - UUID number or name alias.
|
||||
"""
|
||||
self.get_root().delete_bdev(name=name)
|
||||
try:
|
||||
self.get_root().delete_bdev(name=name)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.get_root().refresh()
|
||||
self.refresh()
|
||||
|
||||
def ui_command_get_bdev_iostat(self, name=None):
|
||||
if name is None:
|
||||
ret = self.get_root().get_bdevs_iostat()
|
||||
else:
|
||||
try:
|
||||
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_split_bdev(self, base_bdev, split_count, split_size_mb=None):
|
||||
"""
|
||||
@ -159,10 +168,14 @@ class UIBdev(UINode):
|
||||
split_count = self.ui_eval_param(split_count, "number", None)
|
||||
split_size_mb = self.ui_eval_param(split_size_mb, "number", None)
|
||||
|
||||
ret_name = self.get_root().split_bdev(base_bdev=base_bdev,
|
||||
split_count=split_count,
|
||||
split_size_mb=split_size_mb)
|
||||
self.shell.log.info(ret_name)
|
||||
try:
|
||||
ret_name = self.get_root().split_bdev(base_bdev=base_bdev,
|
||||
split_count=split_count,
|
||||
split_size_mb=split_size_mb)
|
||||
self.shell.log.info(ret_name)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.parent.refresh()
|
||||
self.refresh()
|
||||
|
||||
@ -172,7 +185,12 @@ class UIBdev(UINode):
|
||||
Args:
|
||||
base_bdev: name of previously split bdev
|
||||
"""
|
||||
self.get_root().destruct_split_bdev(base_bdev=base_bdev)
|
||||
|
||||
try:
|
||||
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()
|
||||
|
||||
@ -200,10 +218,14 @@ class UIMallocBdev(UIBdev):
|
||||
size = self.ui_eval_param(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,
|
||||
block_size=block_size,
|
||||
name=name, uuid=uuid)
|
||||
self.shell.log.info(ret_name)
|
||||
try:
|
||||
ret_name = self.get_root().create_malloc_bdev(num_blocks=size * 1024 * 1024 // block_size,
|
||||
block_size=block_size,
|
||||
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()
|
||||
|
||||
@ -214,7 +236,10 @@ class UIMallocBdev(UIBdev):
|
||||
Arguments:
|
||||
name - Is a unique identifier of the malloc bdev to be deleted - UUID number or name alias.
|
||||
"""
|
||||
self.get_root().delete_malloc_bdev(name=name)
|
||||
try:
|
||||
self.get_root().delete_malloc_bdev(name=name)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
self.get_root().refresh()
|
||||
self.refresh()
|
||||
|
||||
@ -237,10 +262,14 @@ class UIAIOBdev(UIBdev):
|
||||
|
||||
block_size = self.ui_eval_param(block_size, "number", None)
|
||||
|
||||
ret_name = self.get_root().create_aio_bdev(name=name,
|
||||
block_size=int(block_size),
|
||||
filename=filename)
|
||||
self.shell.log.info(ret_name)
|
||||
try:
|
||||
ret_name = self.get_root().create_aio_bdev(name=name,
|
||||
block_size=int(block_size),
|
||||
filename=filename)
|
||||
self.shell.log.info(ret_name)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.get_root().refresh()
|
||||
self.refresh()
|
||||
|
||||
@ -273,10 +302,14 @@ class UILvolBdev(UIBdev):
|
||||
size *= (1024 * 1024)
|
||||
thin_provision = self.ui_eval_param(thin_provision, "bool", False)
|
||||
|
||||
ret_uuid = self.get_root().create_lvol_bdev(lvol_name=name, size=size,
|
||||
lvs_name=lvs_name, uuid=uuid,
|
||||
thin_provision=thin_provision)
|
||||
self.shell.log.info(ret_uuid)
|
||||
try:
|
||||
ret_uuid = self.get_root().create_lvol_bdev(lvol_name=name, size=size,
|
||||
lvs_name=lvs_name, uuid=uuid,
|
||||
thin_provision=thin_provision)
|
||||
self.shell.log.info(ret_uuid)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.get_root().refresh()
|
||||
self.refresh()
|
||||
|
||||
@ -292,10 +325,14 @@ class UINvmeBdev(UIBdev):
|
||||
self.shell.log.error("Using RDMA transport type."
|
||||
"Please provide arguments for adrfam, trsvcid and subnqn.")
|
||||
|
||||
ret_name = self.get_root().create_nvme_bdev(name=name, trtype=trtype,
|
||||
traddr=traddr, adrfam=adrfam,
|
||||
trsvcid=trsvcid, subnqn=subnqn)
|
||||
self.shell.log.info(ret_name)
|
||||
try:
|
||||
ret_name = self.get_root().create_nvme_bdev(name=name, trtype=trtype,
|
||||
traddr=traddr, adrfam=adrfam,
|
||||
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()
|
||||
|
||||
@ -320,10 +357,14 @@ class UINullBdev(UIBdev):
|
||||
block_size = self.ui_eval_param(block_size, "number", None)
|
||||
num_blocks = size * 1024 * 1024 // block_size
|
||||
|
||||
ret_name = self.get_root().create_null_bdev(num_blocks=num_blocks,
|
||||
block_size=block_size,
|
||||
name=name, uuid=uuid)
|
||||
self.shell.log.info(ret_name)
|
||||
try:
|
||||
ret_name = self.get_root().create_null_bdev(num_blocks=num_blocks,
|
||||
block_size=block_size,
|
||||
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()
|
||||
|
||||
@ -340,7 +381,11 @@ class UIErrorBdev(UIBdev):
|
||||
base_name - base bdev name on top of which error bdev will be created.
|
||||
"""
|
||||
|
||||
self.get_root().create_error_bdev(base_name=base_name)
|
||||
try:
|
||||
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()
|
||||
|
||||
@ -359,21 +404,34 @@ class UIPmemBdev(UIBdev):
|
||||
block_size = self.ui_eval_param(block_size, "number", None)
|
||||
num_blocks = int((total_size * 1024 * 1024) / block_size)
|
||||
|
||||
self.get_root().create_pmem_pool(pmem_file=pmem_file,
|
||||
num_blocks=num_blocks,
|
||||
block_size=block_size)
|
||||
try:
|
||||
self.get_root().create_pmem_pool(pmem_file=pmem_file,
|
||||
num_blocks=num_blocks,
|
||||
block_size=block_size)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
def ui_command_delete_pmem_pool(self, pmem_file):
|
||||
self.get_root().delete_pmem_pool(pmem_file=pmem_file)
|
||||
try:
|
||||
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):
|
||||
ret = self.get_root().delete_pmem_pool(pmem_file=pmem_file)
|
||||
self.shell.log.info(ret)
|
||||
try:
|
||||
ret = self.get_root().delete_pmem_pool(pmem_file=pmem_file)
|
||||
self.shell.log.info(ret)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
def ui_command_create(self, pmem_file, name):
|
||||
ret_name = self.get_root().create_pmem_bdev(pmem_file=pmem_file,
|
||||
name=name)
|
||||
self.shell.log.info(ret_name)
|
||||
try:
|
||||
ret_name = self.get_root().create_pmem_bdev(pmem_file=pmem_file,
|
||||
name=name)
|
||||
self.shell.log.info(ret_name)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.get_root().refresh()
|
||||
self.refresh()
|
||||
|
||||
@ -385,11 +443,15 @@ class UIRbdBdev(UIBdev):
|
||||
def ui_command_create(self, pool_name, rbd_name, block_size, name=None):
|
||||
block_size = self.ui_eval_param(block_size, "number", None)
|
||||
|
||||
ret_name = self.get_root().create_rbd_bdev(pool_name=pool_name,
|
||||
rbd_name=rbd_name,
|
||||
block_size=block_size,
|
||||
name=name)
|
||||
self.shell.log.info(ret_name)
|
||||
try:
|
||||
ret_name = self.get_root().create_rbd_bdev(pool_name=pool_name,
|
||||
rbd_name=rbd_name,
|
||||
block_size=block_size,
|
||||
name=name)
|
||||
self.shell.log.info(ret_name)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.get_root().refresh()
|
||||
self.refresh()
|
||||
|
||||
@ -409,10 +471,14 @@ class UIiSCSIBdev(UIBdev):
|
||||
Example: iscsi://127.0.0.1:3260/iqn.2018-06.org.spdk/0.
|
||||
initiator_iqn - IQN to use for initiating connection with the target.
|
||||
"""
|
||||
ret_name = self.get_root().create_iscsi_bdev(name=name,
|
||||
url=url,
|
||||
initiator_iqn=initiator_iqn)
|
||||
self.shell.log.info(ret_name)
|
||||
try:
|
||||
ret_name = self.get_root().create_iscsi_bdev(name=name,
|
||||
url=url,
|
||||
initiator_iqn=initiator_iqn)
|
||||
self.shell.log.info(ret_name)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.get_root().refresh()
|
||||
self.refresh()
|
||||
|
||||
@ -423,7 +489,11 @@ class UIiSCSIBdev(UIBdev):
|
||||
Arguments:
|
||||
name - name of the iscsi bdev to be deleted.
|
||||
"""
|
||||
self.get_root().delete_iscsi_bdev(name=name)
|
||||
try:
|
||||
self.get_root().delete_iscsi_bdev(name=name)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.get_root().refresh()
|
||||
self.refresh()
|
||||
|
||||
@ -438,14 +508,18 @@ class UIVirtioBlkBdev(UIBdev):
|
||||
vq_count = self.ui_eval_param(vq_count, "number", None)
|
||||
vq_size = self.ui_eval_param(vq_size, "number", None)
|
||||
|
||||
ret = self.get_root().create_virtio_dev(name=name,
|
||||
trtype=trtype,
|
||||
traddr=traddr,
|
||||
dev_type="blk",
|
||||
vq_count=vq_count,
|
||||
vq_size=vq_size)
|
||||
try:
|
||||
ret = self.get_root().create_virtio_dev(name=name,
|
||||
trtype=trtype,
|
||||
traddr=traddr,
|
||||
dev_type="blk",
|
||||
vq_count=vq_count,
|
||||
vq_size=vq_size)
|
||||
|
||||
self.shell.log.info(ret)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.shell.log.info(ret)
|
||||
self.get_root().refresh()
|
||||
self.refresh()
|
||||
|
||||
@ -465,19 +539,27 @@ class UIVirtioScsiBdev(UIBdev):
|
||||
vq_count = self.ui_eval_param(vq_count, "number", None)
|
||||
vq_size = self.ui_eval_param(vq_size, "number", None)
|
||||
|
||||
ret = self.get_root().create_virtio_dev(name=name,
|
||||
trtype=trtype,
|
||||
traddr=traddr,
|
||||
dev_type="scsi",
|
||||
vq_count=vq_count,
|
||||
vq_size=vq_size)
|
||||
try:
|
||||
ret = self.get_root().create_virtio_dev(name=name,
|
||||
trtype=trtype,
|
||||
traddr=traddr,
|
||||
dev_type="scsi",
|
||||
vq_count=vq_count,
|
||||
vq_size=vq_size)
|
||||
|
||||
self.shell.log.info(ret)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.shell.log.info(ret)
|
||||
self.get_root().refresh()
|
||||
self.refresh()
|
||||
|
||||
def ui_command_delete(self, name):
|
||||
self.get_root().remove_virtio_scsi_bdev(name=name)
|
||||
try:
|
||||
self.get_root().remove_virtio_scsi_bdev(name=name)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.get_root().refresh()
|
||||
self.refresh()
|
||||
|
||||
@ -605,10 +687,14 @@ class UIVhostBlk(UIVhost):
|
||||
readonly - Whether controller should be read only or not.
|
||||
Default: False.
|
||||
"""
|
||||
ret_name = self.get_root().create_vhost_blk_controller(ctrlr=name,
|
||||
dev_name=bdev,
|
||||
cpumask=cpumask,
|
||||
readonly=bool(readonly))
|
||||
try:
|
||||
self.get_root().create_vhost_blk_controller(ctrlr=name,
|
||||
dev_name=bdev,
|
||||
cpumask=cpumask,
|
||||
readonly=bool(readonly))
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.get_root().refresh()
|
||||
self.refresh()
|
||||
|
||||
@ -632,8 +718,12 @@ class UIVhostScsi(UIVhost):
|
||||
cpumask - Optional. Integer to specify mask of CPUs to use.
|
||||
Default: 1.
|
||||
"""
|
||||
ret_name = self.get_root().create_vhost_scsi_controller(ctrlr=name,
|
||||
cpumask=cpumask)
|
||||
try:
|
||||
self.get_root().create_vhost_scsi_controller(ctrlr=name,
|
||||
cpumask=cpumask)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.get_root().refresh()
|
||||
self.refresh()
|
||||
|
||||
@ -651,9 +741,13 @@ class UIVhostCtrl(UINode):
|
||||
def ui_command_set_coalescing(self, delay_base_us, iops_threshold):
|
||||
delay_base_us = self.ui_eval_param(delay_base_us, "number", None)
|
||||
iops_threshold = self.ui_eval_param(iops_threshold, "number", None)
|
||||
self.get_root().set_vhost_controller_coalescing(ctrlr=self.ctrlr.ctrlr,
|
||||
delay_base_us=delay_base_us,
|
||||
iops_threshold=iops_threshold)
|
||||
|
||||
try:
|
||||
self.get_root().set_vhost_controller_coalescing(ctrlr=self.ctrlr.ctrlr,
|
||||
delay_base_us=delay_base_us,
|
||||
iops_threshold=iops_threshold)
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
|
||||
class UIVhostScsiCtrlObj(UIVhostCtrl):
|
||||
@ -669,11 +763,14 @@ class UIVhostScsiCtrlObj(UIVhostCtrl):
|
||||
Arguments:
|
||||
target_num - Integer identifier of target node to delete.
|
||||
"""
|
||||
self.get_root().remove_vhost_scsi_target(ctrlr=self.ctrlr.ctrlr,
|
||||
scsi_target_num=int(target_num))
|
||||
for ctrlr in self.get_root().get_vhost_ctrlrs("scsi"):
|
||||
if ctrlr.ctrlr == self.ctrlr.ctrlr:
|
||||
self.ctrlr = ctrlr
|
||||
try:
|
||||
self.get_root().remove_vhost_scsi_target(ctrlr=self.ctrlr.ctrlr,
|
||||
scsi_target_num=int(target_num))
|
||||
for ctrlr in self.get_root().get_vhost_ctrlrs("scsi"):
|
||||
if ctrlr.ctrlr == self.ctrlr.ctrlr:
|
||||
self.ctrlr = ctrlr
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.refresh()
|
||||
self.get_root().refresh()
|
||||
@ -688,13 +785,16 @@ class UIVhostScsiCtrlObj(UIVhostCtrl):
|
||||
target_num - Integer identifier of target node to modify.
|
||||
bdev - Which bdev to add as LUN.
|
||||
"""
|
||||
try:
|
||||
self.get_root().add_vhost_scsi_lun(ctrlr=self.ctrlr.ctrlr,
|
||||
scsi_target_num=int(target_num),
|
||||
bdev_name=bdev_name)
|
||||
for ctrlr in self.get_root().get_vhost_ctrlrs("scsi"):
|
||||
if ctrlr.ctrlr == self.ctrlr.ctrlr:
|
||||
self.ctrlr = ctrlr
|
||||
except JSONRPCException as e:
|
||||
self.shell.log.error(e.message)
|
||||
|
||||
self.get_root().add_vhost_scsi_lun(ctrlr=self.ctrlr.ctrlr,
|
||||
scsi_target_num=int(target_num),
|
||||
bdev_name=bdev_name)
|
||||
for ctrlr in self.get_root().get_vhost_ctrlrs("scsi"):
|
||||
if ctrlr.ctrlr == self.ctrlr.ctrlr:
|
||||
self.ctrlr = ctrlr
|
||||
self.refresh()
|
||||
|
||||
def summary(self):
|
||||
|
Loading…
Reference in New Issue
Block a user