From 7477d1120c1c1f2deb31903f9f086a8a34b5af88 Mon Sep 17 00:00:00 2001 From: Gordon Chung Date: Tue, 29 Oct 2013 17:05:53 -0400 Subject: add namespace to all ids add namespace to all ids, including those not generated by pycadf Change-Id: I9ba68a65524708c4f0749540ad25811f8cb3355f --- pycadf/audit/api.py | 6 +++--- pycadf/identifier.py | 6 +++++- pycadf/tests/audit/test_api.py | 9 +++++---- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/pycadf/audit/api.py b/pycadf/audit/api.py index a77fabb..88ccef8 100644 --- a/pycadf/audit/api.py +++ b/pycadf/audit/api.py @@ -166,7 +166,7 @@ class OpenStackAuditApi(object): endp['type'], taxonomy.UNKNOWN), name=endp['name'], - id=endp['endpoints'][0]['id'], + id=identifier.norm_ns(endp['endpoints'][0]['id']), admin_endp=endpoint.Endpoint( name='admin', url=endp['endpoints'][0]['adminURL']), @@ -210,13 +210,13 @@ class OpenStackAuditApi(object): initiator = ClientResource( typeURI=taxonomy.ACCOUNT_USER, - id=str(req.environ['HTTP_X_USER_ID']), + id=identifier.norm_ns(str(req.environ['HTTP_X_USER_ID'])), name=req.environ['HTTP_X_USER_NAME'], host=initiator_host, credential=KeystoneCredential( token=req.environ['HTTP_X_AUTH_TOKEN'], identity_status=req.environ['HTTP_X_IDENTITY_STATUS']), - project_id=req.environ['HTTP_X_PROJECT_ID']) + project_id=identifier.norm_ns(req.environ['HTTP_X_PROJECT_ID'])) target = resource.Resource(typeURI=service_info.type, id=service_info.id, name=service_info.name) diff --git a/pycadf/identifier.py b/pycadf/identifier.py index 22d125b..1c59234 100644 --- a/pycadf/identifier.py +++ b/pycadf/identifier.py @@ -32,8 +32,12 @@ CONF.register_opts(opts, group='audit') # a full openstack namespace/domain value via some declaration (e.g. # "openstack:" == "http:\\www.openstack.org\")... def generate_uuid(): + return norm_ns(str(uuid.uuid4())) + + +def norm_ns(str_id): prefix = CONF.audit.namespace + ':' if CONF.audit.namespace else '' - return prefix + str(uuid.uuid4()) + return prefix + str_id # TODO(mrutkows): validate any cadf:Identifier (type) record against diff --git a/pycadf/tests/audit/test_api.py b/pycadf/tests/audit/test_api.py index faefc72..12be8fd 100644 --- a/pycadf/tests/audit/test_api.py +++ b/pycadf/tests/audit/test_api.py @@ -69,15 +69,16 @@ class TestAuditApi(base.TestCase): self.assertEqual(payload['outcome'], 'pending') self.assertEqual(payload['eventType'], 'activity') self.assertEqual(payload['target']['name'], 'nova') - self.assertEqual(payload['target']['id'], 'resource_id') + self.assertEqual(payload['target']['id'], 'openstack:resource_id') self.assertEqual(payload['target']['typeURI'], 'service/compute') self.assertEqual(len(payload['target']['addresses']), 3) self.assertEqual(payload['target']['addresses'][0]['name'], 'admin') self.assertEqual(payload['target']['addresses'][0]['url'], 'http://host:8774/v2/admin') - self.assertEqual(payload['initiator']['id'], 'user_id') + self.assertEqual(payload['initiator']['id'], 'openstack:user_id') self.assertEqual(payload['initiator']['name'], 'user_name') - self.assertEqual(payload['initiator']['project_id'], 'tenant_id') + self.assertEqual(payload['initiator']['project_id'], + 'openstack:tenant_id') self.assertEqual(payload['initiator']['host']['address'], '192.168.0.1') self.assertEqual(payload['initiator']['typeURI'], @@ -126,7 +127,7 @@ class TestAuditApi(base.TestCase): self.assertEqual(payload['action'], 'read/list') self.assertEqual(payload['outcome'], 'pending') self.assertEqual(payload['target']['name'], 'nova') - self.assertEqual(payload['target']['id'], 'resource_id') + self.assertEqual(payload['target']['id'], 'openstack:resource_id') self.assertEqual(payload['target']['typeURI'], 'service/compute') def test_put(self): -- cgit v1.2.1