From 5359e7b4ecd53b95ebe17a7af5a7c063d4eb7cb4 Mon Sep 17 00:00:00 2001 From: Mitya Eremeev Date: Fri, 9 Feb 2024 13:04:48 +0300 Subject: [PATCH] If endpoint ends with 1 client removes it e.g. Watcher endpoint is "127.0.0.1:8081", Watcher client sends http request to "127.0.0.1:808" Closes-Bug: #2052779 Change-Id: I78631c8a13ff73a236f3bfadd7f4258b254b6113 --- watcherclient/common/httpclient.py | 3 ++- watcherclient/tests/unit/test_client.py | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/watcherclient/common/httpclient.py b/watcherclient/common/httpclient.py index ce838d6..43837b6 100644 --- a/watcherclient/common/httpclient.py +++ b/watcherclient/common/httpclient.py @@ -21,6 +21,7 @@ import http.client import io import logging import os +import re import socket import ssl import textwrap @@ -62,7 +63,7 @@ SUPPORTED_ENDPOINT_SCHEME = ('http', 'https') def _trim_endpoint_api_version(url): """Trim API version and trailing slash from endpoint.""" - return url.rstrip('/').rstrip(API_VERSION) + return re.sub(f'{API_VERSION}$', '', url.rstrip('/')) def _extract_error_json(body): diff --git a/watcherclient/tests/unit/test_client.py b/watcherclient/tests/unit/test_client.py index 4d12419..fd229b6 100644 --- a/watcherclient/tests/unit/test_client.py +++ b/watcherclient/tests/unit/test_client.py @@ -358,3 +358,8 @@ class ClientTest(utils.BaseTestCase): client = httpclient.HTTPClient(endpoint) conn_url = client._make_connection_url(url) self.assertEqual(expected_url, conn_url) + + def test_port_ends_with_one(self): + endpoint = "http://localhost:8081/" + http_client = httpclient.HTTPClient(endpoint) + self.assertEqual(endpoint, http_client._make_connection_url(""))