diff --git a/glanceclient/common/https.py b/glanceclient/common/https.py index 30896e0..56ee0cd 100644 --- a/glanceclient/common/https.py +++ b/glanceclient/common/https.py @@ -162,15 +162,16 @@ class HTTPSAdapter(adapters.HTTPAdapter): return url def _create_glance_httpsconnectionpool(self, url): - kw = self.poolmanager.connection_kw + kw = self.poolmanager.connection_pool_kw # Parse the url to get the scheme, host, and port parsed = compat.urlparse(url) # If there is no port specified, we should use the standard HTTPS port port = parsed.port or 443 - pool = HTTPSConnectionPool(parsed.host, port, **kw) + host = parsed.netloc.rsplit(':', 1)[0] + pool = HTTPSConnectionPool(host, port, **kw) with self.poolmanager.pools.lock: - self.poolmanager.pools[(parsed.scheme, parsed.host, port)] = pool + self.poolmanager.pools[(parsed.scheme, host, port)] = pool return pool diff --git a/glanceclient/tests/unit/test_ssl.py b/glanceclient/tests/unit/test_ssl.py index b6ae083..44f69c8 100644 --- a/glanceclient/tests/unit/test_ssl.py +++ b/glanceclient/tests/unit/test_ssl.py @@ -451,3 +451,19 @@ class TestRequestsIntegration(testtools.TestCase): adapter = client.session.adapters.get("glance+https://") self.assertTrue(isinstance(adapter, https.HTTPSAdapter)) + + +class TestHTTPSAdapter(testtools.TestCase): + + def test__create_glance_httpsconnectionpool(self): + """Regression test + + Check that glanceclient's https pool is properly + configured without any weird exception. + """ + url = 'https://127.0.0.1:8000' + adapter = https.HTTPSAdapter() + try: + adapter._create_glance_httpsconnectionpool(url) + except Exception: + self.fail('Unexpected exception has been raised')