spdkcli: Add support for raid devices
Adds support to spdkcli.py for raid devices via UIRaidBdev with functionality to construct and destroy raid bdevs. Information regarding the raid can be viewed via 'show_details' on a given pooled_device child in the tree. Signed-off-by: Mike Carlin <mikefcarlin@protonmail.com> Change-Id: I2ca89e641b201c09b3d4db070eac6cc0c2cdec73 Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/452774 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Pawel Kaminski <pawelx.kaminski@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
67882ed76f
commit
fb6fbf3256
@ -193,6 +193,9 @@ if [ $SPDK_RUN_FUNCTIONAL_TEST -eq 1 ]; then
|
||||
if [ $SPDK_TEST_ISCSI -eq 1 ]; then
|
||||
run_test suite ./test/iscsi_tgt/iscsi_tgt.sh posix
|
||||
run_test suite ./test/spdkcli/iscsi.sh
|
||||
|
||||
# Run raid spdkcli test under iSCSI since blockdev tests run on systems that can't run spdkcli yet
|
||||
run_test suite test/spdkcli/raid.sh
|
||||
fi
|
||||
|
||||
if [ $SPDK_TEST_BLOBFS -eq 1 ]; then
|
||||
|
@ -75,6 +75,7 @@ class UIBdevs(UINode):
|
||||
UIiSCSIBdev(self)
|
||||
UIVirtioBlkBdev(self)
|
||||
UIVirtioScsiBdev(self)
|
||||
UIRaidBdev(self)
|
||||
|
||||
|
||||
class UILvolStores(UINode):
|
||||
@ -819,3 +820,43 @@ class UIVhostTargetObj(UINode):
|
||||
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)
|
||||
|
@ -244,6 +244,14 @@ class UIRoot(UINode):
|
||||
response = rpc.vhost.remove_virtio_bdev(self.client, **kwargs)
|
||||
return response
|
||||
|
||||
@verbose
|
||||
def construct_raid_bdev(self, **kwargs):
|
||||
rpc.bdev.construct_raid_bdev(self.client, **kwargs)
|
||||
|
||||
@verbose
|
||||
def destroy_raid_bdev(self, **kwargs):
|
||||
rpc.bdev.destroy_raid_bdev(self.client, **kwargs)
|
||||
|
||||
@verbose
|
||||
@is_method_available
|
||||
def get_virtio_scsi_devs(self):
|
||||
|
17
test/spdkcli/match_files/spdkcli_raid.test.match
Normal file
17
test/spdkcli/match_files/spdkcli_raid.test.match
Normal file
@ -0,0 +1,17 @@
|
||||
o- bdevs ..................................................................................................................... [...]
|
||||
o- aio ................................................................................................................ [Bdevs: 0]
|
||||
o- error .............................................................................................................. [Bdevs: 0]
|
||||
o- iscsi .............................................................................................................. [Bdevs: 0]
|
||||
o- logical_volume ..................................................................................................... [Bdevs: 0]
|
||||
o- malloc ............................................................................................................. [Bdevs: 2]
|
||||
| o- Malloc1 ................................................................................................ [Size=8.0M, Claimed]
|
||||
| o- Malloc2 ................................................................................................ [Size=8.0M, Claimed]
|
||||
o- null ............................................................................................................... [Bdevs: 0]
|
||||
o- nvme ............................................................................................................... [Bdevs: 0]
|
||||
o- pmemblk ............................................................................................................ [Bdevs: 0]
|
||||
o- raid_volume ........................................................................................................ [Bdevs: 1]
|
||||
| o- testraid .......................................................................................... [Size=16.0M, Not claimed]
|
||||
o- rbd ................................................................................................................ [Bdevs: 0]
|
||||
o- split_disk ......................................................................................................... [Bdevs: 0]
|
||||
o- virtioblk_disk ..................................................................................................... [Bdevs: 0]
|
||||
o- virtioscsi_disk .................................................................................................... [Bdevs: 0]
|
@ -23,6 +23,7 @@ o- / ...........................................................................
|
||||
| o- nvme ............................................................................................................. [Bdevs: 1]
|
||||
| | o- Nvme0n1 $(S) [Size=$(S), Claimed]
|
||||
| o- pmemblk .......................................................................................................... [Bdevs: 0]
|
||||
| o- raid_volume ...................................................................................................... [Bdevs: 0]
|
||||
| o- rbd .............................................................................................................. [Bdevs: 0]
|
||||
| o- split_disk ....................................................................................................... [Bdevs: 4]
|
||||
| | o- Nvme0n1p0 $(S) [Size=$(FP)G, Not claimed]
|
||||
|
@ -9,6 +9,7 @@ o- bdevs .......................................................................
|
||||
o- null ............................................................................................................... [Bdevs: 0]
|
||||
o- nvme ............................................................................................................... [Bdevs: 0]
|
||||
o- pmemblk ............................................................................................................ [Bdevs: 0]
|
||||
o- raid_volume ........................................................................................................ [Bdevs: 0]
|
||||
o- rbd ................................................................................................................ [Bdevs: 0]
|
||||
o- split_disk ......................................................................................................... [Bdevs: 0]
|
||||
o- virtioblk_disk ..................................................................................................... [Bdevs: 1]
|
||||
|
44
test/spdkcli/raid.sh
Executable file
44
test/spdkcli/raid.sh
Executable file
@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
set -xe
|
||||
|
||||
MATCH_FILE="spdkcli_raid.test"
|
||||
SPDKCLI_BRANCH="/bdevs"
|
||||
testdir=$(readlink -f $(dirname $0))
|
||||
. $testdir/common.sh
|
||||
|
||||
timing_enter spdkcli_raid
|
||||
trap 'on_error_exit;' ERR
|
||||
|
||||
timing_enter run_spdk_tgt
|
||||
run_spdk_tgt
|
||||
timing_exit run_spdk_tgt
|
||||
|
||||
timing_enter spdkcli_create_malloc
|
||||
$spdkcli_job "'/bdevs/malloc create 8 512 Malloc1' 'Malloc1' True
|
||||
'/bdevs/malloc create 8 512 Malloc2' 'Malloc2' True
|
||||
"
|
||||
timing_exit spdkcli_create_malloc
|
||||
|
||||
timing_enter spdkcli_create_raid
|
||||
$spdkcli_job "'/bdevs/raid_volume create testraid 0 \"Malloc1 Malloc2\" 4' 'testraid' True
|
||||
"
|
||||
timing_exit spdkcli_create_raid
|
||||
|
||||
timing_enter spdkcli_check_match
|
||||
check_match
|
||||
timing_exit spdkcli_check_match
|
||||
|
||||
timing_enter spdkcli_delete_raid
|
||||
$spdkcli_job "'/bdevs/raid_volume delete testraid' '' True
|
||||
"
|
||||
timing_exit spdkcli_delete_raid
|
||||
|
||||
timing_enter spdkcli_delete_malloc
|
||||
$spdkcli_job "'/bdevs/malloc delete Malloc1' '' True
|
||||
'/bdevs/malloc delete Malloc2' '' True
|
||||
"
|
||||
timing_exit spdkcli_delete_malloc
|
||||
|
||||
killprocess $spdk_tgt_pid
|
||||
timing_exit spdkcli_raid
|
||||
report_test_completion spdk_cli
|
Loading…
x
Reference in New Issue
Block a user