)]}'
{"keystone/assignment/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a48c375fef81b6719f905436ee6378fda56fe9f0","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                                            project_id\u003dproject_id)"},{"line_number":356,"context_line":"            self._emit_revoke_user_grant("},{"line_number":357,"context_line":"                role_id, user_id, domain_id, project_id,"},{"line_number":358,"context_line":"                inherited_to_projects, context)"},{"line_number":359,"context_line":"        else:"},{"line_number":360,"context_line":"            try:"},{"line_number":361,"context_line":"                # Group may contain a lot of users so revocation will be"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_bb928a9d","side":"PARENT","line":358,"updated":"2017-03-02 17:33:23.000000000","message":"We rebuild the token at validation time, so I\u0027m wondering if the revocation event is even needed anymore. We might be able to get away with removing the revocation events in these cases. We","commit_id":"8ea94cf4723d855ec8848943318a05a1899cf9fd"},{"author":{"_account_id":24005,"name":"prashkre","email":"prashkre@in.ibm.com","username":"prashkre"},"change_message_id":"cd889876a75e302702197ba98633c26d47563717","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                                            project_id\u003dproject_id)"},{"line_number":356,"context_line":"            self._emit_revoke_user_grant("},{"line_number":357,"context_line":"                role_id, user_id, domain_id, project_id,"},{"line_number":358,"context_line":"                inherited_to_projects, context)"},{"line_number":359,"context_line":"        else:"},{"line_number":360,"context_line":"            try:"},{"line_number":361,"context_line":"                # Group may contain a lot of users so revocation will be"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_df40fc36","side":"PARENT","line":358,"in_reply_to":"ba2be162_bb928a9d","updated":"2017-03-02 18:42:06.000000000","message":"Lance, Here revocation events are not created instead in an environment where tokens are persisted, this call send notification[0] to delete tokens which is listened by call back handler[1] and delete the tokens to invalidate them.\n\n[0] https://github.com/openstack/keystone/blob/master/keystone/identity/core.py#L1278\n[1] https://github.com/openstack/keystone/blob/master/keystone/token/provider.py#L94","commit_id":"8ea94cf4723d855ec8848943318a05a1899cf9fd"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"3703d41332e151afceb2c348052b86790907d2c8","unresolved":false,"context_lines":[{"line_number":355,"context_line":"                                            project_id\u003dproject_id)"},{"line_number":356,"context_line":"            self._emit_revoke_user_grant("},{"line_number":357,"context_line":"                role_id, user_id, domain_id, project_id,"},{"line_number":358,"context_line":"                inherited_to_projects, context)"},{"line_number":359,"context_line":"        else:"},{"line_number":360,"context_line":"            try:"},{"line_number":361,"context_line":"                # Group may contain a lot of users so revocation will be"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_cd476f75","side":"PARENT","line":358,"in_reply_to":"ba2be162_df40fc36","updated":"2017-03-02 22:37:57.000000000","message":"Ah - for some reason I always seem to get that mixed up with the callback. Thanks!","commit_id":"8ea94cf4723d855ec8848943318a05a1899cf9fd"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a48c375fef81b6719f905436ee6378fda56fe9f0","unresolved":false,"context_lines":[{"line_number":379,"context_line":"            except exception.GroupNotFound:"},{"line_number":380,"context_line":"                LOG.debug(\u0027Group %s not found, no tokens to invalidate.\u0027,"},{"line_number":381,"context_line":"                          group_id)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        # TODO(henry-nash): While having the call to get_role here mimics the"},{"line_number":384,"context_line":"        # previous behavior (when it was buried inside the driver delete call),"},{"line_number":385,"context_line":"        # this seems an odd place to have this check, given what we have"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_28057279","side":"PARENT","line":382,"updated":"2017-03-02 17:33:23.000000000","message":"Unrelated whitespace change?","commit_id":"8ea94cf4723d855ec8848943318a05a1899cf9fd"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"1a5e236f054bbfb03fbde81c3f78d46a93e69896","unresolved":false,"context_lines":[{"line_number":349,"context_line":"                     domain_id\u003dNone, project_id\u003dNone,"},{"line_number":350,"context_line":"                     inherited_to_projects\u003dFalse, context\u003dNone):"},{"line_number":351,"context_line":"        if group_id is None:"},{"line_number":352,"context_line":"            # check if role exists on the user before revoke"},{"line_number":353,"context_line":"            self.check_grant_role_id(role_id, user_id, None, domain_id,"},{"line_number":354,"context_line":"                                     project_id, inherited_to_projects)"},{"line_number":355,"context_line":"            self._emit_revoke_user_grant("}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_f2634ada","line":352,"range":{"start_line":352,"start_character":54,"end_line":352,"end_character":60},"updated":"2017-03-02 13:37:27.000000000","message":"maybe: check if role exists on the user before revoke/delete","commit_id":"2cb842cd645cbfcad4ccd62200340ce4616a8aa7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a48c375fef81b6719f905436ee6378fda56fe9f0","unresolved":false,"context_lines":[{"line_number":351,"context_line":"        if group_id is None:"},{"line_number":352,"context_line":"            # check if role exists on the user before revoke"},{"line_number":353,"context_line":"            self.check_grant_role_id(role_id, user_id, None, domain_id,"},{"line_number":354,"context_line":"                                     project_id, inherited_to_projects)"},{"line_number":355,"context_line":"            self._emit_revoke_user_grant("},{"line_number":356,"context_line":"                role_id, user_id, domain_id, project_id,"},{"line_number":357,"context_line":"                inherited_to_projects, context)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_9bd226ff","line":354,"updated":"2017-03-02 17:33:23.000000000","message":"I would pass these in as kwargs since the method signature specifies them that way.","commit_id":"2cb842cd645cbfcad4ccd62200340ce4616a8aa7"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"1a5e236f054bbfb03fbde81c3f78d46a93e69896","unresolved":false,"context_lines":[{"line_number":357,"context_line":"                inherited_to_projects, context)"},{"line_number":358,"context_line":"        else:"},{"line_number":359,"context_line":"            try:"},{"line_number":360,"context_line":"                # check if role exists on the group before revoke"},{"line_number":361,"context_line":"                self.check_grant_role_id(role_id, None, group_id, domain_id,"},{"line_number":362,"context_line":"                                         project_id, inherited_to_projects)"},{"line_number":363,"context_line":"                if CONF.token.revoke_by_id:"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_72a67a11","line":360,"range":{"start_line":360,"start_character":59,"end_line":360,"end_character":65},"updated":"2017-03-02 13:37:27.000000000","message":"revoke/delete","commit_id":"2cb842cd645cbfcad4ccd62200340ce4616a8aa7"}],"keystone/tests/unit/test_v3_assignment.py":[{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"1a5e236f054bbfb03fbde81c3f78d46a93e69896","unresolved":false,"context_lines":[{"line_number":365,"context_line":"            self.assignment_api.delete_grant(role_id\u003dself.role[\u0027id\u0027],"},{"line_number":366,"context_line":"                                             project_id\u003dself.project[\u0027id\u0027],"},{"line_number":367,"context_line":"                                             group_id\u003dself.group[\u0027id\u0027])"},{"line_number":368,"context_line":"            # revokes the direct role form user on project"},{"line_number":369,"context_line":"            self.assignment_api.delete_grant(role_id\u003dself.role[\u0027id\u0027],"},{"line_number":370,"context_line":"                                             project_id\u003dself.project[\u0027id\u0027],"},{"line_number":371,"context_line":"                                             user_id\u003dself.user[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_32bb22e7","line":368,"range":{"start_line":368,"start_character":12,"end_line":368,"end_character":58},"updated":"2017-03-02 13:37:27.000000000","message":"nice test","commit_id":"2cb842cd645cbfcad4ccd62200340ce4616a8aa7"},{"author":{"_account_id":11022,"name":"Rodrigo Duarte Sousa","email":"rodrigodsousa@gmail.com","username":"rodrigods"},"change_message_id":"1a5e236f054bbfb03fbde81c3f78d46a93e69896","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                                             project_id\u003dself.project[\u0027id\u0027],"},{"line_number":367,"context_line":"                                             group_id\u003dself.group[\u0027id\u0027])"},{"line_number":368,"context_line":"            # revokes the direct role form user on project"},{"line_number":369,"context_line":"            self.assignment_api.delete_grant(role_id\u003dself.role[\u0027id\u0027],"},{"line_number":370,"context_line":"                                             project_id\u003dself.project[\u0027id\u0027],"},{"line_number":371,"context_line":"                                             user_id\u003dself.user[\u0027id\u0027])"},{"line_number":372,"context_line":""},{"line_number":373,"context_line":"            frozen_datetime.tick(delta\u003ddatetime.timedelta(seconds\u003d1))"},{"line_number":374,"context_line":"            # validates the same token again; it should not longer be valid."}],"source_content_type":"text/x-python","patch_set":1,"id":"ba2be162_f277ca37","line":371,"range":{"start_line":369,"start_character":0,"end_line":371,"end_character":69},"updated":"2017-03-02 13:37:27.000000000","message":"not related: this test is hard to read because it uses something that is not to it [1]\n\n[1] https://testing.googleblog.com/2017/01/testing-on-toilet-keep-cause-and-effect.html","commit_id":"2cb842cd645cbfcad4ccd62200340ce4616a8aa7"}]}
