)]}'
{"keystone/token/controllers.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"752e98afb7c9e5ad556202a8e62a4acebfffb815","unresolved":false,"context_lines":[{"line_number":434,"context_line":"        belongs_to \u003d context[\u0027query_string\u0027].get(\u0027belongsTo\u0027)"},{"line_number":435,"context_line":"        return self.token_provider_api.validate_token("},{"line_number":436,"context_line":"            token_id,"},{"line_number":437,"context_line":"            belongs_to,"},{"line_number":438,"context_line":"            self.token_provider_api.V2)"},{"line_number":439,"context_line":""},{"line_number":440,"context_line":"    @controller.v2_deprecated"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_cba585a2","line":437,"updated":"2015-08-05 13:35:07.000000000","message":"this should be passed as a kwarg since it is defined in the method signature as a kwarg.","commit_id":"4e58a5a7c0205f874416e726fd142fe7ef9d236b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"752e98afb7c9e5ad556202a8e62a4acebfffb815","unresolved":false,"context_lines":[{"line_number":451,"context_line":"        # TODO(ayoung) validate against revocation API"},{"line_number":452,"context_line":"        return self.token_provider_api.validate_token("},{"line_number":453,"context_line":"            token_id,"},{"line_number":454,"context_line":"            belongs_to,"},{"line_number":455,"context_line":"            version\u003dself.token_provider_api.V2)"},{"line_number":456,"context_line":""},{"line_number":457,"context_line":"    @controller.v2_deprecated"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_eba2c198","line":454,"updated":"2015-08-05 13:35:07.000000000","message":"same comment here","commit_id":"4e58a5a7c0205f874416e726fd142fe7ef9d236b"}],"keystone/token/provider.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"5d533538b7e1296618c7908db41496e64504407c","unresolved":false,"context_lines":[{"line_number":456,"context_line":""},{"line_number":457,"context_line":"    @abc.abstractmethod"},{"line_number":458,"context_line":"    def issue_v3_token(self, **kwargs):"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    @abc.abstractmethod"},{"line_number":461,"context_line":"    def validate_token(self, token_ref):"},{"line_number":462,"context_line":"        \"\"\"Validate the given V2 token and return the token data."}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_ae5c281a","line":459,"updated":"2015-02-05 19:12:12.000000000","message":"Will need: \n\n    raise exception.NotImplemented()  # pragma: no cover","commit_id":"82a137bf167a7cc11451735e6ce1ad98bf444cf5"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"3066f4f89a2e30544fbc68db3c2db3bdfeea2d58","unresolved":false,"context_lines":[{"line_number":456,"context_line":""},{"line_number":457,"context_line":"    @abc.abstractmethod"},{"line_number":458,"context_line":"    def issue_v3_token(self, **kwargs):"},{"line_number":459,"context_line":""},{"line_number":460,"context_line":"    @abc.abstractmethod"},{"line_number":461,"context_line":"    def validate_token(self, token_ref):"},{"line_number":462,"context_line":"        \"\"\"Validate the given V2 token and return the token data."}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_29ed6d26","line":459,"in_reply_to":"da86d52c_ae5c281a","updated":"2015-02-06 16:36:42.000000000","message":"Making a note to myself.  Thanks Lance.","commit_id":"82a137bf167a7cc11451735e6ce1ad98bf444cf5"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"be1a4e3dbe5f4154880f8363a2eaf7111e9c18de","unresolved":false,"context_lines":[{"line_number":312,"context_line":"                    token_data[\u0027tenant\u0027][\u0027id\u0027] !\u003d belongs_to):"},{"line_number":313,"context_line":"                raise exception.Unauthorized()"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    def issue_token(self, user_id\u003dNone, method_names\u003dNone, expires_at\u003dNone,"},{"line_number":316,"context_line":"                    project_id\u003dNone, domain_id\u003dNone, auth_context\u003dNone,"},{"line_number":317,"context_line":"                    trust\u003dNone, metadata_ref\u003dNone, include_catalog\u003dTrue,"},{"line_number":318,"context_line":"                    parent_audit_id\u003dNone, audit_ids\u003dNone, token_ref\u003dNone,"}],"source_content_type":"text/x-python","patch_set":11,"id":"da6ed579_9804aac0","line":315,"updated":"2016-01-13 19:45:13.000000000","message":"leave the issue_v2 and issue_v3_token functions, make them private, and call them from a wrapper.  It should b clear in the diff that the logic is not changing.","commit_id":"4e58a5a7c0205f874416e726fd142fe7ef9d236b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"752e98afb7c9e5ad556202a8e62a4acebfffb815","unresolved":false,"context_lines":[{"line_number":374,"context_line":""},{"line_number":375,"context_line":"        if self._needs_persistence:"},{"line_number":376,"context_line":"            self._create_token(token_id, data)"},{"line_number":377,"context_line":""},{"line_number":378,"context_line":"        return token_id, token_data"},{"line_number":379,"context_line":""},{"line_number":380,"context_line":"    def invalidate_individual_token_cache(self, token_id):"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_abd6f9ee","line":377,"updated":"2015-08-05 13:35:07.000000000","message":"unrelated whitespace change?","commit_id":"4e58a5a7c0205f874416e726fd142fe7ef9d236b"}],"keystone/token/providers/common.py":[{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"e6308e7b86941a8e36f871805aa3a1211001824f","unresolved":false,"context_lines":[{"line_number":667,"context_line":"        self.methods \u003d kwargs.pop(\u0027methods\u0027)"},{"line_number":668,"context_line":"        self.token_id \u003d kwargs.pop(\u0027token_id\u0027)"},{"line_number":669,"context_line":"        self.short_id \u003d cms.cms_hash_token(token_id,"},{"line_number":670,"context_line":"                                           mode\u003dCONF.token.hash_algorithm)"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        if self.project_scoped and self.domain_scoped:"},{"line_number":673,"context_line":"            raise exception.UnexpectedError(_(\u0027Found invalid token: scoped to \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_9fe782ab","line":670,"updated":"2015-02-06 06:13:47.000000000","message":"Take a look at what ayoung is working on in keystoneclient on accessinfo, see if some efforts can be combined here.","commit_id":"82a137bf167a7cc11451735e6ce1ad98bf444cf5"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"3066f4f89a2e30544fbc68db3c2db3bdfeea2d58","unresolved":false,"context_lines":[{"line_number":667,"context_line":"        self.methods \u003d kwargs.pop(\u0027methods\u0027)"},{"line_number":668,"context_line":"        self.token_id \u003d kwargs.pop(\u0027token_id\u0027)"},{"line_number":669,"context_line":"        self.short_id \u003d cms.cms_hash_token(token_id,"},{"line_number":670,"context_line":"                                           mode\u003dCONF.token.hash_algorithm)"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        if self.project_scoped and self.domain_scoped:"},{"line_number":673,"context_line":"            raise exception.UnexpectedError(_(\u0027Found invalid token: scoped to \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_a9aa3dd0","line":670,"in_reply_to":"da86d52c_9fe782ab","updated":"2015-02-06 16:36:42.000000000","message":"Looking.","commit_id":"82a137bf167a7cc11451735e6ce1ad98bf444cf5"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"a89f1092163440d22bc9633617ec9b8412f3bea2","unresolved":false,"context_lines":[{"line_number":667,"context_line":"        self.methods \u003d kwargs.pop(\u0027methods\u0027)"},{"line_number":668,"context_line":"        self.token_id \u003d kwargs.pop(\u0027token_id\u0027)"},{"line_number":669,"context_line":"        self.short_id \u003d cms.cms_hash_token(token_id,"},{"line_number":670,"context_line":"                                           mode\u003dCONF.token.hash_algorithm)"},{"line_number":671,"context_line":""},{"line_number":672,"context_line":"        if self.project_scoped and self.domain_scoped:"},{"line_number":673,"context_line":"            raise exception.UnexpectedError(_(\u0027Found invalid token: scoped to \u0027"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_86bd2905","line":670,"in_reply_to":"da86d52c_a9aa3dd0","updated":"2015-02-09 16:35:45.000000000","message":"I think this is the review that Morgan\u0027s referencing? \n\nhttps://review.openstack.org/#/c/138519/","commit_id":"82a137bf167a7cc11451735e6ce1ad98bf444cf5"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"e4afa67e3c748cd8e3453edd82ff7545b7ea8d6e","unresolved":false,"context_lines":[{"line_number":680,"context_line":"            self.version \u003d token.provider.V2"},{"line_number":681,"context_line":""},{"line_number":682,"context_line":"    def get_data(self):"},{"line_number":683,"context_line":"        if self.version() \u003d\u003d \u0027v3\u0027:"},{"line_number":684,"context_line":"            # TODO(dhu):  Chk if token_data is cached."},{"line_number":685,"context_line":"            # else a formatter function will return token_data in v3 format"},{"line_number":686,"context_line":"        elif self.version() \u003d\u003d \u00272.0\u0027:"}],"source_content_type":"text/x-python","patch_set":3,"id":"da86d52c_74bd3ed7","line":683,"updated":"2015-02-09 17:38:16.000000000","message":"so here we are getting the version by checking self.version but we also have a get_version() method that does the same thing. I think we should maybe consolidate this to use one or the other.\n\n    if self.version \u003d\u003d \u0027v3\u0027:\n\nor \n\n    if self.get_version() \u003d\u003d \u0027v3\u0027:","commit_id":"82a137bf167a7cc11451735e6ce1ad98bf444cf5"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"92a56f13b3bd2a347a7e47f9e51e76143fb0dabf","unresolved":false,"context_lines":[{"line_number":406,"context_line":"            if \u0027token\u0027 in token_data and \u0027methods\u0027 in token_data[\u0027token\u0027]:"},{"line_number":407,"context_line":"                return token.provider.V3"},{"line_number":408,"context_line":"        raise exception.UnsupportedTokenVersionException()"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    def issue_v2_token(self, token_ref, roles_ref\u003dNone,"},{"line_number":411,"context_line":"                       catalog_ref\u003dNone):"},{"line_number":412,"context_line":"        metadata_ref \u003d token_ref[\u0027metadata\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_3d75cbf9","line":409,"updated":"2015-02-12 17:00:11.000000000","message":"Can\u0027t this be removed since we\u0027re using issue_token()?","commit_id":"ee9e9dc01a7217681b8f8a301f0536c6401649e7"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"9e4ca3be0b18d9e77cb91ff60901b99ac2dc9416","unresolved":false,"context_lines":[{"line_number":406,"context_line":"            if \u0027token\u0027 in token_data and \u0027methods\u0027 in token_data[\u0027token\u0027]:"},{"line_number":407,"context_line":"                return token.provider.V3"},{"line_number":408,"context_line":"        raise exception.UnsupportedTokenVersionException()"},{"line_number":409,"context_line":""},{"line_number":410,"context_line":"    def issue_v2_token(self, token_ref, roles_ref\u003dNone,"},{"line_number":411,"context_line":"                       catalog_ref\u003dNone):"},{"line_number":412,"context_line":"        metadata_ref \u003d token_ref[\u0027metadata\u0027]"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_4cef2be9","line":409,"in_reply_to":"da86d52c_3d75cbf9","updated":"2015-02-12 18:15:55.000000000","message":"Yes. Though I would probably not remove it in 1 patch. Add new issue_token, subsequent patch cleanup issue_VX_token. This is to ensure we don\u0027t have massive changes in a single patch.","commit_id":"ee9e9dc01a7217681b8f8a301f0536c6401649e7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"92a56f13b3bd2a347a7e47f9e51e76143fb0dabf","unresolved":false,"context_lines":[{"line_number":423,"context_line":"    def _is_mapped_token(self, auth_context):"},{"line_number":424,"context_line":"        return (federation.IDENTITY_PROVIDER in auth_context and"},{"line_number":425,"context_line":"                federation.PROTOCOL in auth_context)"},{"line_number":426,"context_line":""},{"line_number":427,"context_line":"    def issue_v3_token(self, user_id, method_names, expires_at\u003dNone,"},{"line_number":428,"context_line":"                       project_id\u003dNone, domain_id\u003dNone, auth_context\u003dNone,"},{"line_number":429,"context_line":"                       trust\u003dNone, metadata_ref\u003dNone, include_catalog\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":4,"id":"da86d52c_1d6ac719","line":426,"updated":"2015-02-12 17:00:11.000000000","message":"Can\u0027t this be removed since we\u0027re using issue_token()?","commit_id":"ee9e9dc01a7217681b8f8a301f0536c6401649e7"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"752e98afb7c9e5ad556202a8e62a4acebfffb815","unresolved":false,"context_lines":[{"line_number":721,"context_line":"                    include_catalog\u003dTrue, parent_audit_id\u003dNone, audit_ids\u003dNone,"},{"line_number":722,"context_line":"                    token_ref\u003dNone, roles_ref\u003dNone, catalog_ref\u003dNone):"},{"line_number":723,"context_line":"        \"\"\"V2 parameters: token_ref, roles_ref, catalog_ref\"\"\""},{"line_number":724,"context_line":"        if domain_id or not token_ref:"},{"line_number":725,"context_line":"            token_id, token_tmp \u003d self.issue_v3_token(user_id, method_names,"},{"line_number":726,"context_line":"                                                      expires_at, project_id,"},{"line_number":727,"context_line":"                                                      domain_id, auth_context,"}],"source_content_type":"text/x-python","patch_set":11,"id":"1a4dcd0f_8b1e9db9","line":724,"updated":"2015-08-05 13:35:07.000000000","message":"is this a definitive way to determine it we are working with a v3 token? a comment explaining why are are using: \n\n     if domain_id or not token_ref: \n\nas a way to determine v3 token formats would be helpful","commit_id":"4e58a5a7c0205f874416e726fd142fe7ef9d236b"}]}
