)]}'
{"keystone/conf/token.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"05bbc168953249a32967b9d1a15fd0a5d764258d","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"cache_on_issue \u003d cfg.BoolOpt("},{"line_number":161,"context_line":"    \u0027cache_on_issue\u0027,"},{"line_number":162,"context_line":"    default\u003dTrue,"},{"line_number":163,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":164,"context_line":"Enable storing issued token data to token validation cache so that first token"},{"line_number":165,"context_line":"validation doesn\u0027t actually cause full validation cycle."}],"source_content_type":"text/x-python","patch_set":19,"id":"fa7ab95a_2f6a071b","line":162,"range":{"start_line":162,"start_character":12,"end_line":162,"end_character":16},"updated":"2016-08-31 15:12:48.000000000","message":"this should probably be off by default, i believe that is what brant is asking for, for the existing behaviour to remain unchanged","commit_id":"24bc02fde66190fa50825503f8942102fbf69ece"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"5c5fece59ed8d46a69be7945aa958e5703df33aa","unresolved":false,"context_lines":[{"line_number":159,"context_line":""},{"line_number":160,"context_line":"cache_on_issue \u003d cfg.BoolOpt("},{"line_number":161,"context_line":"    \u0027cache_on_issue\u0027,"},{"line_number":162,"context_line":"    default\u003dTrue,"},{"line_number":163,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":164,"context_line":"Enable storing issued token data to token validation cache so that first token"},{"line_number":165,"context_line":"validation doesn\u0027t actually cause full validation cycle."}],"source_content_type":"text/x-python","patch_set":19,"id":"fa7ab95a_f2a3a64d","line":162,"range":{"start_line":162,"start_character":12,"end_line":162,"end_character":16},"in_reply_to":"fa7ab95a_2f6a071b","updated":"2016-08-31 15:28:25.000000000","message":"Done","commit_id":"24bc02fde66190fa50825503f8942102fbf69ece"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"fda20cc5d4b74bae6e3aebd781b5fab5a670c25a","unresolved":false,"context_lines":[{"line_number":163,"context_line":"    help\u003dutils.fmt(\"\"\""},{"line_number":164,"context_line":"Enable storing issued token data to token validation cache so that first token"},{"line_number":165,"context_line":"validation doesn\u0027t actually cause full validation cycle."},{"line_number":166,"context_line":"\"\"\"))"},{"line_number":167,"context_line":""},{"line_number":168,"context_line":"GROUP_NAME \u003d __name__.split(\u0027.\u0027)[-1]"},{"line_number":169,"context_line":"ALL_OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":21,"id":"fa7ab95a_c77177e2","line":166,"updated":"2016-08-31 18:54:45.000000000","message":"I\u0027m sorry I missed the weekly meeting, but I really don\u0027t think this needs a dedicated configuration option. Why would anyone ever want to toggle this off? Furthermore, keystone.conf should describe our recommended production defaults, and I would never recommend to a deployer that they handicap our caching implementation.","commit_id":"7260b55cfcd0f3ca7027a6ac055e72783198a34a"}],"keystone/tests/unit/test_auth.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"05bbc168953249a32967b9d1a15fd0a5d764258d","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"fa7ab95a_cf0b5b7c","updated":"2016-08-31 15:12:48.000000000","message":"i\u0027m surprised you didn\u0027t have to set the precaching option to true somewhere here","commit_id":"24bc02fde66190fa50825503f8942102fbf69ece"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"5c5fece59ed8d46a69be7945aa958e5703df33aa","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"fa7ab95a_92941ae9","in_reply_to":"fa7ab95a_cf0b5b7c","updated":"2016-08-31 15:28:25.000000000","message":"Done","commit_id":"24bc02fde66190fa50825503f8942102fbf69ece"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"3edfdabc3c8ad06c2287d759404322a7359a7f59","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"fa7ab95a_8e8e95ce","updated":"2016-09-01 03:01:05.000000000","message":"We need the testcase to test that token is cached after issued and the validation is not actually performed if the token is in cache after that. This is what this feature is about IMO.","commit_id":"7260b55cfcd0f3ca7027a6ac055e72783198a34a"}],"keystone/token/provider.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"6e20e02a438a1544452443e6b6d1f4a0f5664fae","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            LOG.debug(\u0027Unable to validate token: %s\u0027, e)"},{"line_number":288,"context_line":"            raise exception.TokenNotFound(token_id\u003dtoken_id)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @MEMOIZE"},{"line_number":291,"context_line":"    def _validate_token(self, token_id):"},{"line_number":292,"context_line":"        if not token_id:"},{"line_number":293,"context_line":"            raise exception.TokenNotFound(_(\u0027No token in the request\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_18b42080","side":"PARENT","line":290,"updated":"2016-05-31 21:22:07.000000000","message":"Previously, the 3 private token validation methods were cached... and the public validate_token() method was not... now only 2 of those are cached, along with the public method.\n\nAfter this change, v3 tokens will be cached twice, and the second cached entry will never get a hit as far as I can tell.","commit_id":"745b61200a66e9a4938661538f320aad724e616b"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"bd5a8caaf6fe1a705bf69a18ba41c433e04f9f1f","unresolved":false,"context_lines":[{"line_number":287,"context_line":"            LOG.debug(\u0027Unable to validate token: %s\u0027, e)"},{"line_number":288,"context_line":"            raise exception.TokenNotFound(token_id\u003dtoken_id)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @MEMOIZE"},{"line_number":291,"context_line":"    def _validate_token(self, token_id):"},{"line_number":292,"context_line":"        if not token_id:"},{"line_number":293,"context_line":"            raise exception.TokenNotFound(_(\u0027No token in the request\u0027))"}],"source_content_type":"text/x-python","patch_set":1,"id":"9abb7d3a_1778f38e","side":"PARENT","line":290,"in_reply_to":"9abb7d3a_18b42080","updated":"2016-06-02 18:46:20.000000000","message":"Done","commit_id":"745b61200a66e9a4938661538f320aad724e616b"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b2916b8ad18fefd6deb13f76bef23d27f9df5bd6","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            raise exception.TokenNotFound(token_id\u003dtoken_id)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @MEMOIZE"},{"line_number":291,"context_line":"    def _validate_non_persistent_token(self, token_id):"},{"line_number":292,"context_line":"        return self.validate_non_persistent_token(token_id)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    @MEMOIZE"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_a6ed7290","line":291,"range":{"start_line":291,"start_character":53,"end_line":291,"end_character":55},"updated":"2016-06-02 22:24:10.000000000","message":"I presume this will change the existing behavior for the Fernet tokens? Currently, any role changes will not cause token invalidation. Instead, it will be reflected on the next token validation.","commit_id":"3befe14de189b515a917dfd8da742e4d1475a1e2"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"ae5825ffba153ec2d1821c941a35f72c0778364d","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            raise exception.TokenNotFound(token_id\u003dtoken_id)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @MEMOIZE"},{"line_number":291,"context_line":"    def _validate_non_persistent_token(self, token_id):"},{"line_number":292,"context_line":"        return self.validate_non_persistent_token(token_id)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    @MEMOIZE"}],"source_content_type":"text/x-python","patch_set":2,"id":"9abb7d3a_e6358cdb","line":291,"range":{"start_line":291,"start_character":53,"end_line":291,"end_character":55},"in_reply_to":"9abb7d3a_a6ed7290","updated":"2016-06-03 14:52:01.000000000","message":"This cache has the same trade-off as that in KMW and persistent tokens, so I\u0027ve decided to extend this behavior to non-persistent.\n\nAdditionally, caching on issue makes token cache to expire faster as the caching itself is done earlier.","commit_id":"3befe14de189b515a917dfd8da742e4d1475a1e2"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"7bc7ba47db74891b594f30eac54e388165e88add","unresolved":false,"context_lines":[{"line_number":288,"context_line":"            raise exception.TokenNotFound(token_id\u003dtoken_id)"},{"line_number":289,"context_line":""},{"line_number":290,"context_line":"    @MEMOIZE"},{"line_number":291,"context_line":"    def _validate_non_persistent_token(self, token_id):"},{"line_number":292,"context_line":"        return self.validate_non_persistent_token(token_id)"},{"line_number":293,"context_line":""},{"line_number":294,"context_line":"    @MEMOIZE"}],"source_content_type":"text/x-python","patch_set":2,"id":"7aa08908_f3c36255","line":291,"range":{"start_line":291,"start_character":53,"end_line":291,"end_character":55},"in_reply_to":"9abb7d3a_e6358cdb","updated":"2016-06-07 16:30:32.000000000","message":"This is a pretty significant change of behavior. I thought that was one of the selling points of Fernet token. I am OK with this change, at least the behavior is universally consistent. But you may want to bring it up in the Keystone meeting to make sure there are no security implications with this change.","commit_id":"3befe14de189b515a917dfd8da742e4d1475a1e2"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"ede27bef897d63dee7e2374ac38124dd31f1a246","unresolved":false,"context_lines":[{"line_number":56,"context_line":"VERSIONS \u003d token_model.VERSIONS"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"def anonymous_token_validator(validate_token):"},{"line_number":60,"context_line":"    \"\"\"Shadow function name from `cache_on_arguments` to merge caching.\"\"\""},{"line_number":61,"context_line":"    def _anonymous(instance, token_id):"},{"line_number":62,"context_line":"        return validate_token(instance, token_id)"}],"source_content_type":"text/x-python","patch_set":8,"id":"bacf61ea_2c6abbee","line":59,"updated":"2016-07-29 16:36:55.000000000","message":"When I hear \"anonymous\" function, I think \"lambda\", but regardless of the name, this should definitely achieve the intent. I don\u0027t have a better suggestion for the name.","commit_id":"77e6e9239f0e78a993b5fed5b70f97ed26aa09d4"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"d42c41ef2d74eb5872f3c900a5d6aa0b5b79fad4","unresolved":false,"context_lines":[{"line_number":382,"context_line":"                        token_version\u003dself.V2)"},{"line_number":383,"context_line":"            self._create_token(token_id, data)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        # NOTE(amakarov): TOKENS_REGION is to be passed to serve as"},{"line_number":386,"context_line":"        # required positional \"self\" argument. It\u0027s ignored, so I\u0027ve put"},{"line_number":387,"context_line":"        # it here for convenience - any placeholder is fine."},{"line_number":388,"context_line":"        # NOTE(amakarov): v3 token data can be converted to v2.0 version,"},{"line_number":389,"context_line":"        # so v2.0 token validation cache can also be populated. However it"},{"line_number":390,"context_line":"        # isn\u0027t reflexive: there is no way to populate v3 validation cache"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_c01e615e","line":387,"range":{"start_line":385,"start_character":26,"end_line":387,"end_character":60},"updated":"2016-08-29 16:24:42.000000000","message":"why not just pass None ?","commit_id":"5996d12842c4ed27693142cd2419c858653aadc8"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"4e9b0823049a0517b593db63805aaaec431ab848","unresolved":false,"context_lines":[{"line_number":382,"context_line":"                        token_version\u003dself.V2)"},{"line_number":383,"context_line":"            self._create_token(token_id, data)"},{"line_number":384,"context_line":""},{"line_number":385,"context_line":"        # NOTE(amakarov): TOKENS_REGION is to be passed to serve as"},{"line_number":386,"context_line":"        # required positional \"self\" argument. It\u0027s ignored, so I\u0027ve put"},{"line_number":387,"context_line":"        # it here for convenience - any placeholder is fine."},{"line_number":388,"context_line":"        # NOTE(amakarov): v3 token data can be converted to v2.0 version,"},{"line_number":389,"context_line":"        # so v2.0 token validation cache can also be populated. However it"},{"line_number":390,"context_line":"        # isn\u0027t reflexive: there is no way to populate v3 validation cache"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_db8656da","line":387,"range":{"start_line":385,"start_character":26,"end_line":387,"end_character":60},"in_reply_to":"fa7ab95a_c01e615e","updated":"2016-08-29 16:50:02.000000000","message":"CacheRegion is expected here, so I pass it for readability. It\u0027s unused, but still expected.","commit_id":"5996d12842c4ed27693142cd2419c858653aadc8"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"d42c41ef2d74eb5872f3c900a5d6aa0b5b79fad4","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        # it here for convenience - any placeholder is fine."},{"line_number":388,"context_line":"        # NOTE(amakarov): v3 token data can be converted to v2.0 version,"},{"line_number":389,"context_line":"        # so v2.0 token validation cache can also be populated. However it"},{"line_number":390,"context_line":"        # isn\u0027t reflexive: there is no way to populate v3 validation cache"},{"line_number":391,"context_line":"        # on issuing a token using v2.0 API."},{"line_number":392,"context_line":"        self._validate_v2_token.set(token_data, TOKENS_REGION, token_id)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"        return token_id, token_data"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_3d573a27","line":391,"range":{"start_line":390,"start_character":27,"end_line":391,"end_character":44},"updated":"2016-08-29 16:24:42.000000000","message":"there is no way to do it ? perhaps a v2.0 token can be convereted into a v3 representation. perhaps it is just not worth it to add confusing code","commit_id":"5996d12842c4ed27693142cd2419c858653aadc8"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"4e9b0823049a0517b593db63805aaaec431ab848","unresolved":false,"context_lines":[{"line_number":387,"context_line":"        # it here for convenience - any placeholder is fine."},{"line_number":388,"context_line":"        # NOTE(amakarov): v3 token data can be converted to v2.0 version,"},{"line_number":389,"context_line":"        # so v2.0 token validation cache can also be populated. However it"},{"line_number":390,"context_line":"        # isn\u0027t reflexive: there is no way to populate v3 validation cache"},{"line_number":391,"context_line":"        # on issuing a token using v2.0 API."},{"line_number":392,"context_line":"        self._validate_v2_token.set(token_data, TOKENS_REGION, token_id)"},{"line_number":393,"context_line":""},{"line_number":394,"context_line":"        return token_id, token_data"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_bbcfd227","line":391,"range":{"start_line":390,"start_character":27,"end_line":391,"end_character":44},"in_reply_to":"fa7ab95a_3d573a27","updated":"2016-08-29 16:50:02.000000000","message":"v2.0 token data lacks several fields required in v3.","commit_id":"5996d12842c4ed27693142cd2419c858653aadc8"},{"author":{"_account_id":17860,"name":"Samuel de Medeiros Queiroz","email":"samueldmq@gmail.com","username":"samueldmq"},"change_message_id":"d42c41ef2d74eb5872f3c900a5d6aa0b5b79fad4","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        self.validate_non_persistent_token.set("},{"line_number":440,"context_line":"            token_data, TOKENS_REGION, token_id)"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"        try:"},{"line_number":443,"context_line":"            v2_helper \u003d providers.common.V2TokenDataHelper()"},{"line_number":444,"context_line":"            v2_token_data \u003d v2_helper.v3_to_v2_token(copy.deepcopy(token_data))"},{"line_number":445,"context_line":"        except exception.Unauthorized:"},{"line_number":446,"context_line":"            # Ignore trust and oauth tokens"},{"line_number":447,"context_line":"            pass"},{"line_number":448,"context_line":"        else:"},{"line_number":449,"context_line":"            self._validate_v2_token.set(v2_token_data, TOKENS_REGION, token_id)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        return token_id, token_data"},{"line_number":452,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_a0895d77","line":449,"range":{"start_line":442,"start_character":0,"end_line":449,"end_character":79},"updated":"2016-08-29 16:24:42.000000000","message":"I don\u0027t think it is worth it to add this code just for the case of v3 tokens that will be used against v2.0 api\n\nPart of this is sharing Haneef\u0027s concerns, I am against adding a lot of logic for saving a call for the first validation.","commit_id":"5996d12842c4ed27693142cd2419c858653aadc8"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"4e9b0823049a0517b593db63805aaaec431ab848","unresolved":false,"context_lines":[{"line_number":439,"context_line":"        self.validate_non_persistent_token.set("},{"line_number":440,"context_line":"            token_data, TOKENS_REGION, token_id)"},{"line_number":441,"context_line":""},{"line_number":442,"context_line":"        try:"},{"line_number":443,"context_line":"            v2_helper \u003d providers.common.V2TokenDataHelper()"},{"line_number":444,"context_line":"            v2_token_data \u003d v2_helper.v3_to_v2_token(copy.deepcopy(token_data))"},{"line_number":445,"context_line":"        except exception.Unauthorized:"},{"line_number":446,"context_line":"            # Ignore trust and oauth tokens"},{"line_number":447,"context_line":"            pass"},{"line_number":448,"context_line":"        else:"},{"line_number":449,"context_line":"            self._validate_v2_token.set(v2_token_data, TOKENS_REGION, token_id)"},{"line_number":450,"context_line":""},{"line_number":451,"context_line":"        return token_id, token_data"},{"line_number":452,"context_line":""}],"source_content_type":"text/x-python","patch_set":16,"id":"fa7ab95a_9633c3aa","line":449,"range":{"start_line":442,"start_character":0,"end_line":449,"end_character":79},"in_reply_to":"fa7ab95a_a0895d77","updated":"2016-08-29 16:50:02.000000000","message":"Brant Knudson asked for it in 4 patchset: the cache is better be shared across versions.","commit_id":"5996d12842c4ed27693142cd2419c858653aadc8"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"05bbc168953249a32967b9d1a15fd0a5d764258d","unresolved":false,"context_lines":[{"line_number":433,"context_line":"        # NOTE(amakarov): here and above TOKENS_REGION is to be passed"},{"line_number":434,"context_line":"        # to serve as required positional \"self\" argument. It\u0027s ignored,"},{"line_number":435,"context_line":"        # so I\u0027ve put it here for convenience - any placeholder is fine."},{"line_number":436,"context_line":"        self._validate_v3_token.set(token_data, TOKENS_REGION, token_id)"},{"line_number":437,"context_line":"        self._validate_token.set(token_data, TOKENS_REGION, token_id)"},{"line_number":438,"context_line":"        self.validate_non_persistent_token.set("},{"line_number":439,"context_line":"            token_data, TOKENS_REGION, token_id)"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"        if CONF.token.cache_on_issue:"},{"line_number":442,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa7ab95a_af08d792","line":439,"range":{"start_line":436,"start_character":0,"end_line":439,"end_character":48},"updated":"2016-08-31 15:12:48.000000000","message":"shouldn\u0027t this be in the IF block too?","commit_id":"24bc02fde66190fa50825503f8942102fbf69ece"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"5c5fece59ed8d46a69be7945aa958e5703df33aa","unresolved":false,"context_lines":[{"line_number":433,"context_line":"        # NOTE(amakarov): here and above TOKENS_REGION is to be passed"},{"line_number":434,"context_line":"        # to serve as required positional \"self\" argument. It\u0027s ignored,"},{"line_number":435,"context_line":"        # so I\u0027ve put it here for convenience - any placeholder is fine."},{"line_number":436,"context_line":"        self._validate_v3_token.set(token_data, TOKENS_REGION, token_id)"},{"line_number":437,"context_line":"        self._validate_token.set(token_data, TOKENS_REGION, token_id)"},{"line_number":438,"context_line":"        self.validate_non_persistent_token.set("},{"line_number":439,"context_line":"            token_data, TOKENS_REGION, token_id)"},{"line_number":440,"context_line":""},{"line_number":441,"context_line":"        if CONF.token.cache_on_issue:"},{"line_number":442,"context_line":"            try:"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa7ab95a_3286eeb9","line":439,"range":{"start_line":436,"start_character":0,"end_line":439,"end_character":48},"in_reply_to":"fa7ab95a_af08d792","updated":"2016-08-31 15:28:25.000000000","message":"Done","commit_id":"24bc02fde66190fa50825503f8942102fbf69ece"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"05bbc168953249a32967b9d1a15fd0a5d764258d","unresolved":false,"context_lines":[{"line_number":498,"context_line":"            trust \u003d self.trust_api.get_trust(trust_id, deleted\u003dTrue)"},{"line_number":499,"context_line":"            self._persistence.delete_tokens(user_id\u003dtrust[\u0027trustor_user_id\u0027],"},{"line_number":500,"context_line":"                                            trust_id\u003dtrust_id)"},{"line_number":501,"context_line":"        TOKENS_REGION.invalidate()"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    def _delete_user_tokens_callback(self, service, resource_type, operation,"},{"line_number":504,"context_line":"                                     payload):"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa7ab95a_0f3f0326","line":501,"range":{"start_line":501,"start_character":8,"end_line":501,"end_character":34},"updated":"2016-08-31 15:12:48.000000000","message":"shouldn\u0027t these all be dependant on the config setting? to preserve existing behaviour?","commit_id":"24bc02fde66190fa50825503f8942102fbf69ece"},{"author":{"_account_id":13055,"name":"Alexander Makarov","email":"ajiekcahdp.makapob@gmail.com","username":"amakarov"},"change_message_id":"5c5fece59ed8d46a69be7945aa958e5703df33aa","unresolved":false,"context_lines":[{"line_number":498,"context_line":"            trust \u003d self.trust_api.get_trust(trust_id, deleted\u003dTrue)"},{"line_number":499,"context_line":"            self._persistence.delete_tokens(user_id\u003dtrust[\u0027trustor_user_id\u0027],"},{"line_number":500,"context_line":"                                            trust_id\u003dtrust_id)"},{"line_number":501,"context_line":"        TOKENS_REGION.invalidate()"},{"line_number":502,"context_line":""},{"line_number":503,"context_line":"    def _delete_user_tokens_callback(self, service, resource_type, operation,"},{"line_number":504,"context_line":"                                     payload):"}],"source_content_type":"text/x-python","patch_set":19,"id":"fa7ab95a_529372fa","line":501,"range":{"start_line":501,"start_character":8,"end_line":501,"end_character":34},"in_reply_to":"fa7ab95a_0f3f0326","updated":"2016-08-31 15:28:25.000000000","message":"Done","commit_id":"24bc02fde66190fa50825503f8942102fbf69ece"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"3edfdabc3c8ad06c2287d759404322a7359a7f59","unresolved":false,"context_lines":[{"line_number":380,"context_line":"                        token_version\u003dself.V2)"},{"line_number":381,"context_line":"            self._create_token(token_id, data)"},{"line_number":382,"context_line":""},{"line_number":383,"context_line":"        # NOTE(amakarov): TOKENS_REGION is to be passed to serve as"},{"line_number":384,"context_line":"        # required positional \"self\" argument. It\u0027s ignored, so I\u0027ve put"},{"line_number":385,"context_line":"        # it here for convenience - any placeholder is fine."},{"line_number":386,"context_line":"        # NOTE(amakarov): v3 token data can be converted to v2.0 version,"},{"line_number":387,"context_line":"        # so v2.0 token validation cache can also be populated. However it"},{"line_number":388,"context_line":"        # isn\u0027t reflexive: there is no way to populate v3 validation cache"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa7ab95a_4e9e4d55","line":385,"range":{"start_line":383,"start_character":25,"end_line":385,"end_character":60},"updated":"2016-09-01 03:01:05.000000000","message":"I am not following from this comments as to why \u0027self\u0027 is not used instead.","commit_id":"7260b55cfcd0f3ca7027a6ac055e72783198a34a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"3edfdabc3c8ad06c2287d759404322a7359a7f59","unresolved":false,"context_lines":[{"line_number":445,"context_line":"                v2_token_data \u003d v2_helper.v3_to_v2_token("},{"line_number":446,"context_line":"                    copy.deepcopy(token_data), token_id)"},{"line_number":447,"context_line":"            except exception.Unauthorized:"},{"line_number":448,"context_line":"                # Ignore trust and oauth tokens"},{"line_number":449,"context_line":"                pass"},{"line_number":450,"context_line":"            else:"},{"line_number":451,"context_line":"                self._validate_v2_token.set("}],"source_content_type":"text/x-python","patch_set":21,"id":"fa7ab95a_eeb3a108","line":448,"range":{"start_line":448,"start_character":18,"end_line":448,"end_character":47},"updated":"2016-09-01 03:01:05.000000000","message":"Federation token is also ignored here.","commit_id":"7260b55cfcd0f3ca7027a6ac055e72783198a34a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"3edfdabc3c8ad06c2287d759404322a7359a7f59","unresolved":false,"context_lines":[{"line_number":444,"context_line":"                v2_helper \u003d providers.common.V2TokenDataHelper()"},{"line_number":445,"context_line":"                v2_token_data \u003d v2_helper.v3_to_v2_token("},{"line_number":446,"context_line":"                    copy.deepcopy(token_data), token_id)"},{"line_number":447,"context_line":"            except exception.Unauthorized:"},{"line_number":448,"context_line":"                # Ignore trust and oauth tokens"},{"line_number":449,"context_line":"                pass"},{"line_number":450,"context_line":"            else:"},{"line_number":451,"context_line":"                self._validate_v2_token.set("},{"line_number":452,"context_line":"                    v2_token_data, TOKENS_REGION, token_id)"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa7ab95a_6ec87175","line":449,"range":{"start_line":447,"start_character":12,"end_line":449,"end_character":20},"updated":"2016-09-01 03:01:05.000000000","message":"And I think this code block should be tested as well.","commit_id":"7260b55cfcd0f3ca7027a6ac055e72783198a34a"},{"author":{"_account_id":13063,"name":"WEI CHEN","email":"dave.jungler@gmail.com","username":"wei.d.chen"},"change_message_id":"3edfdabc3c8ad06c2287d759404322a7359a7f59","unresolved":false,"context_lines":[{"line_number":487,"context_line":"            self.revoke_api.revoke_by_audit_id(token_ref.audit_id)"},{"line_number":488,"context_line":""},{"line_number":489,"context_line":"        if CONF.token.revoke_by_id and self._needs_persistence:"},{"line_number":490,"context_line":"            self._persistence.delete_token(token_id\u003dtoken_id)"},{"line_number":491,"context_line":""},{"line_number":492,"context_line":"    def list_revoked_tokens(self):"},{"line_number":493,"context_line":"        return self._persistence.list_revoked_tokens()"}],"source_content_type":"text/x-python","patch_set":21,"id":"fa7ab95a_ae5fd973","line":490,"range":{"start_line":490,"start_character":2,"end_line":490,"end_character":61},"updated":"2016-09-01 03:01:05.000000000","message":"possible to invalidate the cache for the specific token?","commit_id":"7260b55cfcd0f3ca7027a6ac055e72783198a34a"}]}
