diff --git a/scripts/spdkcli/ui_node.py b/scripts/spdkcli/ui_node.py index 9e90b5101..a81d6c7f6 100644 --- a/scripts/spdkcli/ui_node.py +++ b/scripts/spdkcli/ui_node.py @@ -52,6 +52,7 @@ class UIBdevs(UINode): UIAIOBdev(self) UILvolBdev(self) UINvmeBdev(self) + UINullBdev(self) UISplitBdev(self) def ui_command_delete(self, name): @@ -282,6 +283,34 @@ class UINvmeBdev(UIBdev): self.refresh() +class UINullBdev(UIBdev): + def __init__(self, parent): + UIBdev.__init__(self, "Null", parent) + + def ui_command_create(self, name, size, block_size, uuid=None): + """ + Construct a Null bdev. + + Arguments: + name - Name to use for bdev. + size - Size in megabytes. + block_size - Integer, block size to use when constructing bdev. + uuid - Optional parameter. Custom UUID to use. If empty then random + will be generated. + """ + + 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 + + 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) + self.get_root().refresh() + self.refresh() + + class UISplitBdev(UIBdev): def __init__(self, parent): UIBdev.__init__(self, "Split_Disk", parent) diff --git a/scripts/spdkcli/ui_root.py b/scripts/spdkcli/ui_root.py index 7af297595..564af452b 100644 --- a/scripts/spdkcli/ui_root.py +++ b/scripts/spdkcli/ui_root.py @@ -65,6 +65,10 @@ class UIRoot(UINode): response = rpc.bdev.construct_nvme_bdev(self.client, **kwargs) return self.print_array(response) + def create_null_bdev(self, **kwargs): + response = rpc.bdev.construct_null_bdev(self.client, **kwargs) + return self.print_array(response) + def get_lvol_stores(self): self.current_lvol_stores = rpc.lvol.get_lvol_stores(self.client) for lvs in self.current_lvol_stores: