]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/dashboard: adding daemon_name as an arg to nvmeof get bundle API 66908/head
authorRedouane Kachach <rkachach@ibm.com>
Mon, 13 Apr 2026 13:00:41 +0000 (15:00 +0200)
committerRedouane Kachach <rkachach@ibm.com>
Thu, 14 May 2026 21:13:50 +0000 (23:13 +0200)
When cephadm-signed are in use, we know to know exacly which nvmeof daemon is
being used so we get the correct certificates for this daemon in
particular

Fixes: https://tracker.ceph.com/issues/74377
Signed-off-by: Redouane Kachach <rkachach@ibm.com>
src/pybind/mgr/cephadm/services/nvmeof.py
src/pybind/mgr/dashboard/services/nvmeof_client.py
src/pybind/mgr/dashboard/services/nvmeof_conf.py
src/pybind/mgr/dashboard/services/orchestrator.py

index 8ea15bec9d5695082f6628427b07d314d3e21843..72cb4cbea004340a2e7c3839563b4353a72814fc 100644 (file)
@@ -381,7 +381,7 @@ class NvmeofService(CephService):
 
         for dd in dds:
             # dd.hostname is the short host name used for HOST-scoped certmgr objects
-            if dd.name == daemon_name:
+            if dd.name() == daemon_name:
                 return dd.hostname
 
         return None
index d48980decf92a2492ec382c294a1e1fc330b11fc..c3ce16e8b691ed13173f78fa82202818c3d81d88 100644 (file)
@@ -54,13 +54,12 @@ else:
                     res = NvmeofGatewaysConfig.get_service_info(gw_group)
                 if res is None:
                     raise DashboardException("Gateway group does not exist")
-                service_name, self.gateway_addr = res
+                service_name, self.gateway_addr, self.daemon_name = res
             except TypeError as e:
                 raise DashboardException(
                     f'Unable to retrieve the gateway info: {e}'
                 )
 
-            self.daemon_name = ''
             # While creating listener need to direct request to the gateway
             # address where listener is supposed to be added.
             if server_address:
@@ -75,12 +74,12 @@ else:
                     None
                 )
                 if matched_gateway:
-                    self.daemon_name = matched_gateway.get('daemon_name')
                     self.gateway_addr = matched_gateway.get('service_url')
                     logger.debug("Gateway address set to: %s", self.gateway_addr)
             enable_auth = is_mtls_enabled(service_name)
             if enable_auth:
-                tls_bundle = NvmeofGatewaysConfig.get_nvmeof_tls_bundle(service_name)
+                tls_bundle = NvmeofGatewaysConfig.get_nvmeof_tls_bundle(service_name,
+                                                                        self.daemon_name)
                 if tls_bundle:
                     logger.info('Securely connecting to: %s', self.gateway_addr)
                     encoded_tls_bundle = encode_tls_bundle(tls_bundle)
@@ -101,7 +100,6 @@ else:
             if self.channel is not None:
                 self.stub = pb2_grpc.GatewayStub(self.channel)
 
-
     Model = Dict[str, Any]
     Collection = List[Model]
 
index c4105b6e897badfcdab7f79f1cfb6e7ddc0c577f..cc9227556e1b55521ad3d4f88804e28937ac9a1b 100644 (file)
@@ -120,11 +120,11 @@ class NvmeofGatewaysConfig(object):
             )
 
     @classmethod
-    def get_nvmeof_tls_bundle(cls, service_name: str):
+    def get_nvmeof_tls_bundle(cls, service_name: str, daemon_name: str):
         try:
             orch = OrchClient.instance()
             if orch.available():
-                return orch.cert_store.get_nvmeof_tls_bundle(service_name)
+                return orch.cert_store.get_nvmeof_tls_bundle(service_name, daemon_name)
             return None
         except OrchestratorError:
             # just return None if any orchestrator error is raised
@@ -144,7 +144,7 @@ def _get_name_url_for_group(gateways, group):
                 config = _get_running_daemon_svc_config(svc_config, running_daemons)
 
                 if config:
-                    return service_name, config['service_url']
+                    return service_name, config['service_url'], config['daemon_name']
         return None
 
     except OrchestratorError:
@@ -182,7 +182,8 @@ def _get_default_service(gateways):
                 component="nvmeof"
             )
         service_name = gateway_keys[0]
-        return service_name, gateways[service_name][0]['service_url']
+        return service_name, gateways[service_name][0]['service_url'], \
+            gateways[service_name][0]['daemon_name']
     return None
 
 
index ddaa96580cb69d8fc222212c9bd82fddbee4d66e..199171a37592804bdfd4ceb7f2d9b65cc5d91067 100644 (file)
@@ -208,8 +208,8 @@ class HardwareManager(ResourceManager):
 class CertStoreManager(ResourceManager):
 
     @wait_api_result
-    def get_nvmeof_tls_bundle(self, service_name: str) -> Dict[str, str]:
-        return self.api.get_nvmeof_tls_bundle(service_name)
+    def get_nvmeof_tls_bundle(self, service_name: str, daemon_name: str) -> Dict[str, str]:
+        return self.api.get_nvmeof_tls_bundle(service_name, daemon_name)
 
     @wait_api_result
     def get_cert(self, entity: str, service_name: Optional[str] = None,