Commit 2cb63915 authored by Karol Latecki's avatar Karol Latecki Committed by Jim Harris
Browse files

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: default avatarKarol Latecki <karol.latecki@intel.com>
Reviewed-on: https://review.gerrithub.io/419225


Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarPawel Kaminski <pawelx.kaminski@intel.com>
Reviewed-by: default avatarBen Walker <benjamin.walker@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Chandler-Test-Pool: SPDK Automated Test System <sys_sgsw@intel.com>
parent cd5579e8
Loading
Loading
Loading
Loading
+187 −87
Original line number Diff line number Diff line
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)

        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.
        """
        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))
        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)

        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
        """

        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)

        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.
        """
        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)

        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)

        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.")

        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

        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.
        """

        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)

        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):
        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):
        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):
        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)

        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.
        """
        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.
        """
        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,6 +508,7 @@ class UIVirtioBlkBdev(UIBdev):
        vq_count = self.ui_eval_param(vq_count, "number", None)
        vq_size = self.ui_eval_param(vq_size, "number", None)

        try:
            ret = self.get_root().create_virtio_dev(name=name,
                                                    trtype=trtype,
                                                    traddr=traddr,
@@ -446,6 +517,9 @@ class UIVirtioBlkBdev(UIBdev):
                                                    vq_size=vq_size)

            self.shell.log.info(ret)
        except JSONRPCException as e:
            self.shell.log.error(e.message)

        self.get_root().refresh()
        self.refresh()

@@ -465,6 +539,7 @@ class UIVirtioScsiBdev(UIBdev):
        vq_count = self.ui_eval_param(vq_count, "number", None)
        vq_size = self.ui_eval_param(vq_size, "number", None)

        try:
            ret = self.get_root().create_virtio_dev(name=name,
                                                    trtype=trtype,
                                                    traddr=traddr,
@@ -473,11 +548,18 @@ class UIVirtioScsiBdev(UIBdev):
                                                    vq_size=vq_size)

            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):
        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,
        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,
        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)

        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.
        """
        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.refresh()

    def summary(self):