)]}'
{"keystone/token/controllers.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c3abaf91ddb05ecb277da1fa0d869332658bb680","unresolved":false,"context_lines":[{"line_number":179,"context_line":"            v3_token_data \u003d self.token_provider_api.validate_v3_token("},{"line_number":180,"context_line":"                old_token"},{"line_number":181,"context_line":"            )"},{"line_number":182,"context_line":"            v2_helper \u003d providers.common.V2TokenDataHelper()"},{"line_number":183,"context_line":"            v2_token \u003d v2_helper.v3_to_v2_token(v3_token_data, old_token)"},{"line_number":184,"context_line":"            token_model_ref \u003d token_model.KeystoneToken("},{"line_number":185,"context_line":"                token_id\u003dold_token,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_4af23d07","line":182,"updated":"2016-10-03 14:13:49.000000000","message":"suggest make this an instance variable.","commit_id":"291ab6d9218eccd9eaa02b72bf14962a551abe15"}],"keystone/token/provider.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c3abaf91ddb05ecb277da1fa0d869332658bb680","unresolved":false,"context_lines":[{"line_number":312,"context_line":"        # isn\u0027t reflexive: there is no way to populate v3 validation cache"},{"line_number":313,"context_line":"        # on issuing a token using v2.0 API."},{"line_number":314,"context_line":"        if CONF.token.cache_on_issue:"},{"line_number":315,"context_line":"            if self._needs_persistence:"},{"line_number":316,"context_line":"                validate_response \u003d self.driver.validate_v3_token(token_ref)"},{"line_number":317,"context_line":"            else:"},{"line_number":318,"context_line":"                validate_response \u003d self.driver.validate_non_persistent_token("}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_6a8539cd","line":315,"updated":"2016-10-03 14:13:49.000000000","message":"this looks like a bug fix.","commit_id":"291ab6d9218eccd9eaa02b72bf14962a551abe15"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"2bf90a3e01f0f908de73bcb72e49dd3bbfebeeab","unresolved":false,"context_lines":[{"line_number":584,"context_line":"        \"\"\""},{"line_number":585,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":586,"context_line":""},{"line_number":587,"context_line":"    @abc.abstractmethod"},{"line_number":588,"context_line":"    def validate_v2_token(self, token_ref):"},{"line_number":589,"context_line":"        \"\"\"Validate the given V2 token and return the token data."},{"line_number":590,"context_line":""},{"line_number":591,"context_line":"        Must raise Unauthorized exception if unable to validate token."},{"line_number":592,"context_line":""},{"line_number":593,"context_line":"        :param token_ref: the token reference"},{"line_number":594,"context_line":"        :type token_ref: dict"},{"line_number":595,"context_line":"        :returns: token data"},{"line_number":596,"context_line":"        :raises keystone.exception.TokenNotFound: If the token doesn\u0027t exist."},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"        \"\"\""},{"line_number":599,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"    @abc.abstractmethod"},{"line_number":602,"context_line":"    def validate_non_persistent_token(self, token_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_10f39f9f","side":"PARENT","line":599,"range":{"start_line":587,"start_character":0,"end_line":599,"end_character":60},"updated":"2016-10-12 02:16:11.000000000","message":"removing a function from a base class needs a release note","commit_id":"9aec18b0f2794deb9110ba12d26e0a9c5149251a"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"29de46ba8348814e3fd0d9c6109faf93a667d5c0","unresolved":false,"context_lines":[{"line_number":596,"context_line":"        :raises keystone.exception.TokenNotFound: If the token doesn\u0027t exist."},{"line_number":597,"context_line":""},{"line_number":598,"context_line":"        \"\"\""},{"line_number":599,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"    @abc.abstractmethod"},{"line_number":602,"context_line":"    def validate_non_persistent_token(self, token_id):"}],"source_content_type":"text/x-python","patch_set":3,"id":"fa6399be_30a967e0","side":"PARENT","line":599,"in_reply_to":"fa6399be_10f39f9f","updated":"2016-10-12 14:34:49.000000000","message":"Nice catch, done!","commit_id":"9aec18b0f2794deb9110ba12d26e0a9c5149251a"}],"keystone/token/providers/common.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c3abaf91ddb05ecb277da1fa0d869332658bb680","unresolved":false,"context_lines":[{"line_number":801,"context_line":"            project_ref \u003d token_ref.get(\u0027tenant\u0027)"},{"line_number":802,"context_line":"            if project_ref:"},{"line_number":803,"context_line":"                project_id \u003d project_ref[\u0027id\u0027]"},{"line_number":804,"context_line":"            trust_id \u003d token_ref.get(\u0027trust_id\u0027)"},{"line_number":805,"context_line":"            if trust_id:"},{"line_number":806,"context_line":"                trust_ref \u003d self.trust_api.get_trust(trust_id)"},{"line_number":807,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a98d1f4_aa52e164","line":804,"updated":"2016-10-03 14:13:49.000000000","message":"looks like a bug fix.","commit_id":"291ab6d9218eccd9eaa02b72bf14962a551abe15"}]}
