From 639831b0961c76a8bfbed1fe1f21323159fb4d91 Mon Sep 17 00:00:00 2001 From: Rui Chen Date: Wed, 24 Aug 2016 11:09:42 +0800 Subject: [PATCH] Fix NoneType error for cinderclient v1 Request-id log is recorded in SessionClient.request() method, but None is used as logger, that causes all the v1 commands to be broken. This patch fixes the issue and updates the related unit tests. Change-Id: I46b973f2baca8d7402a39e0d15dbd8da38f4e590 Closes-Bug: #1616070 --- cinderclient/client.py | 2 +- cinderclient/tests/unit/test_client.py | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/cinderclient/client.py b/cinderclient/client.py index 0f9531125..90abc674d 100644 --- a/cinderclient/client.py +++ b/cinderclient/client.py @@ -117,7 +117,7 @@ class SessionClient(adapter.LegacyJsonAdapter): # if service name is None then use service_type for logging service = self.service_name or self.service_type - _log_request_id(self.logger, resp, service) + _log_request_id(self._logger, resp, service) if raise_exc and resp.status_code >= 400: raise exceptions.from_response(resp, body) diff --git a/cinderclient/tests/unit/test_client.py b/cinderclient/tests/unit/test_client.py index d5a8ea05b..d9edf95b8 100644 --- a/cinderclient/tests/unit/test_client.py +++ b/cinderclient/tests/unit/test_client.py @@ -137,7 +137,9 @@ class ClientTest(utils.TestCase): session_client = cinderclient.client.SessionClient(session=mock.Mock()) response, body = session_client.request(mock.sentinel.url, 'POST', **kwargs) - self.assertEqual(1, mock_log.call_count) + self.assertIsNotNone(session_client._logger) + mock_log.assert_called_once_with(session_client._logger, mock_response, + mock.ANY) # In this case, from_response method will not get called # because response status_code is < 400 @@ -181,7 +183,9 @@ class ClientTest(utils.TestCase): # resp.status_code is 400 self.assertRaises(exceptions.BadRequest, session_client.request, mock.sentinel.url, 'POST', **kwargs) - self.assertEqual(1, mock_log.call_count) + self.assertIsNotNone(session_client._logger) + mock_log.assert_called_once_with(session_client._logger, mock_response, + mock.ANY) @mock.patch.object(cinderclient.client, '_log_request_id') @mock.patch.object(adapter.Adapter, 'request') @@ -206,7 +210,9 @@ class ClientTest(utils.TestCase): self.assertRaises(exceptions.OverLimit, session_client.request, mock.sentinel.url, 'GET') - self.assertEqual(1, mock_log.call_count) + self.assertIsNotNone(session_client._logger) + mock_log.assert_called_once_with(session_client._logger, mock_response, + mock.ANY) @mock.patch.object(exceptions, 'from_response') def test_keystone_request_raises_auth_failure_exception(