From d65ccf3a0f83fc4a79edfe46c9468cf77f655f83 Mon Sep 17 00:00:00 2001 From: Sebastian Wagner Date: Mon, 18 Oct 2021 15:05:27 +0200 Subject: [PATCH] mgr/cephadm: Monitoring: Alertmanager: Fix IPv6 Signed-off-by: Sebastian Wagner --- src/pybind/mgr/cephadm/services/monitoring.py | 14 +++++++------- .../services/alertmanager/alertmanager.yml.j2 | 2 +- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/pybind/mgr/cephadm/services/monitoring.py b/src/pybind/mgr/cephadm/services/monitoring.py index 46af5b4727c..8dbeafcf142 100644 --- a/src/pybind/mgr/cephadm/services/monitoring.py +++ b/src/pybind/mgr/cephadm/services/monitoring.py @@ -132,8 +132,9 @@ class AlertmanagerService(CephadmService): url = mgr_map.get('services', {}).get('dashboard', None) if url: dashboard_urls.append(url) - proto = url.split('/')[0] - port = url.split('/')[2].split(':')[1] + p_result = urlparse(url) + proto = p_result.scheme + port = p_result.port # scan all mgrs to generate deps and to get standbys too. # assume that they are all on the same port as the active mgr. for dd in self.mgr.cache.get_daemons_by_service('mgr'): @@ -146,8 +147,7 @@ class AlertmanagerService(CephadmService): continue assert dd.hostname is not None addr = self.mgr.inventory.get_addr(dd.hostname) - dashboard_urls.append('%s//%s:%s/' % (proto, addr.split(':')[0], - port)) + dashboard_urls.append(build_url(scheme=proto, host=addr, port=port)) context = { 'dashboard_urls': dashboard_urls, @@ -156,12 +156,12 @@ class AlertmanagerService(CephadmService): yml = self.mgr.template.render('services/alertmanager/alertmanager.yml.j2', context) peers = [] - port = '9094' + port = 9094 for dd in self.mgr.cache.get_daemons_by_service('alertmanager'): assert dd.hostname is not None deps.append(dd.name()) addr = self.mgr.inventory.get_addr(dd.hostname) - peers.append(addr.split(':')[0] + ':' + port) + peers.append(build_url(host=addr, port=port).lstrip('/')) return { "files": { "alertmanager.yml": yml @@ -181,7 +181,7 @@ class AlertmanagerService(CephadmService): assert dd.hostname is not None addr = dd.ip if dd.ip else self._inventory_get_addr(dd.hostname) port = dd.ports[0] if dd.ports else self.DEFAULT_SERVICE_PORT - service_url = 'http://{}:{}'.format(addr, port) + service_url = build_url(scheme='http', host=addr, port=port) self._set_service_url_on_dashboard( 'AlertManager', 'dashboard get-alertmanager-api-host', diff --git a/src/pybind/mgr/cephadm/templates/services/alertmanager/alertmanager.yml.j2 b/src/pybind/mgr/cephadm/templates/services/alertmanager/alertmanager.yml.j2 index 03c1479721b..6ce27cdf728 100644 --- a/src/pybind/mgr/cephadm/templates/services/alertmanager/alertmanager.yml.j2 +++ b/src/pybind/mgr/cephadm/templates/services/alertmanager/alertmanager.yml.j2 @@ -22,5 +22,5 @@ receivers: - name: 'ceph-dashboard' webhook_configs: {% for url in dashboard_urls %} - - url: '{{ url }}api/prometheus_receiver' + - url: '{{ url }}/api/prometheus_receiver' {% endfor %} -- 2.39.5