]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
mgr/{prometheus,restful}: Fix url generation again 42886/head
authorSebastian Wagner <sewagner@redhat.com>
Mon, 23 Aug 2021 08:33:37 +0000 (10:33 +0200)
committerSebastian Wagner <sewagner@redhat.com>
Mon, 23 Aug 2021 09:00:24 +0000 (11:00 +0200)
Fixes

```
======================================================================
ERROR: test_standby (tasks.mgr.test_prometheus.TestPrometheus)
----------------------------------------------------------------------
urllib3.exceptions.LocationParseError: Failed to parse: http://172.21.15.71:7789metrics

```

Signed-off-by: Sebastian Wagner <sewagner@redhat.com>
src/pybind/mgr/mgr_util.py
src/pybind/mgr/prometheus/module.py
src/pybind/mgr/restful/module.py

index 982d69a79848180af600009e6f1e50a878d984fc..d865d31092aa9cc410b7231763c4e63ffbcd52d3 100644 (file)
@@ -435,7 +435,7 @@ def get_default_addr():
         return result
 
 
-def build_url(host: str, scheme: Optional[str] = None, port: Optional[int] = None) -> str:
+def build_url(host: str, scheme: Optional[str] = None, port: Optional[int] = None, path: str = '') -> str:
     """
     Build a valid URL. IPv6 addresses specified in host will be enclosed in brackets
     automatically.
@@ -449,6 +449,10 @@ def build_url(host: str, scheme: Optional[str] = None, port: Optional[int] = Non
     >>> build_url('fce:9af7:a667:7286:4917:b8d3:34df:8373', port=80, scheme='http')
     'http://[fce:9af7:a667:7286:4917:b8d3:34df:8373]:80'
 
+    >>> build_url('example.com', 'https', 443, path='/metrics')
+    'https://example.com:443/metrics'
+
+
     :param scheme: The scheme, e.g. http, https or ftp.
     :type scheme: str
     :param host: Consisting of either a registered name (including but not limited to
@@ -463,7 +467,7 @@ def build_url(host: str, scheme: Optional[str] = None, port: Optional[int] = Non
     pr = urllib.parse.ParseResult(
         scheme=scheme if scheme else '',
         netloc=netloc,
-        path='',
+        path=path,
         params='',
         query='',
         fragment='')
index 8b6fe9d31e0348e8862e10030ebae73daeb5d251..796eddfc8ace82afd4087e2717064aa9021d26da 100644 (file)
@@ -1382,7 +1382,7 @@ class Module(MgrModule):
         # about to start serving
         if server_addr in ['::', '0.0.0.0']:
             server_addr = self.get_mgr_ip()
-        self.set_uri(build_url(scheme='http', host=server_addr, port=server_port))
+        self.set_uri(build_url(scheme='http', host=server_addr, port=server_port, path='/'))
 
         cherrypy.config.update({
             'server.socket_host': server_addr,
index e671cb97ab9eb325ba74105273555f205277451f..b76464e76fa8e3d6ce93f306573dc6b95b163aff 100644 (file)
@@ -313,7 +313,7 @@ class Module(MgrModule):
         # Publish the URI that others may use to access the service we're
         # about to start serving
         addr = self.get_mgr_ip() if server_addr == "::" else server_addr
-        self.set_uri(build_url(scheme='https', host=addr, port=server_port))
+        self.set_uri(build_url(scheme='https', host=addr, port=server_port, path='/'))
 
         # Create the HTTPS werkzeug server serving pecan app
         self.server = make_server(