From: afreen23 Date: Mon, 21 Jul 2025 06:37:58 +0000 (+0530) Subject: Merge pull request #64570 from Hezko/wip-72180-tentacle X-Git-Tag: testing/wip-vshankar-testing-20250721.082855-tentacle-debug~5 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=059833115fa228beaf0583bc7aaf424a80690d2a;p=ceph-ci.git Merge pull request #64570 from Hezko/wip-72180-tentacle tentacle: mgr/dashboard: support human friendly size parameter split commands to separate api and cli functions Reviewed-by: Nizamudeen A --- 059833115fa228beaf0583bc7aaf424a80690d2a diff --cc src/pybind/mgr/dashboard/controllers/nvmeof.py index 42639f5b0db,1e3899dd3fb..5b97de5f3f4 --- a/src/pybind/mgr/dashboard/controllers/nvmeof.py +++ b/src/pybind/mgr/dashboard/controllers/nvmeof.py @@@ -470,9 -462,51 +470,52 @@@ else ) ) + @NvmeofCLICommand("nvmeof ns add", model.NamespaceCreation) + @convert_to_model(model.NamespaceCreation) + @handle_nvmeof_error + def create_cli( + self, + nqn: str, + rbd_image_name: str, + rbd_pool: str = "rbd", + create_image: Optional[bool] = False, + size: Optional[str] = None, + rbd_image_size: Optional[str] = None, + trash_image: Optional[bool] = False, + block_size: int = 512, + load_balancing_group: Optional[int] = None, + force: Optional[bool] = False, + no_auto_visible: Optional[bool] = False, + disable_auto_resize: Optional[bool] = False, + read_only: Optional[bool] = False, + gw_group: Optional[str] = None, + traddr: Optional[str] = None, + ): + size_b = rbd_image_size_b = None + if size: + size_b = convert_to_bytes(size, default_unit='MB') + if rbd_image_size: + rbd_image_size_b = convert_to_bytes(rbd_image_size, default_unit='MB') + return NVMeoFClient(gw_group=gw_group, traddr=traddr).stub.namespace_add( + NVMeoFClient.pb2.namespace_add_req( + subsystem_nqn=nqn, + rbd_image_name=rbd_image_name, + rbd_pool_name=rbd_pool, + block_size=block_size, + create_image=create_image, + size=rbd_image_size_b or size_b, + trash_image=trash_image, + anagrpid=load_balancing_group, + force=force, + no_auto_visible=no_auto_visible, + disable_auto_resize=disable_auto_resize, + read_only=read_only + ) + ) + @ReadPermission @Endpoint('PUT', '{nsid}/set_qos') + @NvmeofCLICommand("nvmeof ns set_qos", model=model.RequestStatus) @EndpointDoc( "set QOS for specified NVMeoF namespace", parameters={ @@@ -583,9 -617,30 +626,31 @@@ ) ) + @NvmeofCLICommand("nvmeof ns resize", model=model.RequestStatus) + @convert_to_model(model.RequestStatus) + @handle_nvmeof_error + def resize_cli( + self, + nqn: str, + nsid: str, + rbd_image_size: str, + gw_group: Optional[str] = None, + traddr: Optional[str] = None + ): + if rbd_image_size: + rbd_image_size_b = convert_to_bytes(rbd_image_size, default_unit='MB') + mib = 1024 * 1024 + rbd_image_size_mb = rbd_image_size_b // mib + + return NVMeoFClient(gw_group=gw_group, traddr=traddr).stub.namespace_resize( + NVMeoFClient.pb2.namespace_resize_req( + subsystem_nqn=nqn, nsid=int(nsid), new_size=rbd_image_size_mb + ) + ) + @ReadPermission @Endpoint('PUT', '{nsid}/add_host') + @NvmeofCLICommand("nvmeof ns add_host", model=model.RequestStatus) @EndpointDoc( "Adds a host to the specified NVMeoF namespace", parameters={ diff --cc src/pybind/mgr/dashboard/tests/test_nvmeof_cli.py index fd3583e6c6e,96b7f9ce2e3..429ee017342 --- a/src/pybind/mgr/dashboard/tests/test_nvmeof_cli.py +++ b/src/pybind/mgr/dashboard/tests/test_nvmeof_cli.py @@@ -7,10 -7,9 +7,10 @@@ from unittest.mock import MagicMoc import pytest from mgr_module import CLICommand, HandleCommandResult +from ..controllers import EndpointDoc from ..model.nvmeof import CliFlags, CliHeader from ..services.nvmeof_cli import AnnotatedDataTextOutputFormatter, \ - NvmeofCLICommand, convert_from_bytes + NvmeofCLICommand, convert_from_bytes, convert_to_bytes from ..tests import CLICommandTestMixin