)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5164,"name":"jsimms","email":"justin.simms@gmail.com","username":"jsimms"},"change_message_id":"9ce452bfd0eb94fcae4456106b819aeb07dc62c3","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Notification Constant Cleanup and internal notify type"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added a new notification type \u0027interna\u0027 that will never be public"},{"line_number":10,"context_line":"which is utilized for communicating certain things exclusively to the"},{"line_number":11,"context_line":"notification callback system where there is no overlap with the"},{"line_number":12,"context_line":"public notifications (to be put on the bus) or if there are special"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1abeadc6_eccdafb8","line":9,"updated":"2014-08-20 14:15:10.000000000","message":"\u0027internal\u0027 is misspelled","commit_id":"6d121c65d258db8f606ad154bf65ab40a2cbdc30"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"84fefd3bed14fd365213912d5c7d98adc34ebb9d","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Notification Constant Cleanup and internal notify type"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added a new notification type \u0027interna\u0027 that will never be public"},{"line_number":10,"context_line":"which is utilized for communicating certain things exclusively to the"},{"line_number":11,"context_line":"notification callback system where there is no overlap with the"},{"line_number":12,"context_line":"public notifications (to be put on the bus) or if there are special"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"1abeadc6_621e03bd","line":9,"in_reply_to":"1abeadc6_eccdafb8","updated":"2014-08-20 17:15:11.000000000","message":"Fixed in next patch.","commit_id":"6d121c65d258db8f606ad154bf65ab40a2cbdc30"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"56a7583fe85c5f500389f16b5fa63df445cab887","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Morgan Fainberg \u003cmorgan.fainberg@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-08-25 21:11:29 -0700"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Notification Constant Cleanup and internal notify type"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Added a new notification type \u0027internal\u0027 that will never be public"},{"line_number":10,"context_line":"which is utilized for communicating certain things exclusively to the"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":9,"id":"1abeadc6_eac85877","line":7,"updated":"2014-08-27 00:26:13.000000000","message":"that there\u0027s an \"and\" in the title means this should be split up.","commit_id":"737befd80a3863cfe55f7186f3db795fac7a999e"}],"keystone/contrib/revoke/core.py":[{"author":{"_account_id":5164,"name":"jsimms","email":"justin.simms@gmail.com","username":"jsimms"},"change_message_id":"9ce452bfd0eb94fcae4456106b819aeb07dc62c3","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        for event, cb_info in six.iteritems(callbacks):"},{"line_number":142,"context_line":"            for cb in cb_info:"},{"line_number":143,"context_line":"                notifications.register_event_callback(event, cb[0], cb[1])"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def revoke_by_user(self, user_id):"},{"line_number":146,"context_line":"        return self.revoke(model.RevokeEvent(user_id\u003duser_id))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_2c67a7ea","line":143,"updated":"2014-08-20 14:15:10.000000000","message":"maybe add a one-line message reminded future maintainers of what cb[0] and cb[1] are. possibly even unpacking them into named variables in the for statement?","commit_id":"6d121c65d258db8f606ad154bf65ab40a2cbdc30"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"84fefd3bed14fd365213912d5c7d98adc34ebb9d","unresolved":false,"context_lines":[{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        for event, cb_info in six.iteritems(callbacks):"},{"line_number":142,"context_line":"            for cb in cb_info:"},{"line_number":143,"context_line":"                notifications.register_event_callback(event, cb[0], cb[1])"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def revoke_by_user(self, user_id):"},{"line_number":146,"context_line":"        return self.revoke(model.RevokeEvent(user_id\u003duser_id))"}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_426ca735","line":143,"in_reply_to":"1abeadc6_2c67a7ea","updated":"2014-08-20 17:15:11.000000000","message":"In next patch i\u0027ll add a comment.","commit_id":"6d121c65d258db8f606ad154bf65ab40a2cbdc30"},{"author":{"_account_id":6282,"name":"Wu Wenxiang","email":"wu.wenxiang@algoblu.com","username":"wu-wenxiang"},"change_message_id":"f1f69e49e36cd62b1275944160da125fd47df8b0","unresolved":false,"context_lines":[{"line_number":141,"context_line":"        for event, cb_info in six.iteritems(callbacks):"},{"line_number":142,"context_line":"            for cb in cb_info:"},{"line_number":143,"context_line":"                notifications.register_event_callback(event, cb[0], cb[1])"},{"line_number":144,"context_line":""},{"line_number":145,"context_line":"    def revoke_by_user(self, user_id):"},{"line_number":146,"context_line":"        return self.revoke(model.RevokeEvent(user_id\u003duser_id))"},{"line_number":147,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"1abeadc6_57ef0ce9","line":144,"updated":"2014-08-20 14:42:10.000000000","message":"Agree with jsimms, cb[0] \u0026 cb[1] should be named more friendly.","commit_id":"6d121c65d258db8f606ad154bf65ab40a2cbdc30"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"238131a1266bfe691bfea82978913df3ccd0d669","unresolved":false,"context_lines":[{"line_number":126,"context_line":"            [\u0027deleted\u0027, \u0027role\u0027, self._role_callback],"},{"line_number":127,"context_line":"            [\u0027deleted\u0027, \u0027user\u0027, self._user_callback],"},{"line_number":128,"context_line":"            [\u0027disabled\u0027, \u0027user\u0027, self._user_callback],"},{"line_number":129,"context_line":"            [\u0027updated\u0027, \u0027user_password\u0027, self._user_callback],"},{"line_number":130,"context_line":"            [\u0027updated\u0027, \u0027user_removed_from_group\u0027, self._user_callback],"},{"line_number":131,"context_line":"            [\u0027deleted\u0027, \u0027project\u0027, self._project_callback],"},{"line_number":132,"context_line":"            [\u0027disabled\u0027, \u0027project\u0027, self._project_callback],"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_3de1262a","side":"PARENT","line":129,"updated":"2014-08-23 06:13:36.000000000","message":"i think you missed the two update callbacks... never mind these don\u0027t apply any longer.","commit_id":"7ea19a2f18153b21759125828ef23a8b7a1d1ac5"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cfedc2634548592a6d4f5aa53f973c3ec7cf79e1","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            notifications.INTERNAL: ["},{"line_number":136,"context_line":"                [notifications.INVALIDATE_USER_TOKEN_PERSISTENCE,"},{"line_number":137,"context_line":"                 self._user_callback]"},{"line_number":138,"context_line":"            ]"},{"line_number":139,"context_line":"        }"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        for event, cb_info in six.iteritems(callbacks):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_4a822c53","line":138,"updated":"2014-08-27 00:25:35.000000000","message":"(nit) add a trailing , so it\u0027s easier to modify.","commit_id":"737befd80a3863cfe55f7186f3db795fac7a999e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"bc1a83a715295ba5ab1cc0806275fdb2c99ddb8d","unresolved":false,"context_lines":[{"line_number":135,"context_line":"            notifications.INTERNAL: ["},{"line_number":136,"context_line":"                [notifications.INVALIDATE_USER_TOKEN_PERSISTENCE,"},{"line_number":137,"context_line":"                 self._user_callback]"},{"line_number":138,"context_line":"            ]"},{"line_number":139,"context_line":"        }"},{"line_number":140,"context_line":""},{"line_number":141,"context_line":"        for event, cb_info in six.iteritems(callbacks):"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_4aeeac8c","line":138,"in_reply_to":"1abeadc6_4a822c53","updated":"2014-08-27 00:41:54.000000000","message":"We should make a hacking rule for this if we want to be consistent (should make reviewing easier with less nits)","commit_id":"737befd80a3863cfe55f7186f3db795fac7a999e"}],"keystone/identity/core.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cfedc2634548592a6d4f5aa53f973c3ec7cf79e1","unresolved":false,"context_lines":[{"line_number":738,"context_line":""},{"line_number":739,"context_line":"    @notifications.internal(notifications.INVALIDATE_USER_TOKEN_PERSISTENCE)"},{"line_number":740,"context_line":"    def _emit_invalidate_user_token_persistence(self, user_id):"},{"line_number":741,"context_line":"        # Simply emit that the user has been removed from a group so the"},{"line_number":742,"context_line":"        # callback system can do the right thing."},{"line_number":743,"context_line":"        pass"},{"line_number":744,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_ca4abc26","line":741,"updated":"2014-08-27 00:25:35.000000000","message":"this comment needs updating since this is also used for if the password changed, etc.","commit_id":"737befd80a3863cfe55f7186f3db795fac7a999e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"bc1a83a715295ba5ab1cc0806275fdb2c99ddb8d","unresolved":false,"context_lines":[{"line_number":738,"context_line":""},{"line_number":739,"context_line":"    @notifications.internal(notifications.INVALIDATE_USER_TOKEN_PERSISTENCE)"},{"line_number":740,"context_line":"    def _emit_invalidate_user_token_persistence(self, user_id):"},{"line_number":741,"context_line":"        # Simply emit that the user has been removed from a group so the"},{"line_number":742,"context_line":"        # callback system can do the right thing."},{"line_number":743,"context_line":"        pass"},{"line_number":744,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_2af7b05a","line":741,"in_reply_to":"1abeadc6_ca4abc26","updated":"2014-08-27 00:41:54.000000000","message":"Sure. Will make the comment more clear.","commit_id":"737befd80a3863cfe55f7186f3db795fac7a999e"}],"keystone/notifications.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"238131a1266bfe691bfea82978913df3ccd0d669","unresolved":false,"context_lines":[{"line_number":123,"context_line":"def internal(*args, **kwargs):"},{"line_number":124,"context_line":"    \"\"\"Decorator to send notifications for internal notifications only.\"\"\""},{"line_number":125,"context_line":"    kwargs[\u0027public\u0027] \u003d False"},{"line_number":126,"context_line":"    return ManagerNotificationWrapper(\u0027internal\u0027, *args, **kwargs)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def _get_callback_info(callback):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_bd5a96ef","line":126,"updated":"2014-08-23 06:13:36.000000000","message":"nit, if you\u0027re cleaning it up, you can change this (and the others) to use the constants you created up top.","commit_id":"9029a7c58aaa320b7cac885635d6e30c36001e24"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"05e779f8dda6f0d2ddfd266ddc348aa55602a352","unresolved":false,"context_lines":[{"line_number":123,"context_line":"def internal(*args, **kwargs):"},{"line_number":124,"context_line":"    \"\"\"Decorator to send notifications for internal notifications only.\"\"\""},{"line_number":125,"context_line":"    kwargs[\u0027public\u0027] \u003d False"},{"line_number":126,"context_line":"    return ManagerNotificationWrapper(\u0027internal\u0027, *args, **kwargs)"},{"line_number":127,"context_line":""},{"line_number":128,"context_line":""},{"line_number":129,"context_line":"def _get_callback_info(callback):"}],"source_content_type":"text/x-python","patch_set":5,"id":"1abeadc6_ba498990","line":126,"in_reply_to":"1abeadc6_bd5a96ef","updated":"2014-08-25 18:28:43.000000000","message":"Done in next","commit_id":"9029a7c58aaa320b7cac885635d6e30c36001e24"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"cfedc2634548592a6d4f5aa53f973c3ec7cf79e1","unresolved":false,"context_lines":[{"line_number":38,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":39,"context_line":"# NOTE(gyee): actions that can be notified. One must update this list whenever"},{"line_number":40,"context_line":"# a new action is supported."},{"line_number":41,"context_line":"CREATED \u003d \u0027created\u0027"},{"line_number":42,"context_line":"DELETED \u003d \u0027deleted\u0027"},{"line_number":43,"context_line":"DISABLED \u003d \u0027disabled\u0027"},{"line_number":44,"context_line":"UPDATED \u003d \u0027updated\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_ca71dc78","line":41,"updated":"2014-08-27 00:25:35.000000000","message":"(suggestion) these should be like\n\nclass Action:\n    CREATED \u003d \u0027created\u0027\n    ...\n\nthis will put it into a namespace.\n\nAlso, I\u0027d rather this was done in a commit separate than the addition of the internal action.","commit_id":"737befd80a3863cfe55f7186f3db795fac7a999e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"bc1a83a715295ba5ab1cc0806275fdb2c99ddb8d","unresolved":false,"context_lines":[{"line_number":38,"context_line":"LOG \u003d log.getLogger(__name__)"},{"line_number":39,"context_line":"# NOTE(gyee): actions that can be notified. One must update this list whenever"},{"line_number":40,"context_line":"# a new action is supported."},{"line_number":41,"context_line":"CREATED \u003d \u0027created\u0027"},{"line_number":42,"context_line":"DELETED \u003d \u0027deleted\u0027"},{"line_number":43,"context_line":"DISABLED \u003d \u0027disabled\u0027"},{"line_number":44,"context_line":"UPDATED \u003d \u0027updated\u0027"}],"source_content_type":"text/x-python","patch_set":9,"id":"1abeadc6_aaa2e048","line":41,"in_reply_to":"1abeadc6_ca71dc78","updated":"2014-08-27 00:41:54.000000000","message":"Fair enough. done in the next patch.","commit_id":"737befd80a3863cfe55f7186f3db795fac7a999e"}]}
