)]}'
{"anchor/audit/__init__.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"159331dc0d1388c586234326e08e5e059d062e70","unresolved":false,"context_lines":[{"line_number":32,"context_line":""},{"line_number":33,"context_line":"def _event_defaults(result):"},{"line_number":34,"context_line":"    return {"},{"line_number":35,"context_line":"        \u0027eventType\u0027: cadftype.EVENTTYPE_ACTIVITY,"},{"line_number":36,"context_line":"        \u0027id\u0027: identifier.generate_uuid(),"},{"line_number":37,"context_line":"        \u0027eventTime\u0027: timestamp.get_utc_now(),"},{"line_number":38,"context_line":"        \u0027outcome\u0027: (cadftaxonomy.OUTCOME_SUCCESS if result else"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_96976b8f","line":35,"updated":"2015-09-24 06:36:33.000000000","message":"this is the default type so there\u0027s no need to pass this in unless you want to be explicit. https://github.com/openstack/pycadf/blob/master/pycadf/event.py#L106","commit_id":"10ee2943c6eaf8505dc32be6287ba5b42ef76b1e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"159331dc0d1388c586234326e08e5e059d062e70","unresolved":false,"context_lines":[{"line_number":33,"context_line":"def _event_defaults(result):"},{"line_number":34,"context_line":"    return {"},{"line_number":35,"context_line":"        \u0027eventType\u0027: cadftype.EVENTTYPE_ACTIVITY,"},{"line_number":36,"context_line":"        \u0027id\u0027: identifier.generate_uuid(),"},{"line_number":37,"context_line":"        \u0027eventTime\u0027: timestamp.get_utc_now(),"},{"line_number":38,"context_line":"        \u0027outcome\u0027: (cadftaxonomy.OUTCOME_SUCCESS if result else"},{"line_number":39,"context_line":"                    cadftaxonomy.OUTCOME_FAILURE),"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_565f930e","line":36,"updated":"2015-09-24 06:36:33.000000000","message":"you probably don\u0027t need this, if pycadf doesn\u0027t see this value, it\u0027ll generate one for you anyway.\n\nhttps://github.com/openstack/pycadf/blob/master/pycadf/event.py#L134-L135","commit_id":"10ee2943c6eaf8505dc32be6287ba5b42ef76b1e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"159331dc0d1388c586234326e08e5e059d062e70","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    return {"},{"line_number":35,"context_line":"        \u0027eventType\u0027: cadftype.EVENTTYPE_ACTIVITY,"},{"line_number":36,"context_line":"        \u0027id\u0027: identifier.generate_uuid(),"},{"line_number":37,"context_line":"        \u0027eventTime\u0027: timestamp.get_utc_now(),"},{"line_number":38,"context_line":"        \u0027outcome\u0027: (cadftaxonomy.OUTCOME_SUCCESS if result else"},{"line_number":39,"context_line":"                    cadftaxonomy.OUTCOME_FAILURE),"},{"line_number":40,"context_line":"        }"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_d6a163f8","line":37,"updated":"2015-09-24 06:36:33.000000000","message":"same with time:\n\nhttps://github.com/openstack/pycadf/blob/master/pycadf/event.py#L137-L139","commit_id":"10ee2943c6eaf8505dc32be6287ba5b42ef76b1e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"159331dc0d1388c586234326e08e5e059d062e70","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def _user_resource(username):"},{"line_number":44,"context_line":"    return resource.Resource("},{"line_number":45,"context_line":"        id\u003didentifier.generate_uuid(),  # we don\u0027t have stable mapping to user"},{"line_number":46,"context_line":"        typeURI\u003dcadftaxonomy.ACCOUNT_USER,"},{"line_number":47,"context_line":"        name\u003dusername)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_d6ef231b","line":45,"updated":"2015-09-24 06:36:33.000000000","message":"maybe instead create a URL safe version of the name as the ID? just a thought, it\u0027ll be more meaningful than just a random ID","commit_id":"10ee2943c6eaf8505dc32be6287ba5b42ef76b1e"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"c939f195a1da3d14ff59ddae1efdaa1bbcb2ff7f","unresolved":false,"context_lines":[{"line_number":42,"context_line":""},{"line_number":43,"context_line":"def _user_resource(username):"},{"line_number":44,"context_line":"    return resource.Resource("},{"line_number":45,"context_line":"        id\u003didentifier.generate_uuid(),  # we don\u0027t have stable mapping to user"},{"line_number":46,"context_line":"        typeURI\u003dcadftaxonomy.ACCOUNT_USER,"},{"line_number":47,"context_line":"        name\u003dusername)"},{"line_number":48,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"5a2ca52d_e71d5c74","line":45,"in_reply_to":"ba15a1d1_d6ef231b","updated":"2015-10-14 06:30:38.000000000","message":"This is not possible in case of keystone currently. (only token is known) Maybe we can extract the name from the keystone response? I\u0027ll keep it as a TODO for now.","commit_id":"10ee2943c6eaf8505dc32be6287ba5b42ef76b1e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8ff6868595c731224ad1d8fbe9363ca8e9f3a397","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        logger.error(\"created invalid audit event: %s\", ev)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def _event_defaults(result):"},{"line_number":32,"context_line":"    # eventType, id, eventTime are filled in automatically by pyCADF"},{"line_number":33,"context_line":"    return {"},{"line_number":34,"context_line":"        \u0027outcome\u0027: (cadftaxonomy.OUTCOME_SUCCESS if result else"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_4aa503a0","line":31,"updated":"2015-10-15 05:10:06.000000000","message":"maybe rename this to _event_outcome?","commit_id":"fc9f4a44ffdcbfe1ad5b0691baa06bb2e704027f"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"45d111d30685aac4c0be3d7cabe7d900d61b3069","unresolved":false,"context_lines":[{"line_number":28,"context_line":"        logger.error(\"created invalid audit event: %s\", ev)"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"def _event_defaults(result):"},{"line_number":32,"context_line":"    # eventType, id, eventTime are filled in automatically by pyCADF"},{"line_number":33,"context_line":"    return {"},{"line_number":34,"context_line":"        \u0027outcome\u0027: (cadftaxonomy.OUTCOME_SUCCESS if result else"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_753784e3","line":31,"in_reply_to":"5a2ca52d_4aa503a0","updated":"2015-10-15 05:32:41.000000000","message":"The intention here is to specify the defaults. If more come up, they should be added here. That it\u0027s just the outcome at the moment is a coincidence. Other defaults are listed in the comment.","commit_id":"fc9f4a44ffdcbfe1ad5b0691baa06bb2e704027f"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8ff6868595c731224ad1d8fbe9363ca8e9f3a397","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def emit_auth_event(ra_name, username, result):"},{"line_number":74,"context_line":"    params \u003d _event_defaults(result)"},{"line_number":75,"context_line":"    params[\u0027action\u0027] \u003d \u0027authenticate\u0027"},{"line_number":76,"context_line":"    params[\u0027initiator\u0027] \u003d _user_resource(username)"},{"line_number":77,"context_line":"    auth_res \u003d _auth_resource(ra_name)"},{"line_number":78,"context_line":"    params[\u0027observer\u0027] \u003d auth_res"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_4a7e631a","line":75,"updated":"2015-10-15 05:10:06.000000000","message":"you can open a bug against pycadf to make \u0027authenticate\u0027 and \u0027evaluate\u0027 available in https://github.com/openstack/pycadf/blob/0357568a41e34bb8b5dc3e78dcf72949cc1d4c23/pycadf/cadftaxonomy.py","commit_id":"fc9f4a44ffdcbfe1ad5b0691baa06bb2e704027f"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"45d111d30685aac4c0be3d7cabe7d900d61b3069","unresolved":false,"context_lines":[{"line_number":72,"context_line":""},{"line_number":73,"context_line":"def emit_auth_event(ra_name, username, result):"},{"line_number":74,"context_line":"    params \u003d _event_defaults(result)"},{"line_number":75,"context_line":"    params[\u0027action\u0027] \u003d \u0027authenticate\u0027"},{"line_number":76,"context_line":"    params[\u0027initiator\u0027] \u003d _user_resource(username)"},{"line_number":77,"context_line":"    auth_res \u003d _auth_resource(ra_name)"},{"line_number":78,"context_line":"    params[\u0027observer\u0027] \u003d auth_res"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_55436842","line":75,"in_reply_to":"5a2ca52d_4a7e631a","updated":"2015-10-15 05:32:41.000000000","message":"Will do.","commit_id":"fc9f4a44ffdcbfe1ad5b0691baa06bb2e704027f"}],"anchor/controllers/__init__.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"159331dc0d1388c586234326e08e5e059d062e70","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import pecan"},{"line_number":17,"context_line":"from pecan import rest"},{"line_number":18,"context_line":"from webob import exc as http_status"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from anchor import audit"},{"line_number":21,"context_line":"from anchor import auth"}],"source_content_type":"text/x-python","patch_set":3,"id":"ba15a1d1_d3e415a9","line":18,"updated":"2015-09-24 06:36:33.000000000","message":"webob isn\u0027t in requirements right now so you\u0027d have to add that too.","commit_id":"10ee2943c6eaf8505dc32be6287ba5b42ef76b1e"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"c939f195a1da3d14ff59ddae1efdaa1bbcb2ff7f","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import pecan"},{"line_number":17,"context_line":"from pecan import rest"},{"line_number":18,"context_line":"from webob import exc as http_status"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from anchor import audit"},{"line_number":21,"context_line":"from anchor import auth"}],"source_content_type":"text/x-python","patch_set":3,"id":"5a2ca52d_4ade956e","line":18,"in_reply_to":"ba15a1d1_d3e415a9","updated":"2015-10-14 06:30:38.000000000","message":"It\u0027s always included with pecan, but yeah, it should be done for completeness.","commit_id":"10ee2943c6eaf8505dc32be6287ba5b42ef76b1e"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8ff6868595c731224ad1d8fbe9363ca8e9f3a397","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import pecan"},{"line_number":17,"context_line":"from pecan import rest"},{"line_number":18,"context_line":"from webob import exc as http_status"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from anchor import audit"},{"line_number":21,"context_line":"from anchor import auth"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_cadef310","line":18,"updated":"2015-10-15 05:10:06.000000000","message":"same comment as before, webob should be added to requirements","commit_id":"fc9f4a44ffdcbfe1ad5b0691baa06bb2e704027f"},{"author":{"_account_id":1528,"name":"Stanislaw Pitucha","email":"viraptor@gmail.com","username":"stanislaw-pitucha"},"change_message_id":"45d111d30685aac4c0be3d7cabe7d900d61b3069","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import pecan"},{"line_number":17,"context_line":"from pecan import rest"},{"line_number":18,"context_line":"from webob import exc as http_status"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from anchor import audit"},{"line_number":21,"context_line":"from anchor import auth"}],"source_content_type":"text/x-python","patch_set":5,"id":"5a2ca52d_351a6c6f","line":18,"in_reply_to":"5a2ca52d_cadef310","updated":"2015-10-15 05:32:41.000000000","message":"It\u0027s in https://review.openstack.org/234591 - since pecan already depends on webob and we\u0027re using it in other places, it\u0027s not specific to the event patch.","commit_id":"fc9f4a44ffdcbfe1ad5b0691baa06bb2e704027f"}]}
