x-openstack-request-id logged twice in logs
In the recent release of keystoneauth1 2.18.0 provision is made to log x-openstack-request-id for session client. Once this new library is synced in openstack projects, the x-openstack-request-id will be logged twice on the console if session client is used. For example, $ cinder --debug list DEBUG:keystoneauth:GET call to volumev2 for http://10.232.48.204:8776/v2/61da9e4b59cf4920acc5e78438f93223/volumes/detail used request id req-dcc22730-021e-468a-8b12-da7d58b573a7 DEBUG:cinderclient.client:GET call to volumev2 for http://10.232.48.204:8776/v2/61da9e4b59cf4920acc5e78438f93223/volumes/detail used request id req-dcc22730-021e-468a-8b12-da7d58b573a7 Above log will be logged twice on the console. Removed logging of x-openstack-request-id in case of SessionClient as it is already logged in keystoneauth1. x-openstack-request-id will only be logged once on console if HTTPClient is used. Depends-On: Id0693a9958d26162b7a2a40173ca28de2d3e4f62 Closes-Bug: #1657351 Change-Id: I0861212a38466d0e65cf3389c7d2757cff86ea0d
This commit is contained in:

committed by
Dinesh Bhor

parent
e04a4149f2
commit
6962056c67
@@ -115,10 +115,6 @@ class SessionClient(adapter.LegacyJsonAdapter):
|
|||||||
raise_exc=False,
|
raise_exc=False,
|
||||||
**kwargs)
|
**kwargs)
|
||||||
|
|
||||||
# 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)
|
|
||||||
|
|
||||||
if raise_exc and resp.status_code >= 400:
|
if raise_exc and resp.status_code >= 400:
|
||||||
raise exceptions.from_response(resp, body)
|
raise exceptions.from_response(resp, body)
|
||||||
|
|
||||||
|
@@ -101,11 +101,10 @@ class ClientTest(utils.TestCase):
|
|||||||
cs = cinderclient.client.SessionClient(self, api_version='3.0')
|
cs = cinderclient.client.SessionClient(self, api_version='3.0')
|
||||||
self.assertEqual('http://192.168.122.104:8776/', cs._get_base_url())
|
self.assertEqual('http://192.168.122.104:8776/', cs._get_base_url())
|
||||||
|
|
||||||
@mock.patch.object(cinderclient.client, '_log_request_id')
|
|
||||||
@mock.patch.object(adapter.Adapter, 'request')
|
@mock.patch.object(adapter.Adapter, 'request')
|
||||||
@mock.patch.object(exceptions, 'from_response')
|
@mock.patch.object(exceptions, 'from_response')
|
||||||
def test_sessionclient_request_method(
|
def test_sessionclient_request_method(
|
||||||
self, mock_from_resp, mock_request, mock_log):
|
self, mock_from_resp, mock_request):
|
||||||
kwargs = {
|
kwargs = {
|
||||||
"body": {
|
"body": {
|
||||||
"volume": {
|
"volume": {
|
||||||
@@ -139,18 +138,15 @@ class ClientTest(utils.TestCase):
|
|||||||
response, body = session_client.request(mock.sentinel.url,
|
response, body = session_client.request(mock.sentinel.url,
|
||||||
'POST', **kwargs)
|
'POST', **kwargs)
|
||||||
self.assertIsNotNone(session_client._logger)
|
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
|
# In this case, from_response method will not get called
|
||||||
# because response status_code is < 400
|
# because response status_code is < 400
|
||||||
self.assertEqual(202, response.status_code)
|
self.assertEqual(202, response.status_code)
|
||||||
self.assertFalse(mock_from_resp.called)
|
self.assertFalse(mock_from_resp.called)
|
||||||
|
|
||||||
@mock.patch.object(cinderclient.client, '_log_request_id')
|
|
||||||
@mock.patch.object(adapter.Adapter, 'request')
|
@mock.patch.object(adapter.Adapter, 'request')
|
||||||
def test_sessionclient_request_method_raises_badrequest(
|
def test_sessionclient_request_method_raises_badrequest(
|
||||||
self, mock_request, mock_log):
|
self, mock_request):
|
||||||
kwargs = {
|
kwargs = {
|
||||||
"body": {
|
"body": {
|
||||||
"volume": {
|
"volume": {
|
||||||
@@ -185,13 +181,10 @@ class ClientTest(utils.TestCase):
|
|||||||
self.assertRaises(exceptions.BadRequest, session_client.request,
|
self.assertRaises(exceptions.BadRequest, session_client.request,
|
||||||
mock.sentinel.url, 'POST', **kwargs)
|
mock.sentinel.url, 'POST', **kwargs)
|
||||||
self.assertIsNotNone(session_client._logger)
|
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')
|
@mock.patch.object(adapter.Adapter, 'request')
|
||||||
def test_sessionclient_request_method_raises_overlimit(
|
def test_sessionclient_request_method_raises_overlimit(
|
||||||
self, mock_request, mock_log):
|
self, mock_request):
|
||||||
resp = {
|
resp = {
|
||||||
"overLimitFault": {
|
"overLimitFault": {
|
||||||
"message": "This request was rate-limited.",
|
"message": "This request was rate-limited.",
|
||||||
@@ -212,8 +205,6 @@ class ClientTest(utils.TestCase):
|
|||||||
self.assertRaises(exceptions.OverLimit, session_client.request,
|
self.assertRaises(exceptions.OverLimit, session_client.request,
|
||||||
mock.sentinel.url, 'GET')
|
mock.sentinel.url, 'GET')
|
||||||
self.assertIsNotNone(session_client._logger)
|
self.assertIsNotNone(session_client._logger)
|
||||||
mock_log.assert_called_once_with(session_client._logger, mock_response,
|
|
||||||
mock.ANY)
|
|
||||||
|
|
||||||
@mock.patch.object(exceptions, 'from_response')
|
@mock.patch.object(exceptions, 'from_response')
|
||||||
def test_keystone_request_raises_auth_failure_exception(
|
def test_keystone_request_raises_auth_failure_exception(
|
||||||
|
Reference in New Issue
Block a user