From 44b52dbb73657febaf1aa560d4fb97b370c6626f Mon Sep 17 00:00:00 2001 From: Tomer Haskalovitch Date: Tue, 8 Jul 2025 20:45:09 +0300 Subject: [PATCH] mgr/dashboard: add missing commands for subsystem: change_key and del_key and missing params for host add Signed-off-by: Tomer Haskalovitch (cherry picked from commit eaab5a0bee0fb53569efc3b3893725705eeba805) --- .../mgr/dashboard/controllers/nvmeof.py | 49 +++++++++++++++++-- src/pybind/mgr/dashboard/openapi.yaml | 4 ++ 2 files changed, 50 insertions(+), 3 deletions(-) diff --git a/src/pybind/mgr/dashboard/controllers/nvmeof.py b/src/pybind/mgr/dashboard/controllers/nvmeof.py index 0de8520a8bf42..c7d5d320d95eb 100644 --- a/src/pybind/mgr/dashboard/controllers/nvmeof.py +++ b/src/pybind/mgr/dashboard/controllers/nvmeof.py @@ -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( diff --git a/src/pybind/mgr/dashboard/openapi.yaml b/src/pybind/mgr/dashboard/openapi.yaml index 05107756852d2..cad536340aea4 100755 --- a/src/pybind/mgr/dashboard/openapi.yaml +++ b/src/pybind/mgr/dashboard/openapi.yaml @@ -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: -- 2.39.5