]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/cephadm: Monitoring: Alertmanager: Fix IPv6
authorSebastian Wagner <sewagner@redhat.com>
Mon, 18 Oct 2021 13:05:27 +0000 (15:05 +0200)
committerSebastian Wagner <sewagner@redhat.com>
Tue, 2 Nov 2021 09:01:24 +0000 (10:01 +0100)
Signed-off-by: Sebastian Wagner <sewagner@redhat.com>
(cherry picked from commit d65ccf3a0f83fc4a79edfe46c9468cf77f655f83)

src/pybind/mgr/cephadm/services/monitoring.py
src/pybind/mgr/cephadm/templates/services/alertmanager/alertmanager.yml.j2

index 46af5b4727c34da6092d65499a1835eea58d5899..8dbeafcf142e39b3207dcdaf61574c8dc68b2930 100644 (file)
@@ -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',
index 03c1479721b82b64327c8b409ed6ed7827638a24..6ce27cdf728bebc0f3a9c2f2fcc7e8caaa40bea3 100644 (file)
@@ -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 %}