for child in self.children:
child.refresh()
+ def refresh_node(self):
+ self.refresh()
+
def ui_command_refresh(self):
self.refresh()
try:
result = ConfigNode.execute_command(self, command,
pparams, kparams)
- except Exception as msg:
- self.shell.log.error(str(msg))
- pass
+ except Exception as e:
+ raise e
else:
self.shell.log.debug("Command %s succeeded." % command)
return result
+ finally:
+ if self.shell.interactive and\
+ 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", "load_config",
+ "load_subsystem_config"]:
+ self.get_root().refresh()
+ self.refresh_node()
class UIBdevs(UINode):
UIiSCSIBdev(self)
UIVirtioBlkBdev(self)
UIVirtioScsiBdev(self)
+ UIRaidBdev(self)
class UILvolStores(UINode):
for lvs in self.get_root().get_lvol_stores():
UILvsObj(lvs, self)
+ def delete(self, name, uuid):
+ if name is None and uuid is None:
+ self.shell.log.error("Please specify one of the identifiers: "
+ "lvol store name or UUID")
+ self.get_root().delete_lvol_store(lvs_name=name, uuid=uuid)
+
def ui_command_create(self, name, bdev_name, cluster_size=None):
"""
Creates logical volume store on target bdev.
"""
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()
+ self.get_root().create_lvol_store(lvs_name=name, bdev_name=bdev_name, cluster_sz=cluster_size)
def ui_command_delete(self, name=None, uuid=None):
"""
name - Friendly name of the logical volume store to be deleted.
uuid - UUID number of the logical volume store to be deleted.
"""
- if name is None and uuid is None:
- self.shell.log.error("Please specify one of the identifiers: "
- "lvol store name or UUID")
- self.get_root().delete_lvol_store(lvs_name=name, uuid=uuid)
- self.get_root().refresh()
- self.refresh()
+ self.delete(name, uuid)
+
+ def ui_command_delete_all(self):
+ rpc_messages = ""
+ for lvs in self._children:
+ try:
+ self.delete(None, lvs.lvs.uuid)
+ except JSONRPCException as e:
+ rpc_messages += e.message
+ if rpc_messages:
+ raise JSONRPCException(rpc_messages)
def summary(self):
return "Lvol stores: %s" % len(self.children), None
UIBdevObj(bdev, self)
def ui_command_get_bdev_iostat(self, name=None):
- 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)
+ ret = self.get_root().get_bdevs_iostat(name=name)
+ self.shell.log.info(json.dumps(ret, indent=2))
+
+ def ui_command_delete_all(self):
+ """Delete all bdevs from this tree node."""
+ rpc_messages = ""
+ for bdev in self._children:
+ try:
+ self.delete(bdev.name)
+ except JSONRPCException as e:
+ rpc_messages += e.message
+ if rpc_messages:
+ raise JSONRPCException(rpc_messages)
def summary(self):
return "Bdevs: %d" % len(self.children), None
def __init__(self, parent):
UIBdev.__init__(self, "malloc", parent)
+ def delete(self, name):
+ self.get_root().delete_malloc_bdev(name=name)
+
def ui_command_create(self, size, block_size, name=None, uuid=None):
"""
Construct a Malloc bdev.
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()
+ 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)
def ui_command_delete(self, name):
"""
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()
+ self.delete(name)
class UIAIOBdev(UIBdev):
def __init__(self, parent):
UIBdev.__init__(self, "aio", parent)
+ def delete(self, name):
+ self.get_root().delete_aio_bdev(name=name)
+
def ui_command_create(self, name, filename, block_size):
"""
Construct an AIO bdev.
"""
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()
+ ret_name = self.get_root().create_aio_bdev(name=name,
+ block_size=int(block_size),
+ filename=filename)
+ self.shell.log.info(ret_name)
def ui_command_delete(self, name):
"""
Arguments:
name - Is a unique identifier of the aio bdev to be deleted - UUID number or name alias.
"""
- try:
- self.get_root().delete_aio_bdev(name=name)
- except JSONRPCException as e:
- self.shell.log.error(e.message)
- self.get_root().refresh()
- self.refresh()
+ self.delete(name)
class UILvolBdev(UIBdev):
def __init__(self, parent):
UIBdev.__init__(self, "logical_volume", parent)
+ def delete(self, name):
+ self.get_root().destroy_lvol_bdev(name=name)
+
def ui_command_create(self, name, size, lvs, thin_provision=None):
"""
Construct a Logical Volume bdev.
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()
+ 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)
def ui_command_delete(self, name):
"""
Arguments:
name - Is a unique identifier of the lvol bdev to be deleted - UUID number or name alias.
"""
- try:
- self.get_root().destroy_lvol_bdev(name=name)
- except JSONRPCException as e:
- self.shell.log.error(e.message)
- self.get_root().refresh()
- self.refresh()
+ self.delete(name)
class UINvmeBdev(UIBdev):
def __init__(self, parent):
UIBdev.__init__(self, "nvme", parent)
+ def delete(self, name):
+ self.get_root().delete_nvme_controller(name=name)
+
def ui_command_create(self, name, trtype, traddr,
adrfam=None, trsvcid=None, subnqn=None):
-
if "rdma" in trtype and None in [adrfam, trsvcid, subnqn]:
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()
+ 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)
+
+ def ui_command_delete_all(self):
+ rpc_messages = ""
+ ctrlrs = [x.name for x in self._children]
+ ctrlrs = [x.rsplit("n", 1)[0] for x in ctrlrs]
+ ctrlrs = set(ctrlrs)
+ for ctrlr in ctrlrs:
+ try:
+ self.delete(ctrlr)
+ except JSONRPCException as e:
+ rpc_messages += e.messages
+ if rpc_messages:
+ raise JSONRPCException(rpc_messages)
def ui_command_delete(self, name):
"""
Arguments:
name - Is a unique identifier of the NVMe controller to be deleted.
"""
- try:
- self.get_root().delete_nvme_controller(name=name)
- except JSONRPCException as e:
- self.shell.log.error(e.message)
- self.get_root().refresh()
- self.refresh()
+ self.delete(name)
class UINullBdev(UIBdev):
def __init__(self, parent):
UIBdev.__init__(self, "null", parent)
+ def delete(self, name):
+ self.get_root().delete_null_bdev(name=name)
+
def ui_command_create(self, name, size, block_size, uuid=None):
"""
Construct a Null bdev.
size = self.ui_eval_param(size, "number", None)
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()
+ 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)
def ui_command_delete(self, name):
"""
Arguments:
name - Is a unique identifier of the null bdev to be deleted - UUID number or name alias.
"""
- try:
- self.get_root().delete_null_bdev(name=name)
- except JSONRPCException as e:
- self.shell.log.error(e.message)
- self.get_root().refresh()
- self.refresh()
+ self.delete(name)
class UIErrorBdev(UIBdev):
def __init__(self, parent):
UIBdev.__init__(self, "error", parent)
+ def delete(self, name):
+ self.get_root().delete_error_bdev(name=name)
+
def ui_command_create(self, base_name):
"""
Construct a error injection bdev.
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()
+ self.get_root().create_error_bdev(base_name=base_name)
def ui_command_delete(self, name):
"""
Arguments:
name - Is a unique identifier of the error bdev to be deleted - UUID number or name alias.
"""
- try:
- self.get_root().delete_error_bdev(name=name)
- except JSONRPCException as e:
- self.shell.log.error(e.message)
- self.get_root().refresh()
- self.refresh()
+ self.delete(name)
class UISplitBdev(UIBdev):
def __init__(self, parent):
UIBdev.__init__(self, "split_disk", parent)
+ def delete(self, name):
+ pass
+
def ui_command_split_bdev(self, base_bdev, split_count, split_size_mb=None):
"""
Construct split block devices from a base bdev.
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()
+ 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)
def ui_command_destruct_split_bdev(self, base_bdev):
"""Destroy split block devices associated with base bdev.
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()
+ self.get_root().destruct_split_bdev(base_bdev=base_bdev)
class UIPmemBdev(UIBdev):
def __init__(self, parent):
UIBdev.__init__(self, "pmemblk", parent)
+ def delete(self, name):
+ self.get_root().delete_pmem_bdev(name=name)
+
def ui_command_create_pmem_pool(self, pmem_file, total_size, block_size):
total_size = self.ui_eval_param(total_size, "number", None)
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)
+ self.get_root().create_pmem_pool(pmem_file=pmem_file,
+ num_blocks=num_blocks,
+ block_size=block_size)
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)
+ self.get_root().delete_pmem_pool(pmem_file=pmem_file)
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)
+ ret = self.get_root().delete_pmem_pool(pmem_file=pmem_file)
+ self.shell.log.info(ret)
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()
+ ret_name = self.get_root().create_pmem_bdev(pmem_file=pmem_file,
+ name=name)
+ self.shell.log.info(ret_name)
def ui_command_delete(self, name):
"""
Arguments:
name - Is a unique identifier of the pmem bdev to be deleted - UUID number or name alias.
"""
- try:
- self.get_root().delete_pmem_bdev(name=name)
- except JSONRPCException as e:
- self.shell.log.error(e.message)
- self.get_root().refresh()
- self.refresh()
+ self.delete(name)
class UIRbdBdev(UIBdev):
def __init__(self, parent):
UIBdev.__init__(self, "rbd", parent)
+ def delete(self, name):
+ self.get_root().delete_rbd_bdev(name=name)
+
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()
+ 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)
def ui_command_delete(self, name):
"""
Arguments:
name - Is a unique identifier of the rbd bdev to be deleted - UUID number or name alias.
"""
- try:
- self.get_root().delete_rbd_bdev(name=name)
- except JSONRPCException as e:
- self.shell.log.error(e.message)
- self.get_root().refresh()
- self.refresh()
+ self.delete(name)
class UIiSCSIBdev(UIBdev):
def __init__(self, parent):
UIBdev.__init__(self, "iscsi", parent)
+ def delete(self, name):
+ self.get_root().delete_iscsi_bdev(name=name)
+
def ui_command_create(self, name, url, initiator_iqn):
"""
Create iSCSI bdev in configuration by connecting to remote
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()
+ ret_name = self.get_root().create_iscsi_bdev(name=name,
+ url=url,
+ initiator_iqn=initiator_iqn)
+ self.shell.log.info(ret_name)
def ui_command_delete(self, name):
"""
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()
+ self.delete(name)
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,
- 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.get_root().refresh()
- self.refresh()
+ 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)
def ui_command_delete(self, name):
"""
Arguments:
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)
- except JSONRPCException as e:
- self.shell.log.error(e.message)
- self.get_root().refresh()
- self.refresh()
+ self.get_root().remove_virtio_bdev(name=name)
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,
- 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.get_root().refresh()
- self.refresh()
+ ret = self.get_root().create_virtio_dev(name=name,
+ trtype=trtype,
+ traddr=traddr,
+ dev_type="scsi",
+ vq_count=vq_count,
+ vq_size=vq_size)
- def ui_command_delete(self, name):
- try:
- self.get_root().remove_virtio_bdev(name=name)
- 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_bdev(name=name)
class UIBdevObj(UINode):
name - Controller name.
"""
self.get_root().remove_vhost_controller(ctrlr=name)
- self.get_root().refresh()
- self.refresh()
class UIVhostBlk(UIVhost):
def refresh(self):
self._children = set([])
- for ctrlr in self.get_root().get_vhost_ctrlrs(self.name):
+ for ctrlr in self.get_root().get_vhost_controllers(ctrlr_type=self.name):
UIVhostBlkCtrlObj(ctrlr, self)
def ui_command_create(self, name, bdev, cpumask=None, readonly=False):
readonly - Whether controller should be read only or not.
Default: False.
"""
- 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()
+ self.get_root().create_vhost_blk_controller(ctrlr=name,
+ dev_name=bdev,
+ cpumask=cpumask,
+ readonly=bool(readonly))
class UIVhostScsi(UIVhost):
def refresh(self):
self._children = set([])
- for ctrlr in self.get_root().get_vhost_ctrlrs(self.name):
+ for ctrlr in self.get_root().get_vhost_controllers(ctrlr_type=self.name):
UIVhostScsiCtrlObj(ctrlr, self)
def ui_command_create(self, name, cpumask=None):
cpumask - Optional. Integer to specify mask of CPUs to use.
Default: 1.
"""
- 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()
+ self.get_root().create_vhost_scsi_controller(ctrlr=name,
+ cpumask=cpumask)
class UIVhostCtrl(UINode):
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)
+ self.get_root().set_vhost_controller_coalescing(ctrlr=self.ctrlr.ctrlr,
+ delay_base_us=delay_base_us,
+ iops_threshold=iops_threshold)
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()
+ 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_controllers(ctrlr_type="scsi"):
+ if ctrlr.ctrlr == self.ctrlr.ctrlr:
+ self.ctrlr = ctrlr
def ui_command_add_lun(self, target_num, bdev_name):
"""
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()
+ 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_controllers(ctrlr_type="scsi"):
+ if ctrlr.ctrlr == self.ctrlr.ctrlr:
+ self.ctrlr = ctrlr
def summary(self):
info = self.ctrlr.socket
class UIVhostLunDevObj(UINode):
def __init__(self, name, parent):
UINode.__init__(self, name, parent)
+
+
+class UIRaidBdev(UIBdev):
+ def __init__(self, parent):
+ UIBdev.__init__(self, "raid_volume", parent)
+
+ def delete(self, name):
+ self.get_root().destroy_raid_bdev(name=name)
+
+ def ui_command_create(self, name, raid_level, base_bdevs, strip_size_kb):
+ """
+ Creates a raid bdev of the provided base_bdevs
+
+ Arguments:
+ name - raid bdev name
+ raid_level - raid level, supported values 0
+ base_bdevs - base bdevs name, whitespace separated list in quotes
+ strip_size_kb - strip size of raid bdev in KB, supported values like 8, 16, 32, 64, 128, 256, etc
+ """
+ base_bdevs_array = []
+ for u in base_bdevs.strip().split(" "):
+ base_bdevs_array.append(u)
+
+ raid_level = self.ui_eval_param(raid_level, "number", None)
+ strip_size_kb = self.ui_eval_param(strip_size_kb, "number", None)
+
+ ret_name = self.get_root().construct_raid_bdev(name=name,
+ raid_level=raid_level,
+ base_bdevs=base_bdevs_array,
+ strip_size_kb=strip_size_kb)
+ self.shell.log.info(ret_name)
+
+ def ui_command_delete(self, name):
+ """
+ Deletes this raid bdev object
+
+ Arguments:
+ name - raid bdev name
+ """
+ self.delete(name)