)]}'
{"keystone/token/provider.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8c85c46dda56edeeada8250daf129d5040d16a13","unresolved":false,"context_lines":[{"line_number":342,"context_line":"            raise exception.TokenNotFound(_(\u0027Failed to validate token\u0027))"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        if current_time \u003e\u003d expiry:"},{"line_number":345,"context_line":"            # The token is expired so is invalid."},{"line_number":346,"context_line":"            raise exception.TokenNotFound(_(\u0027Failed to validate token\u0027))"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        # Check the project is enabled if the token is project-scoped."}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_45af4c94","line":345,"range":{"start_line":345,"start_character":35,"end_line":345,"end_character":40},"updated":"2016-09-28 03:57:35.000000000","message":"so it is*","commit_id":"f0148c72704cee0f42774691cfd5cc9d1ebc1263"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8c85c46dda56edeeada8250daf129d5040d16a13","unresolved":false,"context_lines":[{"line_number":343,"context_line":""},{"line_number":344,"context_line":"        if current_time \u003e\u003d expiry:"},{"line_number":345,"context_line":"            # The token is expired so is invalid."},{"line_number":346,"context_line":"            raise exception.TokenNotFound(_(\u0027Failed to validate token\u0027))"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        # Check the project is enabled if the token is project-scoped."},{"line_number":349,"context_line":"        project_id \u003d None"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_459d8c58","line":346,"range":{"start_line":346,"start_character":45,"end_line":346,"end_character":69},"updated":"2016-09-28 03:57:35.000000000","message":"nit: at this point we can pull out this message and store it in a variable, and reference it when needed, it\u0027ll save on translating the same string three times","commit_id":"f0148c72704cee0f42774691cfd5cc9d1ebc1263"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8c85c46dda56edeeada8250daf129d5040d16a13","unresolved":false,"context_lines":[{"line_number":345,"context_line":"            # The token is expired so is invalid."},{"line_number":346,"context_line":"            raise exception.TokenNotFound(_(\u0027Failed to validate token\u0027))"},{"line_number":347,"context_line":""},{"line_number":348,"context_line":"        # Check the project is enabled if the token is project-scoped."},{"line_number":349,"context_line":"        project_id \u003d None"},{"line_number":350,"context_line":"        if \u0027token\u0027 in token_data:"},{"line_number":351,"context_line":"            project_id \u003d token_data[\u0027token\u0027].get(\u0027tenant\u0027, {}).get(\u0027id\u0027)"}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_05baa4c0","line":348,"range":{"start_line":348,"start_character":8,"end_line":348,"end_character":70},"updated":"2016-09-28 03:57:35.000000000","message":"do we have to check the case where a project is enabled, but the domain is disabled?","commit_id":"f0148c72704cee0f42774691cfd5cc9d1ebc1263"},{"author":{"_account_id":18338,"name":"Ron De Rose","email":"ronald.de.rose@intel.com","username":"derosenet"},"change_message_id":"16c9f69db321de26c47f57a5272b25447d42bbf3","unresolved":false,"context_lines":[{"line_number":355,"context_line":"        if project_id:"},{"line_number":356,"context_line":"            # The token is project-scoped."},{"line_number":357,"context_line":"            try:"},{"line_number":358,"context_line":"                proj_ref \u003d self.resource_api.get_project(project_id)"},{"line_number":359,"context_line":"                if not proj_ref[\u0027enabled\u0027]:"},{"line_number":360,"context_line":"                    # Project is disabled, token is invalid."},{"line_number":361,"context_line":"                    raise exception.TokenNotFound("}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_7d0aa87a","line":358,"range":{"start_line":358,"start_character":16,"end_line":358,"end_character":68},"updated":"2016-09-30 13:56:08.000000000","message":"Actually, couldn\u0027t you call get_grant(..) instead. This would check role assignment and if the project is enabled.","commit_id":"f0148c72704cee0f42774691cfd5cc9d1ebc1263"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"8c85c46dda56edeeada8250daf129d5040d16a13","unresolved":false,"context_lines":[{"line_number":364,"context_line":"                # Project doesn\u0027t exist, token is invalid."},{"line_number":365,"context_line":"                raise exception.TokenNotFound(_(\u0027Failed to validate token\u0027))"},{"line_number":366,"context_line":""},{"line_number":367,"context_line":"        self.check_revocation(token)"},{"line_number":368,"context_line":"        # Token has not expired and has not been revoked."},{"line_number":369,"context_line":"        return None"},{"line_number":370,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"5a8bc5a2_a5757033","line":367,"range":{"start_line":367,"start_character":8,"end_line":367,"end_character":36},"updated":"2016-09-28 03:57:35.000000000","message":"OK, and future patches will change check_revocation to not check the project ID, i get ya","commit_id":"f0148c72704cee0f42774691cfd5cc9d1ebc1263"}]}
