diff --git a/glanceclient/common/http.py b/glanceclient/common/http.py index 8538a3c..b8328f7 100644 --- a/glanceclient/common/http.py +++ b/glanceclient/common/http.py @@ -251,7 +251,7 @@ class HTTPClient(_BaseHTTPClient): headers=headers, **kwargs) except requests.exceptions.Timeout as e: - message = ("Error communicating with %(endpoint)s: %(e)s" % + message = ("Error communicating with %(url)s: %(e)s" % dict(url=conn_url, e=e)) raise exc.InvalidEndpoint(message=message) except (requests.exceptions.ConnectionError, ProtocolError) as e: @@ -321,7 +321,9 @@ class SessionClient(adapter.Adapter, _BaseHTTPClient): data=data, **kwargs) except ksc_exc.RequestTimeout as e: - message = ("Error communicating with %(endpoint)s %(e)s" % + conn_url = self.get_endpoint(auth=kwargs.get('auth')) + conn_url = "%s/%s" % (conn_url.rstrip('/'), url.lstrip('/')) + message = ("Error communicating with %(url)s %(e)s" % dict(url=conn_url, e=e)) raise exc.InvalidEndpoint(message=message) except ksc_exc.ConnectionRefused as e: diff --git a/glanceclient/tests/unit/test_http.py b/glanceclient/tests/unit/test_http.py index e610716..f83a514 100644 --- a/glanceclient/tests/unit/test_http.py +++ b/glanceclient/tests/unit/test_http.py @@ -139,6 +139,20 @@ class TestClient(testtools.TestCase): for k, v in six.iteritems(identity_headers): self.assertEqual(v, headers[k]) + def test_connection_timeout(self): + """ + Should receive an InvalidEndpoint if connection timeout. + """ + def cb(request, context): + raise requests.exceptions.Timeout + + path = '/v1/images' + self.mock.get(self.endpoint + path, text=cb) + comm_err = self.assertRaises(glanceclient.exc.InvalidEndpoint, + self.client.get, + '/v1/images') + self.assertIn(self.endpoint, comm_err.message) + def test_connection_refused(self): """ Should receive a CommunicationError if connection refused.