From: afreen23 Date: Thu, 17 Jul 2025 11:13:08 +0000 (+0530) Subject: Merge pull request #64516 from Hezko/nvmeof-cli-size-convert3 X-Git-Url: http://git.apps.os.sepia.ceph.com/?a=commitdiff_plain;h=c1491dc780f22e661a6a370e044d01b270d4926f;p=ceph.git Merge pull request #64516 from Hezko/nvmeof-cli-size-convert3 mgr/dashboard: support human friendly size parameter split commands to separate api and cli functions Reviewed-by: Afreen Misbah Reviewed-by: Ernesto Puerta --- c1491dc780f22e661a6a370e044d01b270d4926f diff --cc src/pybind/mgr/dashboard/controllers/nvmeof.py index 7fe19fcd3a999,060c846474eaa..64d53c761b754 --- 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 fd3583e6c6e27,96b7f9ce2e352..429ee01734203 --- 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