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
This commit is contained in:
Rui Chen
2016-08-24 11:09:42 +08:00
parent 37ac58cc62
commit 639831b096
2 changed files with 10 additions and 4 deletions

View File

@@ -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)

View File

@@ -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(