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:
Karol Latecki 2018-07-13 14:08:16 +02:00 committed by Jim Harris
parent cd5579e89a
commit 2cb6391545

View File

@ -1,5 +1,6 @@
from configshell_fb import ConfigNode, ExecutionError from configshell_fb import ConfigNode, ExecutionError
from uuid import UUID from uuid import UUID
from rpc.client import JSONRPCException
import json import json
@ -94,7 +95,11 @@ 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.get_root().refresh()
self.refresh() self.refresh()
@ -135,16 +140,20 @@ class UIBdev(UINode):
Arguments: Arguments:
name - Is a unique identifier of the bdev to be deleted - UUID number or name alias. 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.get_root().refresh()
self.refresh() self.refresh()
def ui_command_get_bdev_iostat(self, name=None): def ui_command_get_bdev_iostat(self, name=None):
if name is None: try:
ret = self.get_root().get_bdevs_iostat()
else:
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_split_bdev(self, base_bdev, split_count, split_size_mb=None): 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_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)
ret_name = self.get_root().split_bdev(base_bdev=base_bdev, try:
split_count=split_count, ret_name = self.get_root().split_bdev(base_bdev=base_bdev,
split_size_mb=split_size_mb) split_count=split_count,
self.shell.log.info(ret_name) 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.parent.refresh()
self.refresh() self.refresh()
@ -172,7 +185,12 @@ class UIBdev(UINode):
Args: Args:
base_bdev: name of previously split bdev 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.parent.refresh()
self.refresh() self.refresh()
@ -200,10 +218,14 @@ 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.get_root().refresh()
self.refresh() self.refresh()
@ -214,7 +236,10 @@ class UIMallocBdev(UIBdev):
Arguments: Arguments:
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.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.get_root().refresh()
self.refresh() self.refresh()
@ -237,10 +262,14 @@ 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.get_root().refresh()
self.refresh() self.refresh()
@ -273,10 +302,14 @@ 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)
ret_uuid = self.get_root().create_lvol_bdev(lvol_name=name, size=size, try:
lvs_name=lvs_name, uuid=uuid, ret_uuid = self.get_root().create_lvol_bdev(lvol_name=name, size=size,
thin_provision=thin_provision) lvs_name=lvs_name, uuid=uuid,
self.shell.log.info(ret_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.get_root().refresh()
self.refresh() self.refresh()
@ -292,10 +325,14 @@ class UINvmeBdev(UIBdev):
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.get_root().refresh()
self.refresh() self.refresh()
@ -320,10 +357,14 @@ class UINullBdev(UIBdev):
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.get_root().refresh()
self.refresh() self.refresh()
@ -340,7 +381,11 @@ 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.
""" """
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.get_root().refresh()
self.refresh() self.refresh()
@ -359,21 +404,34 @@ class UIPmemBdev(UIBdev):
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)
self.get_root().create_pmem_pool(pmem_file=pmem_file, try:
num_blocks=num_blocks, self.get_root().create_pmem_pool(pmem_file=pmem_file,
block_size=block_size) 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): 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): def ui_command_info_pmem_pool(self, pmem_file):
ret = self.get_root().delete_pmem_pool(pmem_file=pmem_file) try:
self.shell.log.info(ret) 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): def ui_command_create(self, pmem_file, name):
ret_name = self.get_root().create_pmem_bdev(pmem_file=pmem_file, try:
name=name) ret_name = self.get_root().create_pmem_bdev(pmem_file=pmem_file,
self.shell.log.info(ret_name) name=name)
self.shell.log.info(ret_name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh() self.get_root().refresh()
self.refresh() self.refresh()
@ -385,11 +443,15 @@ class UIRbdBdev(UIBdev):
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)
ret_name = self.get_root().create_rbd_bdev(pool_name=pool_name, try:
rbd_name=rbd_name, ret_name = self.get_root().create_rbd_bdev(pool_name=pool_name,
block_size=block_size, rbd_name=rbd_name,
name=name) block_size=block_size,
self.shell.log.info(ret_name) name=name)
self.shell.log.info(ret_name)
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh() self.get_root().refresh()
self.refresh() self.refresh()
@ -409,10 +471,14 @@ 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.
""" """
ret_name = self.get_root().create_iscsi_bdev(name=name, try:
url=url, ret_name = self.get_root().create_iscsi_bdev(name=name,
initiator_iqn=initiator_iqn) url=url,
self.shell.log.info(ret_name) 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.get_root().refresh()
self.refresh() self.refresh()
@ -423,7 +489,11 @@ class UIiSCSIBdev(UIBdev):
Arguments: Arguments:
name - name of the iscsi bdev to be deleted. 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.get_root().refresh()
self.refresh() self.refresh()
@ -438,14 +508,18 @@ 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)
ret = self.get_root().create_virtio_dev(name=name, try:
trtype=trtype, ret = self.get_root().create_virtio_dev(name=name,
traddr=traddr, trtype=trtype,
dev_type="blk", traddr=traddr,
vq_count=vq_count, dev_type="blk",
vq_size=vq_size) 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.get_root().refresh()
self.refresh() self.refresh()
@ -465,19 +539,27 @@ 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)
ret = self.get_root().create_virtio_dev(name=name, try:
trtype=trtype, ret = self.get_root().create_virtio_dev(name=name,
traddr=traddr, trtype=trtype,
dev_type="scsi", traddr=traddr,
vq_count=vq_count, dev_type="scsi",
vq_size=vq_size) 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.get_root().refresh()
self.refresh() self.refresh()
def ui_command_delete(self, name): 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.get_root().refresh()
self.refresh() self.refresh()
@ -605,10 +687,14 @@ 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.
""" """
ret_name = self.get_root().create_vhost_blk_controller(ctrlr=name, try:
dev_name=bdev, self.get_root().create_vhost_blk_controller(ctrlr=name,
cpumask=cpumask, dev_name=bdev,
readonly=bool(readonly)) cpumask=cpumask,
readonly=bool(readonly))
except JSONRPCException as e:
self.shell.log.error(e.message)
self.get_root().refresh() self.get_root().refresh()
self.refresh() self.refresh()
@ -632,8 +718,12 @@ 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.
""" """
ret_name = self.get_root().create_vhost_scsi_controller(ctrlr=name, try:
cpumask=cpumask) 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.get_root().refresh()
self.refresh() self.refresh()
@ -651,9 +741,13 @@ class UIVhostCtrl(UINode):
def ui_command_set_coalescing(self, delay_base_us, iops_threshold): def ui_command_set_coalescing(self, delay_base_us, iops_threshold):
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)
self.get_root().set_vhost_controller_coalescing(ctrlr=self.ctrlr.ctrlr,
delay_base_us=delay_base_us, try:
iops_threshold=iops_threshold) 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): class UIVhostScsiCtrlObj(UIVhostCtrl):
@ -669,11 +763,14 @@ class UIVhostScsiCtrlObj(UIVhostCtrl):
Arguments: Arguments:
target_num - Integer identifier of target node to delete. target_num - Integer identifier of target node to delete.
""" """
self.get_root().remove_vhost_scsi_target(ctrlr=self.ctrlr.ctrlr, try:
scsi_target_num=int(target_num)) self.get_root().remove_vhost_scsi_target(ctrlr=self.ctrlr.ctrlr,
for ctrlr in self.get_root().get_vhost_ctrlrs("scsi"): scsi_target_num=int(target_num))
if ctrlr.ctrlr == self.ctrlr.ctrlr: for ctrlr in self.get_root().get_vhost_ctrlrs("scsi"):
self.ctrlr = ctrlr if ctrlr.ctrlr == self.ctrlr.ctrlr:
self.ctrlr = ctrlr
except JSONRPCException as e:
self.shell.log.error(e.message)
self.refresh() self.refresh()
self.get_root().refresh() self.get_root().refresh()
@ -688,13 +785,16 @@ 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,
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() self.refresh()
def summary(self): def summary(self):