)]}'
{"keystonemiddleware/audit.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"e934d6e5a3f2294faa7e56a22ff84f40e0963d3d","unresolved":false,"context_lines":[{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from oslo.config import cfg"},{"line_number":26,"context_line":"import oslo.messaging"},{"line_number":27,"context_line":"import pycadf"},{"line_number":28,"context_line":"import webob.dec"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"from keystonemiddleware.openstack.common import context"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_7b9d3e6c","line":27,"updated":"2014-07-29 17:21:48.000000000","message":"from pycadf import audit","commit_id":"7a4b324568679d06f8ca804c31a00b59cffbb795"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"e934d6e5a3f2294faa7e56a22ff84f40e0963d3d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        self.service_name \u003d conf.get(\u0027service_name\u0027)"},{"line_number":70,"context_line":"        self.ignore_req_list \u003d [x.upper().strip() for x in"},{"line_number":71,"context_line":"                                conf.get(\u0027ignore_req_list\u0027, \u0027\u0027).split(\u0027,\u0027)]"},{"line_number":72,"context_line":"        self.cadf_audit \u003d pycadf.audit.api.OpenStackAuditApi("},{"line_number":73,"context_line":"            conf.get(\u0027audit_map_file\u0027))"},{"line_number":74,"context_line":""},{"line_number":75,"context_line":"        transport_aliases \u003d AuditMiddleware._get_aliases(cfg.CONF.project)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_9ba212ac","line":72,"updated":"2014-07-29 17:21:48.000000000","message":"drop pycadf. here","commit_id":"7a4b324568679d06f8ca804c31a00b59cffbb795"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"AuditMiddleware filter should be place after keystonemiddleware.auth_token"},{"line_number":19,"context_line":"in the pipeline so that it can utilise the information Keystone provides."},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":"import logging"},{"line_number":22,"context_line":"import os.path"},{"line_number":23,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_07536be2","line":20,"updated":"2014-09-05 21:56:41.000000000","message":"(nit) add newline","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"AuditMiddleware filter should be place after keystonemiddleware.auth_token"},{"line_number":19,"context_line":"in the pipeline so that it can utilise the information Keystone provides."},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":"import logging"},{"line_number":22,"context_line":"import os.path"},{"line_number":23,"context_line":"import sys"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_7b5c457e","line":20,"in_reply_to":"1abeadc6_07536be2","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from keystonemiddleware.openstack.common import context"},{"line_number":32,"context_line":"from keystonemiddleware.openstack.common.gettextutils import _LE  # noqa"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"LOG \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1abeadc6_87569bcc","line":33,"updated":"2014-09-05 21:56:41.000000000","message":"(nit) add newline","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":30,"context_line":""},{"line_number":31,"context_line":"from keystonemiddleware.openstack.common import context"},{"line_number":32,"context_line":"from keystonemiddleware.openstack.common.gettextutils import _LE  # noqa"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"LOG \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_9b52c966","line":33,"in_reply_to":"1abeadc6_87569bcc","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":34,"context_line":"LOG \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def log_and_ignore_error(fn):"},{"line_number":38,"context_line":"    def wrapped(*args, **kwargs):"},{"line_number":39,"context_line":"        try:"},{"line_number":40,"context_line":"            return fn(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_8ed3bed3","line":37,"updated":"2014-09-05 21:56:41.000000000","message":"I\u0027m not a fan of using a global in this way. Have you thought about  having wrapped just accept (self, *args, **kwargs) and use self.LOG?","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":34,"context_line":"LOG \u003d None"},{"line_number":35,"context_line":""},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"def log_and_ignore_error(fn):"},{"line_number":38,"context_line":"    def wrapped(*args, **kwargs):"},{"line_number":39,"context_line":"        try:"},{"line_number":40,"context_line":"            return fn(*args, **kwargs)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_1bc6d916","line":37,"in_reply_to":"fa98f980_8ed3bed3","updated":"2014-09-18 19:19:30.000000000","message":"not really sure what is being suggested... do you have any examples?","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"030920bb3b62415bc9f58fc89932944ac8926c74","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from oslo.config import cfg"},{"line_number":26,"context_line":"import oslo.messaging"},{"line_number":27,"context_line":"import pycadf"},{"line_number":28,"context_line":"from pycadf.audit import api"},{"line_number":29,"context_line":"import webob.dec"}],"source_content_type":"text/x-python","patch_set":14,"id":"9aa7fdbe_c0763e3e","line":26,"updated":"2014-10-21 02:17:39.000000000","message":"So if i\u0027m a user and I decide to enable this in a pipeline, this would break because oslo.messaging isn\u0027t installed.\n\nyou can wrap import oslo.messaging with a try/catch importError, and set oslo.messaging to None if it\u0027s caught, then check for None before proceeding with operations, if it\u0027s none do nothing and print a better error message.","commit_id":"2447f693d5e73fbdc2884ed14ba8e61ce033f4b1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"07c88dc85cfc67994cc841b7eefded4c2dacb2c7","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from oslo.config import cfg"},{"line_number":26,"context_line":"import oslo.messaging"},{"line_number":27,"context_line":"import pycadf"},{"line_number":28,"context_line":"from pycadf.audit import api"},{"line_number":29,"context_line":"import webob.dec"}],"source_content_type":"text/x-python","patch_set":14,"id":"9aa7fdbe_b8a20fac","line":26,"in_reply_to":"9aa7fdbe_18cf9bb1","updated":"2014-10-22 19:02:46.000000000","message":"agreed that it\u0027s useless without oslo.messaging, it just depends on how we want to show that breakage i guess.\n\nif a user add this to their pipeline w/o messaging they will get a hard fail. \n\nalternatively, we could make it \"work\" just not audit\n\ni\u0027ll let the PTL decide on this one, it\u0027s above my pay grade.","commit_id":"2447f693d5e73fbdc2884ed14ba8e61ce033f4b1"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"d4b5371697062909de1ee89f63fbb364e7cf9aa5","unresolved":false,"context_lines":[{"line_number":23,"context_line":"import sys"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from oslo.config import cfg"},{"line_number":26,"context_line":"import oslo.messaging"},{"line_number":27,"context_line":"import pycadf"},{"line_number":28,"context_line":"from pycadf.audit import api"},{"line_number":29,"context_line":"import webob.dec"}],"source_content_type":"text/x-python","patch_set":14,"id":"9aa7fdbe_18cf9bb1","line":26,"in_reply_to":"9aa7fdbe_c0763e3e","updated":"2014-10-22 18:53:14.000000000","message":"i thought about it. but this middleware is pretty useless without messaging enabled and should probably fail if it\u0027s enabled but without it... unless we want it to log instead when there\u0027s no messaging?","commit_id":"2447f693d5e73fbdc2884ed14ba8e61ce033f4b1"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"030920bb3b62415bc9f58fc89932944ac8926c74","unresolved":false,"context_lines":[{"line_number":74,"context_line":"            conf.get(\u0027audit_map_file\u0027))"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        transport_aliases \u003d AuditMiddleware._get_aliases(cfg.CONF.project)"},{"line_number":77,"context_line":"        self.notifier \u003d oslo.messaging.Notifier("},{"line_number":78,"context_line":"            oslo.messaging.get_transport(cfg.CONF, aliases\u003dtransport_aliases),"},{"line_number":79,"context_line":"            os.path.basename(sys.argv[0]))"},{"line_number":80,"context_line":""}],"source_content_type":"text/x-python","patch_set":14,"id":"9aa7fdbe_c09f1e5e","line":77,"updated":"2014-10-21 02:17:39.000000000","message":"if oslo.messaging is None, this whole init shouldn\u0027t work.","commit_id":"2447f693d5e73fbdc2884ed14ba8e61ce033f4b1"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"3a664932df92e67c01cf5493238e6f3be583ce60","unresolved":false,"context_lines":[{"line_number":63,"context_line":"                \u0027%s.rpc.impl_kombu\u0027 % proj: \u0027rabbit\u0027,"},{"line_number":64,"context_line":"                \u0027%s.rpc.impl_qpid\u0027 % proj: \u0027qpid\u0027,"},{"line_number":65,"context_line":"                \u0027%s.rpc.impl_zmq\u0027 % proj: \u0027zmq\u0027,"},{"line_number":66,"context_line":"            }"},{"line_number":67,"context_line":"        return aliases"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def __init__(self, app, **conf):"}],"source_content_type":"text/x-python","patch_set":17,"id":"9aa7fdbe_c0f2d505","line":66,"updated":"2014-10-29 17:52:15.000000000","message":"this is done for when a deployment has old references to openstack.common.rpc.* as messaging protocol in their conf file\n\nthe second sec of  *.rpc.* compatibility aliases are to handle rpc code that predates openstack common i believe (i think it was from nova)","commit_id":"335a8e40d1f38ce1229f1f7a0bb45d269a05084e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_bea94e7d","line":2,"updated":"2014-11-20 00:38:25.000000000","message":"remove the extra spaces after # so it\u0027s consistent.","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#"},{"line_number":2,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":3,"context_line":"#    not use this file except in compliance with the License. You may obtain"},{"line_number":4,"context_line":"#    a copy of the License at"},{"line_number":5,"context_line":"#"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_af66034f","line":2,"in_reply_to":"5a890539_bea94e7d","updated":"2014-11-24 18:34:13.000000000","message":"um... i\u0027m going to assume you mean one space when you say \u0027so it\u0027s consistent\u0027","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"\"\"\""},{"line_number":15,"context_line":"Build open standard audit information based on incoming requests"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"AuditMiddleware filter should be place after keystonemiddleware.auth_token"},{"line_number":18,"context_line":"in the pipeline so that it can utilise the information Keystone provides."},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_fe867664","line":17,"updated":"2014-11-20 00:38:25.000000000","message":"change \"place\" to \"placed\"","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":14,"context_line":"\"\"\""},{"line_number":15,"context_line":"Build open standard audit information based on incoming requests"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"AuditMiddleware filter should be place after keystonemiddleware.auth_token"},{"line_number":18,"context_line":"in the pipeline so that it can utilise the information Keystone provides."},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_0f2637ce","line":17,"in_reply_to":"5a890539_fe867664","updated":"2014-11-24 18:34:13.000000000","message":"Done","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Build open standard audit information based on incoming requests"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"AuditMiddleware filter should be place after keystonemiddleware.auth_token"},{"line_number":18,"context_line":"in the pipeline so that it can utilise the information Keystone provides."},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import logging"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_3e81de4a","line":18,"updated":"2014-11-20 00:38:25.000000000","message":"change \"Keystone\" to \"the Identity server\"","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":15,"context_line":"Build open standard audit information based on incoming requests"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"AuditMiddleware filter should be place after keystonemiddleware.auth_token"},{"line_number":18,"context_line":"in the pipeline so that it can utilise the information Keystone provides."},{"line_number":19,"context_line":"\"\"\""},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import logging"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_cf38aff0","line":18,"in_reply_to":"5a890539_3e81de4a","updated":"2014-11-24 18:34:13.000000000","message":"Done","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0d490dc4e883d65bbe29fd7cad8e996af1800421","unresolved":false,"context_lines":[{"line_number":32,"context_line":"from pycadf.audit import api"},{"line_number":33,"context_line":"import webob.dec"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"from keystonemiddleware.openstack.common import context"},{"line_number":36,"context_line":""},{"line_number":37,"context_line":""},{"line_number":38,"context_line":"LOG \u003d None"}],"source_content_type":"text/x-python","patch_set":18,"id":"7a8c0949_30a1e447","line":35,"updated":"2014-11-06 05:51:35.000000000","message":"just a heads up - you can use oslo.context when it\u0027s graduated (should be soon)","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def log_and_ignore_error(fn):"},{"line_number":42,"context_line":"    def wrapped(*args, **kwargs):"},{"line_number":43,"context_line":"        try:"},{"line_number":44,"context_line":"            return fn(*args, **kwargs)"},{"line_number":45,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_9ee65243","line":42,"updated":"2014-11-20 00:38:25.000000000","message":"suggest use @functools.wraps(fn) -- see https://docs.python.org/2/library/functools.html#functools.wraps","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":""},{"line_number":41,"context_line":"def log_and_ignore_error(fn):"},{"line_number":42,"context_line":"    def wrapped(*args, **kwargs):"},{"line_number":43,"context_line":"        try:"},{"line_number":44,"context_line":"            return fn(*args, **kwargs)"},{"line_number":45,"context_line":"        except Exception as e:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_8f32270e","line":42,"in_reply_to":"5a890539_9ee65243","updated":"2014-11-24 18:34:13.000000000","message":"Done","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        try:"},{"line_number":44,"context_line":"            return fn(*args, **kwargs)"},{"line_number":45,"context_line":"        except Exception as e:"},{"line_number":46,"context_line":"            LOG.exception((\u0027An exception occurred processing \u0027"},{"line_number":47,"context_line":"                           \u0027the API call: %s \u0027) % e)"},{"line_number":48,"context_line":"    return wrapped"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_decffab1","line":46,"updated":"2014-11-20 00:38:25.000000000","message":"use _LE() for translation","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":43,"context_line":"        try:"},{"line_number":44,"context_line":"            return fn(*args, **kwargs)"},{"line_number":45,"context_line":"        except Exception as e:"},{"line_number":46,"context_line":"            LOG.exception((\u0027An exception occurred processing \u0027"},{"line_number":47,"context_line":"                           \u0027the API call: %s \u0027) % e)"},{"line_number":48,"context_line":"    return wrapped"},{"line_number":49,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_2f0a1326","line":46,"in_reply_to":"5a890539_decffab1","updated":"2014-11-24 18:34:13.000000000","message":"Done","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"82b4a227ecb833ff4ee07a544130b834cf60eb88","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            return fn(*args, **kwargs)"},{"line_number":45,"context_line":"        except Exception as e:"},{"line_number":46,"context_line":"            LOG.exception((\u0027An exception occurred processing \u0027"},{"line_number":47,"context_line":"                           \u0027the API call: %s \u0027) % e)"},{"line_number":48,"context_line":"    return wrapped"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_c9837454","line":47,"updated":"2014-11-21 21:20:54.000000000","message":"Don\u0027t use % in log statements. Instead just use a comma.","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":44,"context_line":"            return fn(*args, **kwargs)"},{"line_number":45,"context_line":"        except Exception as e:"},{"line_number":46,"context_line":"            LOG.exception((\u0027An exception occurred processing \u0027"},{"line_number":47,"context_line":"                           \u0027the API call: %s \u0027) % e)"},{"line_number":48,"context_line":"    return wrapped"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_0f0d573e","line":47,"in_reply_to":"5a890539_c9837454","updated":"2014-11-24 18:34:13.000000000","message":"Done","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        global LOG"},{"line_number":72,"context_line":"        LOG \u003d logging.getLogger(conf.get(\u0027log_name\u0027, __name__))"},{"line_number":73,"context_line":"        self.service_name \u003d conf.get(\u0027service_name\u0027)"},{"line_number":74,"context_line":"        self.ignore_req_list \u003d [x.upper().strip() for x in"},{"line_number":75,"context_line":"                                conf.get(\u0027ignore_req_list\u0027, \u0027\u0027).split(\u0027,\u0027)]"},{"line_number":76,"context_line":"        self.cadf_audit \u003d api.OpenStackAuditApi("},{"line_number":77,"context_line":"            conf.get(\u0027audit_map_file\u0027))"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_9e5492cb","line":74,"updated":"2014-11-20 00:38:25.000000000","message":"there should be a comment that says what this is for.","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":71,"context_line":"        global LOG"},{"line_number":72,"context_line":"        LOG \u003d logging.getLogger(conf.get(\u0027log_name\u0027, __name__))"},{"line_number":73,"context_line":"        self.service_name \u003d conf.get(\u0027service_name\u0027)"},{"line_number":74,"context_line":"        self.ignore_req_list \u003d [x.upper().strip() for x in"},{"line_number":75,"context_line":"                                conf.get(\u0027ignore_req_list\u0027, \u0027\u0027).split(\u0027,\u0027)]"},{"line_number":76,"context_line":"        self.cadf_audit \u003d api.OpenStackAuditApi("},{"line_number":77,"context_line":"            conf.get(\u0027audit_map_file\u0027))"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_d26bf8b6","line":74,"in_reply_to":"5a890539_9e5492cb","updated":"2014-11-24 18:34:13.000000000","message":"see below","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        self.ignore_req_list \u003d [x.upper().strip() for x in"},{"line_number":75,"context_line":"                                conf.get(\u0027ignore_req_list\u0027, \u0027\u0027).split(\u0027,\u0027)]"},{"line_number":76,"context_line":"        self.cadf_audit \u003d api.OpenStackAuditApi("},{"line_number":77,"context_line":"            conf.get(\u0027audit_map_file\u0027))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        transport_aliases \u003d AuditMiddleware._get_aliases(cfg.CONF.project)"},{"line_number":80,"context_line":"        if messaging:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_7e6e0698","line":77,"updated":"2014-11-20 00:38:25.000000000","message":"the arguments to init should be documented somewhere.","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"82b4a227ecb833ff4ee07a544130b834cf60eb88","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        self.ignore_req_list \u003d [x.upper().strip() for x in"},{"line_number":75,"context_line":"                                conf.get(\u0027ignore_req_list\u0027, \u0027\u0027).split(\u0027,\u0027)]"},{"line_number":76,"context_line":"        self.cadf_audit \u003d api.OpenStackAuditApi("},{"line_number":77,"context_line":"            conf.get(\u0027audit_map_file\u0027))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        transport_aliases \u003d AuditMiddleware._get_aliases(cfg.CONF.project)"},{"line_number":80,"context_line":"        if messaging:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_898dec7e","line":77,"in_reply_to":"5a890539_7e6e0698","updated":"2014-11-21 21:20:54.000000000","message":"++","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":74,"context_line":"        self.ignore_req_list \u003d [x.upper().strip() for x in"},{"line_number":75,"context_line":"                                conf.get(\u0027ignore_req_list\u0027, \u0027\u0027).split(\u0027,\u0027)]"},{"line_number":76,"context_line":"        self.cadf_audit \u003d api.OpenStackAuditApi("},{"line_number":77,"context_line":"            conf.get(\u0027audit_map_file\u0027))"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"        transport_aliases \u003d AuditMiddleware._get_aliases(cfg.CONF.project)"},{"line_number":80,"context_line":"        if messaging:"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_1214a042","line":77,"in_reply_to":"5a890539_898dec7e","updated":"2014-11-24 18:34:13.000000000","message":"it\u0027s in https://review.openstack.org/#/c/130344/6/doc/source/audit.rst\n\ni\u0027ll add a link to it since it\u0027s rather verbose to put this in code.","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        if messaging:"},{"line_number":93,"context_line":"            self.notifier.info(context, event_type, payload)"},{"line_number":94,"context_line":"        else:"},{"line_number":95,"context_line":"            LOG.info(\u0027Event type: %(event_type)s, Context: %(context)s, \u0027"},{"line_number":96,"context_line":"                     \u0027Payload: %(payload)s\u0027 % {\u0027context\u0027: context,"},{"line_number":97,"context_line":"                                               \u0027event_type\u0027: event_type,"},{"line_number":98,"context_line":"                                               \u0027payload\u0027: payload})"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_be686e88","line":95,"updated":"2014-11-20 00:38:25.000000000","message":"use _LI for translation.","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":92,"context_line":"        if messaging:"},{"line_number":93,"context_line":"            self.notifier.info(context, event_type, payload)"},{"line_number":94,"context_line":"        else:"},{"line_number":95,"context_line":"            LOG.info(\u0027Event type: %(event_type)s, Context: %(context)s, \u0027"},{"line_number":96,"context_line":"                     \u0027Payload: %(payload)s\u0027 % {\u0027context\u0027: context,"},{"line_number":97,"context_line":"                                               \u0027event_type\u0027: event_type,"},{"line_number":98,"context_line":"                                               \u0027payload\u0027: payload})"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_5248e85b","line":95,"in_reply_to":"5a890539_be686e88","updated":"2014-11-24 18:34:13.000000000","message":"Done","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"82b4a227ecb833ff4ee07a544130b834cf60eb88","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            self.notifier.info(context, event_type, payload)"},{"line_number":94,"context_line":"        else:"},{"line_number":95,"context_line":"            LOG.info(\u0027Event type: %(event_type)s, Context: %(context)s, \u0027"},{"line_number":96,"context_line":"                     \u0027Payload: %(payload)s\u0027 % {\u0027context\u0027: context,"},{"line_number":97,"context_line":"                                               \u0027event_type\u0027: event_type,"},{"line_number":98,"context_line":"                                               \u0027payload\u0027: payload})"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_c9ea940e","line":96,"updated":"2014-11-21 21:20:54.000000000","message":"Same note about %","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":93,"context_line":"            self.notifier.info(context, event_type, payload)"},{"line_number":94,"context_line":"        else:"},{"line_number":95,"context_line":"            LOG.info(\u0027Event type: %(event_type)s, Context: %(context)s, \u0027"},{"line_number":96,"context_line":"                     \u0027Payload: %(payload)s\u0027 % {\u0027context\u0027: context,"},{"line_number":97,"context_line":"                                               \u0027event_type\u0027: event_type,"},{"line_number":98,"context_line":"                                               \u0027payload\u0027: payload})"},{"line_number":99,"context_line":""}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_7245e441","line":96,"in_reply_to":"5a890539_c9ea940e","updated":"2014-11-24 18:34:13.000000000","message":"Done","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        try:"},{"line_number":142,"context_line":"            response \u003d req.get_response(self.application)"},{"line_number":143,"context_line":"        except Exception:"},{"line_number":144,"context_line":"            self.process_response(req, None)"},{"line_number":145,"context_line":"            raise"},{"line_number":146,"context_line":"        else:"},{"line_number":147,"context_line":"            self.process_response(req, response)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_ded29a33","line":144,"updated":"2014-11-20 00:38:25.000000000","message":"give a name to the None magic number so readers know what it\u0027s for.","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        try:"},{"line_number":142,"context_line":"            response \u003d req.get_response(self.application)"},{"line_number":143,"context_line":"        except Exception:"},{"line_number":144,"context_line":"            self.process_response(req, None)"},{"line_number":145,"context_line":"            raise"},{"line_number":146,"context_line":"        else:"},{"line_number":147,"context_line":"            self.process_response(req, response)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_b2882c72","line":144,"in_reply_to":"5a890539_ded29a33","updated":"2014-11-24 18:34:13.000000000","message":"... i\u0027m going to put response\u003dNone. i\u0027m not sure what else there is to be said here.","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    conf.update(local_conf)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def audit_filter(app):"},{"line_number":157,"context_line":"        return AuditMiddleware(app, conf)"},{"line_number":158,"context_line":"    return audit_filter"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_5e94ea43","line":157,"updated":"2014-11-20 00:38:25.000000000","message":"AuditMiddleware takes a **conf... how does this work?\n\n class C1(object):\n     def __init__(self, app, **conf):\n         print conf.get(\u0027something\u0027)\n\n app \u003d None\n conf \u003d {}\n C1(app, conf)\n\nfails with: TypeError: __init__() takes exactly 2 arguments (3 given)\n\nC1(app, **conf) works","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":154,"context_line":"    conf.update(local_conf)"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"    def audit_filter(app):"},{"line_number":157,"context_line":"        return AuditMiddleware(app, conf)"},{"line_number":158,"context_line":"    return audit_filter"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_3594268a","line":157,"in_reply_to":"5a890539_5e94ea43","updated":"2014-11-24 18:34:13.000000000","message":"accidentally put ** in __init__","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"}],"keystonemiddleware/openstack/common/context.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6456c439463ef7984a475d91eb16acc50da2675c","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2011 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa7fdbe_3a266117","line":1,"updated":"2014-10-20 18:10:08.000000000","message":"what about the copyrights, should these be removed and left for the foundation to add?","commit_id":"7b15b04b00b2c74e1b2111b66879b6b707cf068c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"1a2c2ef813731101009ffc7ebaef45f095616cf2","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2011 OpenStack Foundation."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa7fdbe_e08d027d","line":1,"in_reply_to":"9aa7fdbe_3a266117","updated":"2014-10-21 01:46:48.000000000","message":"we\u0027re not suppose to edit openstack/common files outside of oslo","commit_id":"7b15b04b00b2c74e1b2111b66879b6b707cf068c"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"6456c439463ef7984a475d91eb16acc50da2675c","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Projects should subclass this class if they wish to enhance the request"},{"line_number":20,"context_line":"context or provide additional information in their specific WSGI pipeline."},{"line_number":21,"context_line":"\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import itertools"},{"line_number":24,"context_line":"import uuid"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa7fdbe_daf39571","line":22,"updated":"2014-10-20 18:10:08.000000000","message":"Should this module \u0027keystonemiddleware/openstack/common/context.py\u0027 be sync\u0027d with keystonemiddleware prior to this review? Syncs from o-i should only be syncs and not include other changes outside of the sync, right?","commit_id":"7b15b04b00b2c74e1b2111b66879b6b707cf068c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"1a2c2ef813731101009ffc7ebaef45f095616cf2","unresolved":false,"context_lines":[{"line_number":19,"context_line":"Projects should subclass this class if they wish to enhance the request"},{"line_number":20,"context_line":"context or provide additional information in their specific WSGI pipeline."},{"line_number":21,"context_line":"\"\"\""},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import itertools"},{"line_number":24,"context_line":"import uuid"},{"line_number":25,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"9aa7fdbe_20d62a50","line":22,"in_reply_to":"9aa7fdbe_daf39571","updated":"2014-10-21 01:46:48.000000000","message":"are you asking or telling me? :) i just pulled it in here since this is the only middleware using it. i can add it separately if that\u0027s what you guys typically do.","commit_id":"7b15b04b00b2c74e1b2111b66879b6b707cf068c"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"030920bb3b62415bc9f58fc89932944ac8926c74","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"9aa7fdbe_a0a05a91","updated":"2014-10-21 02:17:39.000000000","message":"splitting up the patch might be a good idea.","commit_id":"2447f693d5e73fbdc2884ed14ba8e61ce033f4b1"}],"keystonemiddleware/tests/audit.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2728f3bfa96a33c7814b951d474d0df282ad2f0d","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"\"\"\""},{"line_number":16,"context_line":"Attach open standard audit information to request.environ"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"AuditMiddleware filter should be place after Keystone\u0027s auth_token middleware"},{"line_number":19,"context_line":"in the pipeline so that it can utilise the information Keystone provides."}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c52d79ff","line":16,"updated":"2014-07-22 21:54:30.000000000","message":"to WSGI ``request.environ``.","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a46b607731004bde769703a2e3d7f1433fd14741","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"\"\"\""},{"line_number":16,"context_line":"Attach open standard audit information to request.environ"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"AuditMiddleware filter should be place after Keystone\u0027s auth_token middleware"},{"line_number":19,"context_line":"in the pipeline so that it can utilise the information Keystone provides."}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_483c7dbf","line":16,"in_reply_to":"baada198_c52d79ff","updated":"2014-07-28 13:03:14.000000000","message":"Done","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2728f3bfa96a33c7814b951d474d0df282ad2f0d","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\"\"\""},{"line_number":16,"context_line":"Attach open standard audit information to request.environ"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"AuditMiddleware filter should be place after Keystone\u0027s auth_token middleware"},{"line_number":19,"context_line":"in the pipeline so that it can utilise the information Keystone provides."},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":"import os.path"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_25f55584","line":18,"updated":"2014-07-22 21:54:30.000000000","message":"after ``keystonemiddleware.auth_token``","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a46b607731004bde769703a2e3d7f1433fd14741","unresolved":false,"context_lines":[{"line_number":15,"context_line":"\"\"\""},{"line_number":16,"context_line":"Attach open standard audit information to request.environ"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"AuditMiddleware filter should be place after Keystone\u0027s auth_token middleware"},{"line_number":19,"context_line":"in the pipeline so that it can utilise the information Keystone provides."},{"line_number":20,"context_line":"\"\"\""},{"line_number":21,"context_line":"import os.path"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_6847814c","line":18,"in_reply_to":"baada198_25f55584","updated":"2014-07-28 13:03:14.000000000","message":"Done","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2728f3bfa96a33c7814b951d474d0df282ad2f0d","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        except Exception as e:"},{"line_number":41,"context_line":"            if LOG:"},{"line_number":42,"context_line":"                LOG.exception(_(\u0027An exception occurred processing \u0027"},{"line_number":43,"context_line":"                                \u0027the API call: %s \u0027) % e)"},{"line_number":44,"context_line":"    return wrapped"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_00291f37","line":43,"updated":"2014-07-22 21:54:30.000000000","message":"why is it this module\u0027s job to log exceptions?","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a46b607731004bde769703a2e3d7f1433fd14741","unresolved":false,"context_lines":[{"line_number":40,"context_line":"        except Exception as e:"},{"line_number":41,"context_line":"            if LOG:"},{"line_number":42,"context_line":"                LOG.exception(_(\u0027An exception occurred processing \u0027"},{"line_number":43,"context_line":"                                \u0027the API call: %s \u0027) % e)"},{"line_number":44,"context_line":"    return wrapped"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_28410939","line":43,"in_reply_to":"baada198_00291f37","updated":"2014-07-28 13:03:14.000000000","message":"the reason we added this originally was because we didn\u0027t want the request to fail because of an error in auditing... ie. if audit fails, we should still let request/action continue.\n\nif we don\u0027t care to log, i can remove that part?","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2728f3bfa96a33c7814b951d474d0df282ad2f0d","unresolved":false,"context_lines":[{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class AuditMiddleware(object):"},{"line_number":48,"context_line":"    \"\"\"create an audit event based on request/response.\"\"\""},{"line_number":49,"context_line":""},{"line_number":50,"context_line":"    @staticmethod"},{"line_number":51,"context_line":"    def _get_aliases(proj):"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_4539693e","line":48,"updated":"2014-07-22 21:54:30.000000000","message":"Create","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2728f3bfa96a33c7814b951d474d0df282ad2f0d","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        return aliases"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def __init__(self, app, **conf):"},{"line_number":69,"context_line":"        global LOG"},{"line_number":70,"context_line":"        super(RequestNotifier, self).__init__(app)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.service_name \u003d conf.get(\u0027service_name\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_25ce355c","line":69,"updated":"2014-07-22 21:54:30.000000000","message":"remove this; you\u0027re not writing to the reference, so you don\u0027t need to bring it into scope as a global","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a46b607731004bde769703a2e3d7f1433fd14741","unresolved":false,"context_lines":[{"line_number":66,"context_line":"        return aliases"},{"line_number":67,"context_line":""},{"line_number":68,"context_line":"    def __init__(self, app, **conf):"},{"line_number":69,"context_line":"        global LOG"},{"line_number":70,"context_line":"        super(RequestNotifier, self).__init__(app)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.service_name \u003d conf.get(\u0027service_name\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_a874399c","line":69,"in_reply_to":"baada198_25ce355c","updated":"2014-07-28 13:03:14.000000000","message":"Done","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2728f3bfa96a33c7814b951d474d0df282ad2f0d","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        global LOG"},{"line_number":70,"context_line":"        super(RequestNotifier, self).__init__(app)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.service_name \u003d conf.get(\u0027service_name\u0027)"},{"line_number":73,"context_line":"        self.ignore_req_list \u003d [x.upper().strip() for x in"},{"line_number":74,"context_line":"                                conf.get(\u0027ignore_req_list\u0027, \u0027\u0027).split(\u0027,\u0027)]"},{"line_number":75,"context_line":"        self.cadf_audit \u003d cadf_api.OpenStackAuditApi("}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_6052dbdf","line":72,"updated":"2014-07-22 21:54:30.000000000","message":"CONF needs to be well defined (see auth_token), not just reading it out as a dictionary","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a46b607731004bde769703a2e3d7f1433fd14741","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        global LOG"},{"line_number":70,"context_line":"        super(RequestNotifier, self).__init__(app)"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"        self.service_name \u003d conf.get(\u0027service_name\u0027)"},{"line_number":73,"context_line":"        self.ignore_req_list \u003d [x.upper().strip() for x in"},{"line_number":74,"context_line":"                                conf.get(\u0027ignore_req_list\u0027, \u0027\u0027).split(\u0027,\u0027)]"},{"line_number":75,"context_line":"        self.cadf_audit \u003d cadf_api.OpenStackAuditApi("}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_d5dc9247","line":72,"in_reply_to":"baada198_6052dbdf","updated":"2014-07-28 13:03:14.000000000","message":"using oslo.config was something we wanted to avoid in original middleware... we chose to accept parameters via conf in paste... did we want to use oslo.config instead?","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2728f3bfa96a33c7814b951d474d0df282ad2f0d","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.cadf_audit \u003d cadf_api.OpenStackAuditApi("},{"line_number":76,"context_line":"            conf.get(\u0027audit_map_file\u0027))"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        TRANSPORT_ALIASES \u003d RequestNotifier._get_aliases(cfg.CONF.project)"},{"line_number":79,"context_line":"        self.notifier \u003d oslo.messaging.Notifier("},{"line_number":80,"context_line":"            oslo.messaging.get_transport(cfg.CONF, aliases\u003dTRANSPORT_ALIASES),"},{"line_number":81,"context_line":"            os.path.basename(sys.argv[0]))"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_854381ae","line":78,"updated":"2014-07-22 21:54:30.000000000","message":"WHY IS THIS IN CAPS","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a46b607731004bde769703a2e3d7f1433fd14741","unresolved":false,"context_lines":[{"line_number":75,"context_line":"        self.cadf_audit \u003d cadf_api.OpenStackAuditApi("},{"line_number":76,"context_line":"            conf.get(\u0027audit_map_file\u0027))"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"        TRANSPORT_ALIASES \u003d RequestNotifier._get_aliases(cfg.CONF.project)"},{"line_number":79,"context_line":"        self.notifier \u003d oslo.messaging.Notifier("},{"line_number":80,"context_line":"            oslo.messaging.get_transport(cfg.CONF, aliases\u003dTRANSPORT_ALIASES),"},{"line_number":81,"context_line":"            os.path.basename(sys.argv[0]))"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c877ad9d","line":78,"in_reply_to":"baada198_854381ae","updated":"2014-07-28 13:03:14.000000000","message":"copy/paste","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2728f3bfa96a33c7814b951d474d0df282ad2f0d","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        self.event.add_reporterstep("},{"line_number":106,"context_line":"            reporterstep.Reporterstep(role\u003dcadftype.REPORTER_ROLE_MODIFIER,"},{"line_number":107,"context_line":"                                      reporter\u003dresource.Resource(id\u003d\u0027target\u0027),"},{"line_number":108,"context_line":"                                      reporterTime\u003dtimestamp.get_utc_now()))"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.notifier.info(context.get_admin_context().to_dict(),"},{"line_number":111,"context_line":"                           \u0027audit.http.response\u0027, self.event.as_dict())"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_c0a3a7af","line":108,"updated":"2014-07-22 21:54:30.000000000","message":"timestamp isn\u0027t a thing; use timeutils","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a46b607731004bde769703a2e3d7f1433fd14741","unresolved":false,"context_lines":[{"line_number":105,"context_line":"        self.event.add_reporterstep("},{"line_number":106,"context_line":"            reporterstep.Reporterstep(role\u003dcadftype.REPORTER_ROLE_MODIFIER,"},{"line_number":107,"context_line":"                                      reporter\u003dresource.Resource(id\u003d\u0027target\u0027),"},{"line_number":108,"context_line":"                                      reporterTime\u003dtimestamp.get_utc_now()))"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"        self.notifier.info(context.get_admin_context().to_dict(),"},{"line_number":111,"context_line":"                           \u0027audit.http.response\u0027, self.event.as_dict())"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_8859352b","line":108,"in_reply_to":"baada198_c0a3a7af","updated":"2014-07-28 13:03:14.000000000","message":"there is a timestamp module in pyCADF. not sure if it\u0027s unique enough from timeutils to justify it\u0027s use.","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2728f3bfa96a33c7814b951d474d0df282ad2f0d","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def __call__(self, req):"},{"line_number":115,"context_line":"        if req.method in self.ignore_req_list:"},{"line_number":116,"context_line":"            return req.get_response(self.application)"},{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            self.process_request(req)"},{"line_number":119,"context_line":"            try:"},{"line_number":120,"context_line":"                response \u003d req.get_response(self.application)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_00859f06","line":117,"updated":"2014-07-22 21:54:30.000000000","message":"drop the else, use the if as a short circuit","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a46b607731004bde769703a2e3d7f1433fd14741","unresolved":false,"context_lines":[{"line_number":114,"context_line":"    def __call__(self, req):"},{"line_number":115,"context_line":"        if req.method in self.ignore_req_list:"},{"line_number":116,"context_line":"            return req.get_response(self.application)"},{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            self.process_request(req)"},{"line_number":119,"context_line":"            try:"},{"line_number":120,"context_line":"                response \u003d req.get_response(self.application)"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_a89b59c7","line":117,"in_reply_to":"baada198_00859f06","updated":"2014-07-28 13:03:14.000000000","message":"Done","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2728f3bfa96a33c7814b951d474d0df282ad2f0d","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if req.method in self.ignore_req_list:"},{"line_number":116,"context_line":"            return req.get_response(self.application)"},{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            self.process_request(req)"},{"line_number":119,"context_line":"            try:"},{"line_number":120,"context_line":"                response \u003d req.get_response(self.application)"},{"line_number":121,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_4076b740","line":118,"updated":"2014-07-22 21:54:30.000000000","message":"i don\u0027t really see why this is a separate method","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a46b607731004bde769703a2e3d7f1433fd14741","unresolved":false,"context_lines":[{"line_number":115,"context_line":"        if req.method in self.ignore_req_list:"},{"line_number":116,"context_line":"            return req.get_response(self.application)"},{"line_number":117,"context_line":"        else:"},{"line_number":118,"context_line":"            self.process_request(req)"},{"line_number":119,"context_line":"            try:"},{"line_number":120,"context_line":"                response \u003d req.get_response(self.application)"},{"line_number":121,"context_line":"            except Exception:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_15c9aa78","line":118,"in_reply_to":"baada198_4076b740","updated":"2014-07-28 13:03:14.000000000","message":"this was to reuse the wrap/log feature above","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2728f3bfa96a33c7814b951d474d0df282ad2f0d","unresolved":false,"context_lines":[{"line_number":122,"context_line":"                self.process_response(req, None)"},{"line_number":123,"context_line":"                raise"},{"line_number":124,"context_line":"            else:"},{"line_number":125,"context_line":"                self.process_response(req, response)"},{"line_number":126,"context_line":"            return response"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_a08cf32f","line":125,"updated":"2014-07-22 21:54:30.000000000","message":"make this a try/finally with a default response of None?, and move process_response() into this method?","commit_id":"92a24b2bd8b59cdee0b1282914e2af1f2445d44c"}],"keystonemiddleware/tests/test_audit_middleware.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copyright (c) 2014 OpenStack Foundation"},{"line_number":2,"context_line":"#    All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_ee752afa","line":1,"updated":"2014-09-05 21:56:41.000000000","message":"Do you work for the foundation or was this copy-pasta?","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copyright (c) 2014 OpenStack Foundation"},{"line_number":2,"context_line":"#    All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_7bd365d5","line":1,"in_reply_to":"fa98f980_ee752afa","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copyright (c) 2014 OpenStack Foundation"},{"line_number":2,"context_line":"#    All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_8e5c9e7e","line":2,"updated":"2014-09-05 21:56:41.000000000","message":"Most of our copyrights only have a single leading space.","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":1,"context_line":"#    Copyright (c) 2014 OpenStack Foundation"},{"line_number":2,"context_line":"#    All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"},{"line_number":5,"context_line":"#    not use this file except in compliance with the License. You may obtain"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_9bd9e9f6","line":2,"in_reply_to":"fa98f980_8e5c9e7e","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":"import tempfile"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_eeefeae6","line":14,"updated":"2014-09-05 21:56:41.000000000","message":"(nit) put a space in between the copyright and imports","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT"},{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":"import tempfile"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_fbde75d9","line":14,"in_reply_to":"fa98f980_eeefeae6","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":"import tempfile"},{"line_number":18,"context_line":"import webob"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_2ebd72d8","line":15,"updated":"2014-09-05 21:56:41.000000000","message":"mock is thirdparty and should be in the second section","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":12,"context_line":"#    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the"},{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":"import tempfile"},{"line_number":18,"context_line":"import webob"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_3bf0fd65","line":15,"in_reply_to":"fa98f980_2ebd72d8","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":"import tempfile"},{"line_number":18,"context_line":"import webob"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo.config import cfg"},{"line_number":21,"context_line":"import oslo.messaging"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_aed0821f","line":18,"updated":"2014-09-05 21:56:41.000000000","message":"webob is thirdparty and should be in the second section.","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":"import os"},{"line_number":17,"context_line":"import tempfile"},{"line_number":18,"context_line":"import webob"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo.config import cfg"},{"line_number":21,"context_line":"import oslo.messaging"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_5be781ac","line":18,"in_reply_to":"fa98f980_aed0821f","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo.config import cfg"},{"line_number":21,"context_line":"import oslo.messaging"},{"line_number":22,"context_line":"from oslotest import moxstubout"},{"line_number":23,"context_line":"import testtools"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from keystonemiddleware import audit"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_4ebc76bb","line":22,"updated":"2014-09-05 21:56:41.000000000","message":"How hard would it be to use mock instead of mox. We replaced all of the mox code with mock in Keystone so that we have one way to do things.","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo.config import cfg"},{"line_number":21,"context_line":"import oslo.messaging"},{"line_number":22,"context_line":"from oslotest import moxstubout"},{"line_number":23,"context_line":"import testtools"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"from keystonemiddleware import audit"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_7bea8575","line":22,"in_reply_to":"fa98f980_4ebc76bb","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        (self.fd, self.audit_map) \u003d tempfile.mkstemp()"},{"line_number":50,"context_line":"        cfg.CONF([], project\u003d\u0027keystonemiddleware\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def tearDown(self):"},{"line_number":53,"context_line":"        super(AuditMiddlewareTest, self).tearDown()"},{"line_number":54,"context_line":"        os.close(self.fd)"},{"line_number":55,"context_line":"        cfg.CONF.reset()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_cec78643","line":52,"updated":"2014-09-05 21:56:41.000000000","message":"Don\u0027s use tearDown, instead use self.addCleanup to add cleanup functions.","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        (self.fd, self.audit_map) \u003d tempfile.mkstemp()"},{"line_number":50,"context_line":"        cfg.CONF([], project\u003d\u0027keystonemiddleware\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def tearDown(self):"},{"line_number":53,"context_line":"        super(AuditMiddlewareTest, self).tearDown()"},{"line_number":54,"context_line":"        os.close(self.fd)"},{"line_number":55,"context_line":"        cfg.CONF.reset()"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_9b000937","line":52,"in_reply_to":"fa98f980_cec78643","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                pass"},{"line_number":117,"context_line":"            # Check first notification with only \u0027request\u0027"},{"line_number":118,"context_line":"            call_args \u003d notify.call_args_list[0][0]"},{"line_number":119,"context_line":"            self.assertEqual(call_args[1], \u0027audit.http.request\u0027)"},{"line_number":120,"context_line":"            self.assertEqual(call_args[2][\u0027requestPath\u0027], \u0027/foo/bar\u0027)"},{"line_number":121,"context_line":"            self.assertEqual(call_args[2][\u0027outcome\u0027], \u0027pending\u0027)"},{"line_number":122,"context_line":"            self.assertNotIn(\u0027reporterchain\u0027, call_args[2])"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_8e857ed0","line":119,"updated":"2014-09-05 21:56:41.000000000","message":"The order on these too.","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                pass"},{"line_number":117,"context_line":"            # Check first notification with only \u0027request\u0027"},{"line_number":118,"context_line":"            call_args \u003d notify.call_args_list[0][0]"},{"line_number":119,"context_line":"            self.assertEqual(call_args[1], \u0027audit.http.request\u0027)"},{"line_number":120,"context_line":"            self.assertEqual(call_args[2][\u0027requestPath\u0027], \u0027/foo/bar\u0027)"},{"line_number":121,"context_line":"            self.assertEqual(call_args[2][\u0027outcome\u0027], \u0027pending\u0027)"},{"line_number":122,"context_line":"            self.assertNotIn(\u0027reporterchain\u0027, call_args[2])"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_bbfb0d47","line":119,"in_reply_to":"fa98f980_8e857ed0","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"            # Check second notification with request + response"},{"line_number":125,"context_line":"            call_args \u003d notify.call_args_list[1][0]"},{"line_number":126,"context_line":"            self.assertEqual(call_args[1], \u0027audit.http.response\u0027)"},{"line_number":127,"context_line":"            self.assertEqual(call_args[2][\u0027requestPath\u0027], \u0027/foo/bar\u0027)"},{"line_number":128,"context_line":"            self.assertEqual(call_args[2][\u0027outcome\u0027], \u0027unknown\u0027)"},{"line_number":129,"context_line":"            self.assertIn(\u0027reporterchain\u0027, call_args[2])"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_4e7f16e0","line":126,"updated":"2014-09-05 21:56:41.000000000","message":"The order on these too.","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":123,"context_line":""},{"line_number":124,"context_line":"            # Check second notification with request + response"},{"line_number":125,"context_line":"            call_args \u003d notify.call_args_list[1][0]"},{"line_number":126,"context_line":"            self.assertEqual(call_args[1], \u0027audit.http.response\u0027)"},{"line_number":127,"context_line":"            self.assertEqual(call_args[2][\u0027requestPath\u0027], \u0027/foo/bar\u0027)"},{"line_number":128,"context_line":"            self.assertEqual(call_args[2][\u0027outcome\u0027], \u0027unknown\u0027)"},{"line_number":129,"context_line":"            self.assertIn(\u0027reporterchain\u0027, call_args[2])"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_dbfa9142","line":126,"in_reply_to":"fa98f980_4e7f16e0","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                  environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027GET\u0027})"},{"line_number":141,"context_line":"        return middleware, req"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def test_process_request_fail(self):"},{"line_number":144,"context_line":"        middleware, req \u003d self._config_process_fail()"},{"line_number":145,"context_line":"        middleware.process_request(req)"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_8e0e5e8a","line":143,"updated":"2014-09-05 21:56:41.000000000","message":"You\u0027re not asserting anything here so I\u0027m not really sure what is being tested.","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":140,"context_line":"                                  environ\u003d{\u0027REQUEST_METHOD\u0027: \u0027GET\u0027})"},{"line_number":141,"context_line":"        return middleware, req"},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"    def test_process_request_fail(self):"},{"line_number":144,"context_line":"        middleware, req \u003d self._config_process_fail()"},{"line_number":145,"context_line":"        middleware.process_request(req)"},{"line_number":146,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_1b9419e7","line":143,"in_reply_to":"fa98f980_8e0e5e8a","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        middleware, req \u003d self._config_process_fail()"},{"line_number":145,"context_line":"        middleware.process_request(req)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_process_response_fail(self):"},{"line_number":148,"context_line":"        middleware, req \u003d self._config_process_fail()"},{"line_number":149,"context_line":"        middleware.process_response(req, webob.response.Response())"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_ce230603","line":147,"updated":"2014-09-05 21:56:41.000000000","message":"Same as above","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":144,"context_line":"        middleware, req \u003d self._config_process_fail()"},{"line_number":145,"context_line":"        middleware.process_request(req)"},{"line_number":146,"context_line":""},{"line_number":147,"context_line":"    def test_process_response_fail(self):"},{"line_number":148,"context_line":"        middleware, req \u003d self._config_process_fail()"},{"line_number":149,"context_line":"        middleware.process_response(req, webob.response.Response())"},{"line_number":150,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_5b9ea108","line":147,"in_reply_to":"fa98f980_ce230603","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            # Check GET/PUT request does not send notification"},{"line_number":163,"context_line":"            middleware(req)"},{"line_number":164,"context_line":"            middleware(req1)"},{"line_number":165,"context_line":"            self.assertEqual(len(notify.call_args_list), 0)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"            # Check non-GET/PUT request does send notification"},{"line_number":168,"context_line":"            middleware(req2)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_0eec2eba","line":165,"updated":"2014-09-05 21:56:41.000000000","message":"Reverse the order here. The order should be (expected, observed).","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":162,"context_line":"            # Check GET/PUT request does not send notification"},{"line_number":163,"context_line":"            middleware(req)"},{"line_number":164,"context_line":"            middleware(req1)"},{"line_number":165,"context_line":"            self.assertEqual(len(notify.call_args_list), 0)"},{"line_number":166,"context_line":""},{"line_number":167,"context_line":"            # Check non-GET/PUT request does send notification"},{"line_number":168,"context_line":"            middleware(req2)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_fb8cb5d9","line":165,"in_reply_to":"fa98f980_0eec2eba","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"            # Check non-GET/PUT request does send notification"},{"line_number":168,"context_line":"            middleware(req2)"},{"line_number":169,"context_line":"            self.assertEqual(len(notify.call_args_list), 2)"},{"line_number":170,"context_line":"            call_args \u003d notify.call_args_list[0][0]"},{"line_number":171,"context_line":"            self.assertEqual(call_args[1], \u0027audit.http.request\u0027)"},{"line_number":172,"context_line":"            self.assertEqual(call_args[2][\u0027requestPath\u0027], \u0027/accept/foo\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_2e15729b","line":169,"updated":"2014-09-05 21:56:41.000000000","message":"Order here too","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":166,"context_line":""},{"line_number":167,"context_line":"            # Check non-GET/PUT request does send notification"},{"line_number":168,"context_line":"            middleware(req2)"},{"line_number":169,"context_line":"            self.assertEqual(len(notify.call_args_list), 2)"},{"line_number":170,"context_line":"            call_args \u003d notify.call_args_list[0][0]"},{"line_number":171,"context_line":"            self.assertEqual(call_args[1], \u0027audit.http.request\u0027)"},{"line_number":172,"context_line":"            self.assertEqual(call_args[2][\u0027requestPath\u0027], \u0027/accept/foo\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_1bbb3976","line":169,"in_reply_to":"fa98f980_2e15729b","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            middleware(req2)"},{"line_number":169,"context_line":"            self.assertEqual(len(notify.call_args_list), 2)"},{"line_number":170,"context_line":"            call_args \u003d notify.call_args_list[0][0]"},{"line_number":171,"context_line":"            self.assertEqual(call_args[1], \u0027audit.http.request\u0027)"},{"line_number":172,"context_line":"            self.assertEqual(call_args[2][\u0027requestPath\u0027], \u0027/accept/foo\u0027)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"            call_args \u003d notify.call_args_list[1][0]"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_ae4162aa","line":171,"updated":"2014-09-05 21:56:41.000000000","message":"Order on these too.","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":168,"context_line":"            middleware(req2)"},{"line_number":169,"context_line":"            self.assertEqual(len(notify.call_args_list), 2)"},{"line_number":170,"context_line":"            call_args \u003d notify.call_args_list[0][0]"},{"line_number":171,"context_line":"            self.assertEqual(call_args[1], \u0027audit.http.request\u0027)"},{"line_number":172,"context_line":"            self.assertEqual(call_args[2][\u0027requestPath\u0027], \u0027/accept/foo\u0027)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"            call_args \u003d notify.call_args_list[1][0]"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_3bbe3d65","line":171,"in_reply_to":"fa98f980_ae4162aa","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            self.assertEqual(call_args[2][\u0027requestPath\u0027], \u0027/accept/foo\u0027)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"            call_args \u003d notify.call_args_list[1][0]"},{"line_number":175,"context_line":"            self.assertEqual(call_args[1], \u0027audit.http.response\u0027)"},{"line_number":176,"context_line":"            self.assertEqual(call_args[2][\u0027requestPath\u0027], \u0027/accept/foo\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_ee47eab9","line":175,"updated":"2014-09-05 21:56:41.000000000","message":"Order on these too.","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            self.assertEqual(call_args[2][\u0027requestPath\u0027], \u0027/accept/foo\u0027)"},{"line_number":173,"context_line":""},{"line_number":174,"context_line":"            call_args \u003d notify.call_args_list[1][0]"},{"line_number":175,"context_line":"            self.assertEqual(call_args[1], \u0027audit.http.response\u0027)"},{"line_number":176,"context_line":"            self.assertEqual(call_args[2][\u0027requestPath\u0027], \u0027/accept/foo\u0027)"}],"source_content_type":"text/x-python","patch_set":7,"id":"fa98f980_9bae492e","line":175,"in_reply_to":"fa98f980_ee47eab9","updated":"2014-09-18 19:19:30.000000000","message":"Done","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class FakeFailingApp(object):"},{"line_number":36,"context_line":"    def __call__(self, env, start_response):"},{"line_number":37,"context_line":"        raise Exception(\"It happens!\")"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"@mock.patch(\u0027oslo.messaging.get_transport\u0027, mock.MagicMock())"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_5ec94a59","line":37,"updated":"2014-11-20 00:38:25.000000000","message":"use \u0027 for strings consistently","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":34,"context_line":""},{"line_number":35,"context_line":"class FakeFailingApp(object):"},{"line_number":36,"context_line":"    def __call__(self, env, start_response):"},{"line_number":37,"context_line":"        raise Exception(\"It happens!\")"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"@mock.patch(\u0027oslo.messaging.get_transport\u0027, mock.MagicMock())"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_e37e6469","line":37,"in_reply_to":"5a890539_5ec94a59","updated":"2014-11-24 18:34:13.000000000","message":"Done","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                       \u0027HTTP_X_USER_ID\u0027: \u0027user_id\u0027,"},{"line_number":66,"context_line":"                       \u0027HTTP_X_USER_NAME\u0027: \u0027user_name\u0027,"},{"line_number":67,"context_line":"                       \u0027HTTP_X_AUTH_TOKEN\u0027: \u0027token\u0027,"},{"line_number":68,"context_line":"                       \u0027HTTP_X_PROJECT_ID\u0027: \u0027tenant_id\u0027,"},{"line_number":69,"context_line":"                       \u0027HTTP_X_IDENTITY_STATUS\u0027: \u0027Confirmed\u0027}"},{"line_number":70,"context_line":"        env_headers[\u0027REQUEST_METHOD\u0027] \u003d req_type"},{"line_number":71,"context_line":"        return env_headers"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_be1ceec2","line":68,"updated":"2014-11-20 00:38:25.000000000","message":"what about HTTP_X_DOMAIN_ID?","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":65,"context_line":"                       \u0027HTTP_X_USER_ID\u0027: \u0027user_id\u0027,"},{"line_number":66,"context_line":"                       \u0027HTTP_X_USER_NAME\u0027: \u0027user_name\u0027,"},{"line_number":67,"context_line":"                       \u0027HTTP_X_AUTH_TOKEN\u0027: \u0027token\u0027,"},{"line_number":68,"context_line":"                       \u0027HTTP_X_PROJECT_ID\u0027: \u0027tenant_id\u0027,"},{"line_number":69,"context_line":"                       \u0027HTTP_X_IDENTITY_STATUS\u0027: \u0027Confirmed\u0027}"},{"line_number":70,"context_line":"        env_headers[\u0027REQUEST_METHOD\u0027] \u003d req_type"},{"line_number":71,"context_line":"        return env_headers"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_15c56a8d","line":68,"in_reply_to":"5a890539_be1ceec2","updated":"2014-11-24 18:34:13.000000000","message":"this isn\u0027t part of audit currently... i could add it but i\u0027d need a place in audit message to logically put it.","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            # Check GET/PUT request does not send notification"},{"line_number":161,"context_line":"            middleware(req)"},{"line_number":162,"context_line":"            middleware(req1)"},{"line_number":163,"context_line":"            self.assertEqual(0, len(notify.call_args_list))"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"            # Check non-GET/PUT request does send notification"},{"line_number":166,"context_line":"            middleware(req2)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_fecbd61b","line":163,"updated":"2014-11-20 00:38:25.000000000","message":"use self.assertEqual([], notify.call_args_list) so there\u0027s a better message when it fails.","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":160,"context_line":"            # Check GET/PUT request does not send notification"},{"line_number":161,"context_line":"            middleware(req)"},{"line_number":162,"context_line":"            middleware(req1)"},{"line_number":163,"context_line":"            self.assertEqual(0, len(notify.call_args_list))"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"            # Check non-GET/PUT request does send notification"},{"line_number":166,"context_line":"            middleware(req2)"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_635c341a","line":163,"in_reply_to":"5a890539_fecbd61b","updated":"2014-11-24 18:34:13.000000000","message":"Done","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"a3fa8c2d69afd30556a71ecfe50342db27957a6c","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"            # Check non-GET/PUT request does send notification"},{"line_number":166,"context_line":"            middleware(req2)"},{"line_number":167,"context_line":"            self.assertEqual(2, len(notify.call_args_list))"},{"line_number":168,"context_line":"            call_args \u003d notify.call_args_list[0][0]"},{"line_number":169,"context_line":"            self.assertEqual(\u0027audit.http.request\u0027, call_args[1])"},{"line_number":170,"context_line":"            self.assertEqual(\u0027/accept/foo\u0027, call_args[2][\u0027requestPath\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_7ed7e6bf","line":167,"updated":"2014-11-20 00:38:25.000000000","message":"There\u0027s a HasLength matcher in testtools that should be used to check the length. There\u0027ll be a better message if it fails.","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"a9e5f771e12376a5fe0841bfbb58faa3d1f6d342","unresolved":false,"context_lines":[{"line_number":164,"context_line":""},{"line_number":165,"context_line":"            # Check non-GET/PUT request does send notification"},{"line_number":166,"context_line":"            middleware(req2)"},{"line_number":167,"context_line":"            self.assertEqual(2, len(notify.call_args_list))"},{"line_number":168,"context_line":"            call_args \u003d notify.call_args_list[0][0]"},{"line_number":169,"context_line":"            self.assertEqual(\u0027audit.http.request\u0027, call_args[1])"},{"line_number":170,"context_line":"            self.assertEqual(\u0027/accept/foo\u0027, call_args[2][\u0027requestPath\u0027])"}],"source_content_type":"text/x-python","patch_set":18,"id":"5a890539_435f380f","line":167,"in_reply_to":"5a890539_7ed7e6bf","updated":"2014-11-24 18:34:13.000000000","message":"Done","commit_id":"1b5123822191121017a9acd934d411ad072c45c4"}],"requirements.txt":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"0638e09ecf7fae536fc3ae19c727932b25d46bad","unresolved":false,"context_lines":[{"line_number":2,"context_line":"iso8601\u003e\u003d0.1.9"},{"line_number":3,"context_line":"netaddr\u003e\u003d0.7.6"},{"line_number":4,"context_line":"oslo.config\u003e\u003d1.4.0.0a3"},{"line_number":5,"context_line":"oslo.messaging\u003e\u003d1.4.0.0a3"},{"line_number":6,"context_line":"pbr\u003e\u003d0.6,!\u003d0.7,\u003c1.0"},{"line_number":7,"context_line":"pycadf\u003e\u003d0.5.1"},{"line_number":8,"context_line":"python-keystoneclient\u003e\u003d0.10.0"}],"source_content_type":"text/plain","patch_set":7,"id":"fa98f980_ee18ca1f","line":5,"updated":"2014-09-05 21:56:41.000000000","message":"This doesn\u0027t work on Py3","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"720ba8a4ba40fecf00458e1ca08394a8875be137","unresolved":false,"context_lines":[{"line_number":2,"context_line":"iso8601\u003e\u003d0.1.9"},{"line_number":3,"context_line":"netaddr\u003e\u003d0.7.6"},{"line_number":4,"context_line":"oslo.config\u003e\u003d1.4.0.0a3"},{"line_number":5,"context_line":"oslo.messaging\u003e\u003d1.4.0.0a3"},{"line_number":6,"context_line":"pbr\u003e\u003d0.6,!\u003d0.7,\u003c1.0"},{"line_number":7,"context_line":"pycadf\u003e\u003d0.5.1"},{"line_number":8,"context_line":"python-keystoneclient\u003e\u003d0.10.0"}],"source_content_type":"text/plain","patch_set":7,"id":"fa98f980_5b43016c","line":5,"in_reply_to":"fa98f980_ee18ca1f","updated":"2014-09-18 19:19:30.000000000","message":"1.4.0 will be compliant... (or so it seems)","commit_id":"2f027d7c3f5b75f18c10ce9f702d507dc92b0101"}]}
