)]}'
{"keystonemiddleware/audit.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"73f050a3d10d3fa3247bf00de234deecce0e8f83","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        if HEAD, assume read action."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        \"\"\""},{"line_number":144,"context_line":"        path \u003d req.path[:-1] if req.path.endswith(\u0027/\u0027) else req.path"},{"line_number":145,"context_line":"        url_ending \u003d self._clean_path(path[path.rfind(\u0027/\u0027) + 1:])"},{"line_number":146,"context_line":"        method \u003d req.method"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_d673d37d","line":144,"updated":"2015-02-05 07:53:17.000000000","message":"i guess you plan on using the new pycadf helpers here? (eventually)","commit_id":"96609ddae3cba008d63c28de9cceaf7a4b183f78"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"ee837b486f59355510a68f27fbf80c71c58ecdb3","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        if HEAD, assume read action."},{"line_number":142,"context_line":""},{"line_number":143,"context_line":"        \"\"\""},{"line_number":144,"context_line":"        path \u003d req.path[:-1] if req.path.endswith(\u0027/\u0027) else req.path"},{"line_number":145,"context_line":"        url_ending \u003d self._clean_path(path[path.rfind(\u0027/\u0027) + 1:])"},{"line_number":146,"context_line":"        method \u003d req.method"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_ddf58fed","line":144,"in_reply_to":"da86d52c_d673d37d","updated":"2015-02-05 22:15:55.000000000","message":"possibly... it is very specific to this middleware though.","commit_id":"96609ddae3cba008d63c28de9cceaf7a4b183f78"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"73f050a3d10d3fa3247bf00de234deecce0e8f83","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                endp[\u0027type\u0027],"},{"line_number":187,"context_line":"                taxonomy.UNKNOWN),"},{"line_number":188,"context_line":"            name\u003dendp[\u0027name\u0027],"},{"line_number":189,"context_line":"            id\u003didentifier.norm_ns(endp[\u0027endpoints\u0027][0][\u0027id\u0027]),"},{"line_number":190,"context_line":"            admin_endp\u003dendpoint.Endpoint("},{"line_number":191,"context_line":"                name\u003d\u0027admin\u0027,"},{"line_number":192,"context_line":"                url\u003dendp[\u0027endpoints\u0027][0][\u0027adminURL\u0027]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_b612df06","line":189,"updated":"2015-02-05 07:53:17.000000000","message":"i still think there is a major defect in how we handle id\u0027s here, since these bugs state that endpoints do not have id\u0027s, either from templated catalogs or from keystone middleware \n\nhttps://bugs.launchpad.net/python-keystoneclient/+bug/1302970\nhttps://bugs.launchpad.net/pycadf/+bug/1347868\n\nbut another day...","commit_id":"96609ddae3cba008d63c28de9cceaf7a4b183f78"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"ee837b486f59355510a68f27fbf80c71c58ecdb3","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                endp[\u0027type\u0027],"},{"line_number":187,"context_line":"                taxonomy.UNKNOWN),"},{"line_number":188,"context_line":"            name\u003dendp[\u0027name\u0027],"},{"line_number":189,"context_line":"            id\u003didentifier.norm_ns(endp[\u0027endpoints\u0027][0][\u0027id\u0027]),"},{"line_number":190,"context_line":"            admin_endp\u003dendpoint.Endpoint("},{"line_number":191,"context_line":"                name\u003d\u0027admin\u0027,"},{"line_number":192,"context_line":"                url\u003dendp[\u0027endpoints\u0027][0][\u0027adminURL\u0027]),"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_fdfb33be","line":189,"in_reply_to":"da86d52c_b612df06","updated":"2015-02-05 22:15:55.000000000","message":"Done","commit_id":"96609ddae3cba008d63c28de9cceaf7a4b183f78"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"73f050a3d10d3fa3247bf00de234deecce0e8f83","unresolved":false,"context_lines":[{"line_number":215,"context_line":"            prev_key \u003d key"},{"line_number":216,"context_line":"        return service_type + type_uri"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"    def _build_target(self, req, service):"},{"line_number":219,"context_line":"        \"\"\"Build target resource.\"\"\""},{"line_number":220,"context_line":"        target_typeURI \u003d ("},{"line_number":221,"context_line":"            self._build_typeURI(req, service.type)"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_96db1b4e","line":218,"updated":"2015-02-05 07:53:17.000000000","message":"nice way to break up the old create_event","commit_id":"96609ddae3cba008d63c28de9cceaf7a4b183f78"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"73f050a3d10d3fa3247bf00de234deecce0e8f83","unresolved":false,"context_lines":[{"line_number":359,"context_line":"            outcome\u003dtaxonomy.OUTCOME_PENDING,"},{"line_number":360,"context_line":"            action\u003daction,"},{"line_number":361,"context_line":"            initiator\u003dinitiator,"},{"line_number":362,"context_line":"            target\u003dself._cadf_audit.get_target_resource(req),"},{"line_number":363,"context_line":"            observer\u003dresource.Resource(id\u003d\u0027target\u0027))"},{"line_number":364,"context_line":"        event.requestPath \u003d req.path_qs"},{"line_number":365,"context_line":"        event.add_tag(tag.generate_name_value_tag(\u0027correlation_id\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_16abab75","line":362,"updated":"2015-02-05 07:53:17.000000000","message":"maybe before event is created you can set\n\n  target \u003d self._cadf_audit.get_target_resource(req)\n\nmight be easier for debugging/logging","commit_id":"96609ddae3cba008d63c28de9cceaf7a4b183f78"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"ee837b486f59355510a68f27fbf80c71c58ecdb3","unresolved":false,"context_lines":[{"line_number":359,"context_line":"            outcome\u003dtaxonomy.OUTCOME_PENDING,"},{"line_number":360,"context_line":"            action\u003daction,"},{"line_number":361,"context_line":"            initiator\u003dinitiator,"},{"line_number":362,"context_line":"            target\u003dself._cadf_audit.get_target_resource(req),"},{"line_number":363,"context_line":"            observer\u003dresource.Resource(id\u003d\u0027target\u0027))"},{"line_number":364,"context_line":"        event.requestPath \u003d req.path_qs"},{"line_number":365,"context_line":"        event.add_tag(tag.generate_name_value_tag(\u0027correlation_id\u0027,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_9d8eb72c","line":362,"in_reply_to":"da86d52c_16abab75","updated":"2015-02-05 22:15:55.000000000","message":"Done","commit_id":"96609ddae3cba008d63c28de9cceaf7a4b183f78"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"73f050a3d10d3fa3247bf00de234deecce0e8f83","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        event.add_tag(tag.generate_name_value_tag(\u0027correlation_id\u0027,"},{"line_number":366,"context_line":"                                                  correlation_id))"},{"line_number":367,"context_line":"        # cache model in request to allow tracking of transistive steps."},{"line_number":368,"context_line":"        req.environ[\u0027cadf_event\u0027] \u003d event"},{"line_number":369,"context_line":"        return event"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    @_log_and_ignore_error"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_96331b61","line":368,"updated":"2015-02-05 07:53:17.000000000","message":"I\u0027m wondering if we want to let the caller append event to the request? but it is a private method, so i guess  it\u0027s okay","commit_id":"96609ddae3cba008d63c28de9cceaf7a4b183f78"},{"author":{"_account_id":6537,"name":"gordon chung","email":"gord@live.ca","username":"chungg"},"change_message_id":"ee837b486f59355510a68f27fbf80c71c58ecdb3","unresolved":false,"context_lines":[{"line_number":365,"context_line":"        event.add_tag(tag.generate_name_value_tag(\u0027correlation_id\u0027,"},{"line_number":366,"context_line":"                                                  correlation_id))"},{"line_number":367,"context_line":"        # cache model in request to allow tracking of transistive steps."},{"line_number":368,"context_line":"        req.environ[\u0027cadf_event\u0027] \u003d event"},{"line_number":369,"context_line":"        return event"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"    @_log_and_ignore_error"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_9da797bc","line":368,"in_reply_to":"da86d52c_96331b61","updated":"2015-02-05 22:15:55.000000000","message":"it should be ok. i think it\u0027s common to append stuff to req environ.","commit_id":"96609ddae3cba008d63c28de9cceaf7a4b183f78"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"e2e879f0ed6ade265e1115de058fe82342ca3b02","unresolved":false,"context_lines":[{"line_number":186,"context_line":"                endp[\u0027type\u0027],"},{"line_number":187,"context_line":"                taxonomy.UNKNOWN),"},{"line_number":188,"context_line":"            name\u003dendp[\u0027name\u0027],"},{"line_number":189,"context_line":"            id\u003didentifier.norm_ns(endp[\u0027endpoints\u0027][0]get(\u0027id\u0027, endp[\u0027name\u0027])),"},{"line_number":190,"context_line":"            admin_endp\u003dendpoint.Endpoint("},{"line_number":191,"context_line":"                name\u003d\u0027admin\u0027,"},{"line_number":192,"context_line":"                url\u003dendp[\u0027endpoints\u0027][0][\u0027adminURL\u0027]),"}],"source_content_type":"text/x-python","patch_set":5,"id":"da86d52c_e322b2a1","line":189,"updated":"2015-02-05 23:00:34.000000000","message":"missing a period here","commit_id":"f443f24b998e2f658315930a6f7556c668f7cc2e"}]}
