From f09dce79af51c15310cbd302fae6a2433b13910e Mon Sep 17 00:00:00 2001 From: Lucas Alvares Gomes Date: Fri, 11 Mar 2016 16:54:52 +0000 Subject: [PATCH] Fix programmatic error in heartbeat() This patch is fixing a programmatic error in the heartbeat() method of the APIClient() class. When 409 (Conflict) was returned from the the Ironic API the code wasn't parsing the content of the response correctly. Change-Id: I01fbb8d866b2f94fe128d0bc40b69d05b5add1a3 Closes-Bug: #1556199 --- ironic_python_agent/ironic_api_client.py | 2 +- ironic_python_agent/tests/unit/test_ironic_api_client.py | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/ironic_python_agent/ironic_api_client.py b/ironic_python_agent/ironic_api_client.py index 7b9a8ebc8..8f494f4fa 100644 --- a/ironic_python_agent/ironic_api_client.py +++ b/ironic_python_agent/ironic_api_client.py @@ -73,7 +73,7 @@ class APIClient(object): raise errors.HeartbeatError(str(e)) if response.status_code == requests.codes.CONFLICT: - data = response.json + data = json.loads(response.content) raise errors.HeartbeatConflictError(data.get('faultstring')) elif response.status_code != requests.codes.ACCEPTED: msg = 'Invalid status code: {0}'.format(response.status_code) 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 bad8fe456..30ce8158f 100644 --- a/ironic_python_agent/tests/unit/test_ironic_api_client.py +++ b/ironic_python_agent/tests/unit/test_ironic_api_client.py @@ -90,8 +90,7 @@ class TestBaseIronicPythonAgent(test_base.BaseTestCase): advertise_address=('192.0.2.1', '9999')) def test_heartbeat_409_status_code(self): - response = mock.Mock() - response.status_code = 409 + response = FakeResponse(status_code=409) self.api_client.session.request = mock.Mock() self.api_client.session.request.return_value = response