diff options
| author | Zuul <zuul@review.opendev.org> | 2020-08-24 13:29:27 +0000 |
|---|---|---|
| committer | Gerrit Code Review <review@openstack.org> | 2020-08-24 13:29:27 +0000 |
| commit | cfede0c5bc75ea61f42c1a17809586191ebb4edf (patch) | |
| tree | 455b4786c6e23534f3d352d5dfedafdbba180bd1 /ironic_python_agent | |
| parent | a8b865de9e37b80cccce0884359a796f10662f39 (diff) | |
| parent | f670f704f3e4bf9b05a97d1f39ab99febfe29cf7 (diff) | |
| download | ironic-python-agent-cfede0c5bc75ea61f42c1a17809586191ebb4edf.tar.gz | |
Merge "Clarify connection error on heartbeats"
Diffstat (limited to 'ironic_python_agent')
| -rw-r--r-- | ironic_python_agent/errors.py | 10 | ||||
| -rw-r--r-- | ironic_python_agent/ironic_api_client.py | 2 | ||||
| -rw-r--r-- | ironic_python_agent/tests/unit/test_ironic_api_client.py | 10 |
3 files changed, 22 insertions, 0 deletions
diff --git a/ironic_python_agent/errors.py b/ironic_python_agent/errors.py index 99bbe2b8..bf0253dd 100644 --- a/ironic_python_agent/errors.py +++ b/ironic_python_agent/errors.py @@ -348,3 +348,13 @@ class ClockSyncError(RESTError): """Error raised when attempting to sync the system clock.""" message = 'Error syncing system clock' + + +class HeartbeatConnectionError(IronicAPIError): + """Transitory connection failure occured attempting to contact the API.""" + + message = ("Error attempting to heartbeat - Possible transitory network " + "failure or blocking port may be present.") + + def __init__(self, details): + super(HeartbeatConnectionError, self).__init__(details) diff --git a/ironic_python_agent/ironic_api_client.py b/ironic_python_agent/ironic_api_client.py index 747b133d..4738f22d 100644 --- a/ironic_python_agent/ironic_api_client.py +++ b/ironic_python_agent/ironic_api_client.py @@ -125,6 +125,8 @@ class APIClient(object): try: response = self._request('POST', path, data=data, headers=headers) + except requests.exceptions.ConnectionError as e: + raise errors.HeartbeatConnectionError(str(e)) except Exception as e: raise errors.HeartbeatError(str(e)) diff --git a/ironic_python_agent/tests/unit/test_ironic_api_client.py b/ironic_python_agent/tests/unit/test_ironic_api_client.py index 562f06be..bd710e77 100644 --- a/ironic_python_agent/tests/unit/test_ironic_api_client.py +++ b/ironic_python_agent/tests/unit/test_ironic_api_client.py @@ -234,6 +234,16 @@ class TestBaseIronicPythonAgent(base.IronicAgentTest): uuid='deadbeef-dabb-ad00-b105-f00d00bab10c', advertise_address=('192.0.2.1', '9999')) + def test_heartbeat_requests_connection_error(self): + self.api_client.session.request = mock.Mock() + self.api_client.session.request.side_effect = \ + requests.exceptions.ConnectionError + self.assertRaisesRegex(errors.HeartbeatConnectionError, + 'transitory network failure or blocking port', + self.api_client.heartbeat, + uuid='meow', + advertise_address=('192.0.2.1', '9999')) + @mock.patch('eventlet.greenthread.sleep', autospec=True) @mock.patch('ironic_python_agent.ironic_api_client.APIClient._do_lookup', autospec=True) |
