]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Merge pull request #64516 from Hezko/nvmeof-cli-size-convert3
authorafreen23 <afreen23.git@gmail.com>
Thu, 17 Jul 2025 11:13:08 +0000 (16:43 +0530)
committerGitHub <noreply@github.com>
Thu, 17 Jul 2025 11:13:08 +0000 (16:43 +0530)
mgr/dashboard: support human friendly size parameter split commands to separate api and cli functions

Reviewed-by: Afreen Misbah <afreen@ibm.com>
Reviewed-by: Ernesto Puerta <epuertat@redhat.com>
1  2 
src/pybind/mgr/dashboard/controllers/nvmeof.py
src/pybind/mgr/dashboard/services/nvmeof_cli.py
src/pybind/mgr/dashboard/tests/test_nvmeof_cli.py

index 7fe19fcd3a99982d90fa3a62c8bc2d344ae3f525,060c846474eaa094964988af9ea0980a310a3a6f..64d53c761b754829ccd631f11731d98307105e9d
@@@ -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={
                  )
              )
  
+         @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={
index fd3583e6c6e274ca92767e054c86edd7b1e31ca5,96b7f9ce2e352d4b72eeb4562b6f6c7812d8b556..429ee017342031169c42d35ebac0b3494dd561cf
@@@ -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