]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: add missing commands for subsystem: change_key and del_key and missing... 64390/head
authorTomer Haskalovitch <tomer.haska@ibm.com>
Tue, 8 Jul 2025 17:45:09 +0000 (20:45 +0300)
committerTomer Haskalovitch <tomer.haska@ibm.com>
Thu, 10 Jul 2025 22:55:08 +0000 (01:55 +0300)
Signed-off-by: Tomer Haskalovitch <tomer.haska@ibm.com>
src/pybind/mgr/dashboard/controllers/nvmeof.py
src/pybind/mgr/dashboard/openapi.yaml

index 0de8520a8bf42c255f8270e6a3c42236fd13d9a0..c7d5d320d95eb671520af45e53b938ce9726680a 100644 (file)
@@ -216,6 +216,46 @@ else:
                 )
             )
 
+        @EndpointDoc(
+            "Change subsystem inband authentication key",
+            parameters={
+                "nqn": Param(str, "NVMeoF subsystem NQN"),
+                "dhchap_key": Param(str, "Subsystem DH-HMAC-CHAP key"),
+                "gw_group": Param(str, "NVMeoF gateway group", True, None),
+                "traddr": Param(str, "NVMeoF gateway address", True, None),
+            },
+        )
+        @empty_response
+        @NvmeofCLICommand("nvmeof subsystem change_key", model.RequestStatus)
+        @convert_to_model(model.RequestStatus)
+        @handle_nvmeof_error
+        def change_key(self, nqn: str, dhchap_key: str, gw_group: Optional[str] = None,
+                       traddr: Optional[str] = None):
+            return NVMeoFClient(gw_group=gw_group, traddr=traddr).stub.change_subsystem_key(
+                NVMeoFClient.pb2.change_subsystem_key_req(
+                    subsystem_nqn=nqn, dhchap_key=dhchap_key
+                )
+            )
+
+        @EndpointDoc(
+            "Delete subsystem inband authentication key",
+            parameters={
+                "nqn": Param(str, "NVMeoF subsystem NQN"),
+                "gw_group": Param(str, "NVMeoF gateway group", True, None),
+                "traddr": Param(str, "NVMeoF gateway address", True, None),
+            },
+        )
+        @empty_response
+        @NvmeofCLICommand("nvmeof subsystem del_key", model.RequestStatus)
+        @convert_to_model(model.RequestStatus)
+        @handle_nvmeof_error
+        def del_key(self, nqn: str, gw_group: Optional[str] = None, traddr: Optional[str] = None):
+            return NVMeoFClient(gw_group=gw_group, traddr=traddr).stub.change_subsystem_key(
+                NVMeoFClient.pb2.change_subsystem_key_req(
+                    subsystem_nqn=nqn, dhchap_key=None
+                )
+            )
+
     @APIRouter("/nvmeof/subsystem/{nqn}/listener", Scope.NVME_OF)
     @APIDoc("NVMe-oF Subsystem Listener Management API", "NVMe-oF Subsystem Listener")
     class NVMeoFListener(RESTController):
@@ -896,10 +936,13 @@ else:
         @NvmeofCLICommand("nvmeof host add", model.RequestStatus)
         @convert_to_model(model.RequestStatus)
         @handle_nvmeof_error
-        def create(self, nqn: str, host_nqn: str, gw_group: Optional[str] = None,
-                   traddr: Optional[str] = None):
+        def create(
+            self, nqn: str, host_nqn: str, dhchap_key: Optional[str] = None,
+            psk: Optional[str] = None, gw_group: Optional[str] = None, traddr: Optional[str] = None
+        ):
             return NVMeoFClient(gw_group=gw_group, traddr=traddr).stub.add_host(
-                NVMeoFClient.pb2.add_host_req(subsystem_nqn=nqn, host_nqn=host_nqn)
+                NVMeoFClient.pb2.add_host_req(subsystem_nqn=nqn, host_nqn=host_nqn,
+                                              dhchap_key=dhchap_key, psk=psk)
             )
 
         @EndpointDoc(
index 8c509673086defd30fb80977438b2e0218ee2822..bd3b4c3bf8dbb81c1b270f0665db9a890f0ef6f1 100755 (executable)
@@ -8784,12 +8784,16 @@ paths:
           application/json:
             schema:
               properties:
+                dhchap_key:
+                  type: string
                 gw_group:
                   description: NVMeoF gateway group
                   type: string
                 host_nqn:
                   description: NVMeoF host NQN. Use "*" to allow any host.
                   type: string
+                psk:
+                  type: string
                 traddr:
                   type: string
               required: