Skip to content

Commit 06fccea

Browse files
committed
mgr/cephadm: fixing deps handling for mgmt-gateway
Fixes: https://tracker.ceph.com/issues/68377 this change uses the port also in addition to the daemon name when building mgmt-gateway dependencies Signed-off-by: Redouane Kachach <[email protected]>
1 parent 0392505 commit 06fccea

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

src/pybind/mgr/cephadm/module.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3105,9 +3105,7 @@ def get_daemon_names(daemons: List[str]) -> List[str]:
31053105
deps.append(build_url(host=dd.hostname, port=port).lstrip('/'))
31063106
deps = sorted(deps)
31073107
elif daemon_type == 'mgmt-gateway':
3108-
# url_prefix for monitoring daemons depends on the presence of mgmt-gateway
3109-
# while dashboard urls depend on the mgr daemons
3110-
deps += get_daemon_names(['grafana', 'prometheus', 'alertmanager', 'oauth2-proxy'])
3108+
deps = MgmtGatewayService.get_dependencies(self)
31113109
else:
31123110
# this daemon type doesn't need deps mgmt
31133111
pass

src/pybind/mgr/cephadm/services/mgmt_gateway.py

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
from ceph.deployment.service_spec import MgmtGatewaySpec, GrafanaSpec
66
from cephadm.services.cephadmservice import CephadmService, CephadmDaemonDeploySpec, get_dashboard_endpoints
77

8+
if TYPE_CHECKING:
9+
from ..module import CephadmOrchestrator
810

911
logger = logging.getLogger(__name__)
1012

@@ -81,14 +83,20 @@ def get_service_discovery_endpoints(self) -> List[str]:
8183
sd_endpoints.append(f"{addr}:{self.mgr.service_discovery_port}")
8284
return sd_endpoints
8385

84-
def get_mgmt_gateway_deps(self) -> List[str]:
86+
@staticmethod
87+
def get_dependencies(mgr: "CephadmOrchestrator") -> List[str]:
8588
# url_prefix for the following services depends on the presence of mgmt-gateway
86-
deps: List[str] = []
87-
deps += [d.name() for d in self.mgr.cache.get_daemons_by_service('prometheus')]
88-
deps += [d.name() for d in self.mgr.cache.get_daemons_by_service('alertmanager')]
89-
deps += [d.name() for d in self.mgr.cache.get_daemons_by_service('grafana')]
90-
deps += [d.name() for d in self.mgr.cache.get_daemons_by_service('oauth2-proxy')]
91-
89+
deps = [
90+
f'{d.name()}:{d.ports[0]}' if d.ports else d.name()
91+
for service in ['prometheus', 'alertmanager', 'grafana', 'oauth2-proxy']
92+
for d in mgr.cache.get_daemons_by_service(service)
93+
]
94+
# dashboard and service discovery urls depend on the mgr daemons
95+
deps += [
96+
f'{d.name()}'
97+
for service in ['mgr']
98+
for d in mgr.cache.get_daemons_by_service(service)
99+
]
92100
return deps
93101

94102
def generate_config(self, daemon_spec: CephadmDaemonDeploySpec) -> Tuple[Dict[str, Any], List[str]]:
@@ -146,7 +154,7 @@ def generate_config(self, daemon_spec: CephadmDaemonDeploySpec) -> Tuple[Dict[st
146154
daemon_config["files"]["nginx.crt"] = cert
147155
daemon_config["files"]["nginx.key"] = key
148156

149-
return daemon_config, sorted(self.get_mgmt_gateway_deps())
157+
return daemon_config, sorted(MgmtGatewayService.get_dependencies(self.mgr))
150158

151159
def pre_remove(self, daemon: DaemonDescription) -> None:
152160
"""

0 commit comments

Comments
 (0)