summaryrefslogtreecommitdiff
path: root/keystonemiddleware
diff options
context:
space:
mode:
authorArtem Vasilyev <artem.v.vasilyev@gmail.com>2018-11-19 11:49:24 +0300
committerArtem Vasilyev <artem.v.vasilyev@gmail.com>2018-11-19 11:49:24 +0300
commitf2f5820c5f375064252bde77de1c9d468c4edc62 (patch)
treeee4b32810f9f1a9ede0ec589dde5c0985c8f8228 /keystonemiddleware
parent899aa07a648d82d6e7ea6b7e22638b5d876507ea (diff)
downloadkeystonemiddleware-f2f5820c5f375064252bde77de1c9d468c4edc62.tar.gz
Added request_id and global_request_id to CADF notifications
Change-Id: I8d571d3414071c68b4fa565dec46cc2d2941331c Closes-Bug: #1803940
Diffstat (limited to 'keystonemiddleware')
-rw-r--r--keystonemiddleware/audit/_api.py12
-rw-r--r--keystonemiddleware/tests/unit/audit/test_audit_api.py22
2 files changed, 32 insertions, 2 deletions
diff --git a/keystonemiddleware/audit/_api.py b/keystonemiddleware/audit/_api.py
index b84e140..c89abaa 100644
--- a/keystonemiddleware/audit/_api.py
+++ b/keystonemiddleware/audit/_api.py
@@ -57,10 +57,15 @@ class PycadfAuditApiConfigError(Exception):
class ClientResource(resource.Resource):
- def __init__(self, project_id=None, **kwargs):
+ def __init__(self, project_id=None, request_id=None,
+ global_request_id=None, **kwargs):
super(ClientResource, self).__init__(**kwargs)
if project_id is not None:
self.project_id = project_id
+ if request_id is not None:
+ self.request_id = request_id
+ if global_request_id is not None:
+ self.global_request_id = global_request_id
class KeystoneCredential(credential.Credential):
@@ -297,7 +302,10 @@ class OpenStackAuditApi(object):
token=req.environ.get('HTTP_X_AUTH_TOKEN', ''),
identity_status=req.environ.get('HTTP_X_IDENTITY_STATUS',
taxonomy.UNKNOWN)),
- project_id=req.environ.get('HTTP_X_PROJECT_ID', taxonomy.UNKNOWN))
+ project_id=req.environ.get('HTTP_X_PROJECT_ID', taxonomy.UNKNOWN),
+ request_id=req.environ.get('openstack.request_id'),
+ global_request_id=req.environ.get('openstack.global_request_id'))
+
target = self.get_target_resource(req)
event = factory.EventFactory().new_event(
diff --git a/keystonemiddleware/tests/unit/audit/test_audit_api.py b/keystonemiddleware/tests/unit/audit/test_audit_api.py
index f63f3d5..3843d43 100644
--- a/keystonemiddleware/tests/unit/audit/test_audit_api.py
+++ b/keystonemiddleware/tests/unit/audit/test_audit_api.py
@@ -395,3 +395,25 @@ class AuditApiLogicTest(base.BaseAuditMiddlewareTest):
self.assertNotIn('reporterchain', payload)
self.assertEqual(payload['observer']['id'], 'target')
self.assertEqual(path, payload['requestPath'])
+
+ def test_request_and_global_request_id(self):
+ path = '/v1/' + str(uuid.uuid4())
+ url = 'https://23.253.72.207' + path
+
+ request_id = 'req-%s' % uuid.uuid4()
+ global_request_id = 'req-%s' % uuid.uuid4()
+
+ env_headers = self.get_environ_header('GET')
+ env_headers['openstack.request_id'] = request_id
+ env_headers['openstack.global_request_id'] = global_request_id
+
+ payload = self.get_payload('GET', url, environ=env_headers)
+
+ self.assertEqual(payload['initiator']['request_id'], request_id)
+ self.assertEqual(payload['initiator']['global_request_id'],
+ global_request_id)
+
+ payload = self.get_payload('GET', url)
+
+ self.assertNotIn('request_id', payload['initiator'])
+ self.assertNotIn('global_request_id', payload['initiator'])