summaryrefslogtreecommitdiff
path: root/pycadf
diff options
context:
space:
mode:
authorGordon Chung <chungg@ca.ibm.com>2014-02-13 12:51:22 -0500
committerGordon Chung <chungg@ca.ibm.com>2014-06-05 18:52:15 -0400
commitc575e6d1df34c31d1c3733809e88af2f0b66a83b (patch)
tree424397c70b07ebcc7e3af5379d83bf78cf6c5ccd /pycadf
parent6ac553173de8e01f0b4a8bb73c212c63fd8679a4 (diff)
downloadpycadf-c575e6d1df34c31d1c3733809e88af2f0b66a83b.tar.gz
add audit_maps for more OpenStack components
add audit_maps for: - cinder - glance - neutron Change-Id: If324c1296f852e57f3a376ccfc485ed1b3df75e3 Blueprint: audit-all-apis
Diffstat (limited to 'pycadf')
-rw-r--r--pycadf/audit/api.py9
-rw-r--r--pycadf/tests/audit/test_api.py4
-rw-r--r--pycadf/tests/middleware/test_audit.py34
3 files changed, 26 insertions, 21 deletions
diff --git a/pycadf/audit/api.py b/pycadf/audit/api.py
index cf23edb..d8c9402 100644
--- a/pycadf/audit/api.py
+++ b/pycadf/audit/api.py
@@ -124,6 +124,10 @@ class OpenStackAuditApi(object):
map_file = cfg.CONF.find_file(CONF.audit.api_audit_map)
self._MAP = _configure_audit_map(map_file)
+ @staticmethod
+ def _clean_path(value):
+ return value[:-5] if value.endswith('.json') else value
+
def _get_action(self, req):
"""Take a given Request, parse url path to calculate action type.
@@ -140,7 +144,7 @@ class OpenStackAuditApi(object):
"""
path = req.path[:-1] if req.path.endswith('/') else req.path
- url_ending = path[path.rfind('/') + 1:]
+ url_ending = self._clean_path(path[path.rfind('/') + 1:])
method = req.method
if url_ending + '/' + method.lower() in self._MAP.custom_actions:
@@ -167,7 +171,7 @@ class OpenStackAuditApi(object):
action = taxonomy.ACTION_LIST
else:
action = taxonomy.ACTION_READ
- elif method == 'PUT':
+ elif method == 'PUT' or method == 'PATCH':
action = taxonomy.ACTION_UPDATE
elif method == 'DELETE':
action = taxonomy.ACTION_DELETE
@@ -201,6 +205,7 @@ class OpenStackAuditApi(object):
type_uri = ''
prev_key = None
for key in re.split('/', req.path):
+ key = self._clean_path(key)
if key in self._MAP.path_kw:
type_uri += '/' + key
elif prev_key in self._MAP.path_kw:
diff --git a/pycadf/tests/audit/test_api.py b/pycadf/tests/audit/test_api.py
index 2947524..cce6dc3 100644
--- a/pycadf/tests/audit/test_api.py
+++ b/pycadf/tests/audit/test_api.py
@@ -45,7 +45,7 @@ class TestAuditApi(base.TestCase):
def setUp(self):
super(TestAuditApi, self).setUp()
self.audit_api = api.OpenStackAuditApi(
- 'etc/pycadf/api_audit_map.conf')
+ 'etc/pycadf/nova_api_audit_map.conf')
def api_request(self, method, url):
self.ENV_HEADERS['REQUEST_METHOD'] = method
@@ -58,7 +58,7 @@ class TestAuditApi(base.TestCase):
def test_get_list_with_cfg(self):
cfg.CONF.set_override(
'api_audit_map',
- self.path_get('etc/pycadf/api_audit_map.conf'),
+ self.path_get('etc/pycadf/nova_api_audit_map.conf'),
group='audit')
self.audit_api = api.OpenStackAuditApi()
req = self.api_request('GET',
diff --git a/pycadf/tests/middleware/test_audit.py b/pycadf/tests/middleware/test_audit.py
index 86ac5fc..b9770be 100644
--- a/pycadf/tests/middleware/test_audit.py
+++ b/pycadf/tests/middleware/test_audit.py
@@ -58,13 +58,13 @@ class AuditMiddlewareTest(base.TestCase):
def setUp(self):
super(AuditMiddlewareTest, self).setUp()
- self.map_file = 'etc/pycadf/api_audit_map.conf'
+ self.map_file = 'etc/pycadf/nova_api_audit_map.conf'
def test_api_request(self):
- middleware = audit.AuditMiddleware(FakeApp(),
- audit_map_file=
- 'etc/pycadf/api_audit_map.conf',
- service_name='pycadf')
+ middleware = audit.AuditMiddleware(
+ FakeApp(),
+ audit_map_file='etc/pycadf/nova_api_audit_map.conf',
+ service_name='pycadf')
self.ENV_HEADERS['REQUEST_METHOD'] = 'GET'
req = webob.Request.blank('/foo/bar',
environ=self.ENV_HEADERS)
@@ -95,10 +95,10 @@ class AuditMiddlewareTest(base.TestCase):
self.assertEqual(request['CADF_EVENT']['outcome'], 'success')
def test_api_request_failure(self):
- middleware = audit.AuditMiddleware(FakeFailingApp(),
- audit_map_file=
- 'etc/pycadf/api_audit_map.conf',
- service_name='pycadf')
+ middleware = audit.AuditMiddleware(
+ FakeFailingApp(),
+ audit_map_file='etc/pycadf/nova_api_audit_map.conf',
+ service_name='pycadf')
self.ENV_HEADERS['REQUEST_METHOD'] = 'GET'
req = webob.Request.blank('/foo/bar',
environ=self.ENV_HEADERS)
@@ -137,10 +137,10 @@ class AuditMiddlewareTest(base.TestCase):
raise Exception('error')
self.stubs.Set(cadf_api.OpenStackAuditApi, 'append_audit_event',
func_error)
- middleware = audit.AuditMiddleware(FakeApp(),
- audit_map_file=
- 'etc/pycadf/api_audit_map.conf',
- service_name='pycadf')
+ middleware = audit.AuditMiddleware(
+ FakeApp(),
+ audit_map_file='etc/pycadf/nova_api_audit_map.conf',
+ service_name='pycadf')
req = webob.Request.blank('/foo/bar',
environ={'REQUEST_METHOD': 'GET'})
middleware.process_request(req)
@@ -150,10 +150,10 @@ class AuditMiddlewareTest(base.TestCase):
raise Exception('error')
self.stubs.Set(cadf_api.OpenStackAuditApi, 'mod_audit_event',
func_error)
- middleware = audit.AuditMiddleware(FakeApp(),
- audit_map_file=
- 'etc/pycadf/api_audit_map.conf',
- service_name='pycadf')
+ middleware = audit.AuditMiddleware(
+ FakeApp(),
+ audit_map_file='etc/pycadf/nova_api_audit_map.conf',
+ service_name='pycadf')
req = webob.Request.blank('/foo/bar',
environ={'REQUEST_METHOD': 'GET'})
middleware.process_response(req, webob.response.Response())