)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"415668613405355ebc6e2ce8cfa6a198d7df1d93","unresolved":false,"context_lines":[{"line_number":7,"context_line":"WIP: One validate method to rule them all..."},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Regardless of persistence or format, let\u0027s validate tokens one way."},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"Change-Id: Idb5de4459fd8bf83973ed74fccc275a64873c88c"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"1a95cdbc_38cfd0b1","line":10,"updated":"2016-10-04 16:55:39.000000000","message":"This can close bug: 1582493","commit_id":"8786c7d671690b64b826defc4be6cc41b7558785"}],"keystone/token/provider.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5b5fdbc5b1487a2bf9a96f79c9ea8112dce9118a","unresolved":false,"context_lines":[{"line_number":369,"context_line":"            # NOTE(amakarov): here and above TOKENS_REGION is to be passed"},{"line_number":370,"context_line":"            # to serve as required positional \"self\" argument. It\u0027s ignored,"},{"line_number":371,"context_line":"            # so I\u0027ve put it here for convenience - any placeholder is fine."},{"line_number":372,"context_line":"            self._validate_v3_token.set(token_data, TOKENS_REGION, token_id)"},{"line_number":373,"context_line":"            self.validate_non_persistent_token.set("},{"line_number":374,"context_line":"                token_data, TOKENS_REGION, token_id)"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        return token_id, token_data"},{"line_number":377,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_b05f5371","side":"PARENT","line":374,"range":{"start_line":372,"start_character":12,"end_line":374,"end_character":52},"updated":"2016-10-12 02:19:34.000000000","message":"we should get amakarov to look at this","commit_id":"6c75a962b59de09a1d4419c7301813a1b99741d4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"985a0c089e785183c748a4a1778a0e9db1d8423d","unresolved":false,"context_lines":[{"line_number":371,"context_line":"            # so I\u0027ve put it here for convenience - any placeholder is fine."},{"line_number":372,"context_line":"            self._validate_v3_token.set(token_data, TOKENS_REGION, token_id)"},{"line_number":373,"context_line":"            self.validate_non_persistent_token.set("},{"line_number":374,"context_line":"                token_data, TOKENS_REGION, token_id)"},{"line_number":375,"context_line":""},{"line_number":376,"context_line":"        return token_id, token_data"},{"line_number":377,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_0b835405","side":"PARENT","line":374,"in_reply_to":"fa6399be_b05f5371","updated":"2016-10-12 15:04:02.000000000","message":"++","commit_id":"6c75a962b59de09a1d4419c7301813a1b99741d4"},{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"5b5fdbc5b1487a2bf9a96f79c9ea8112dce9118a","unresolved":false,"context_lines":[{"line_number":551,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":552,"context_line":""},{"line_number":553,"context_line":"    @abc.abstractmethod"},{"line_number":554,"context_line":"    def validate_non_persistent_token(self, token_id):"},{"line_number":555,"context_line":"        \"\"\"Validate a given non-persistent token id and return the token_data."},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"        :param token_id: the token id"},{"line_number":558,"context_line":"        :type token_id: string"},{"line_number":559,"context_line":"        :returns: token data"},{"line_number":560,"context_line":"        :raises keystone.exception.TokenNotFound: When the token is invalid"},{"line_number":561,"context_line":"        \"\"\""},{"line_number":562,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"    @abc.abstractmethod"},{"line_number":565,"context_line":"    def validate_v3_token(self, token_ref):"},{"line_number":566,"context_line":"        \"\"\"Validate the given V3 token and return the token_data."},{"line_number":567,"context_line":""},{"line_number":568,"context_line":"        :param token_ref: the token reference"},{"line_number":569,"context_line":"        :type token_ref: dict"},{"line_number":570,"context_line":"        :returns: token data"},{"line_number":571,"context_line":"        :raises keystone.exception.TokenNotFound: If the token doesn\u0027t exist."},{"line_number":572,"context_line":"        \"\"\""},{"line_number":573,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"    @abc.abstractmethod"},{"line_number":576,"context_line":"    def _get_token_id(self, token_data):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_d0268715","side":"PARENT","line":573,"range":{"start_line":554,"start_character":0,"end_line":573,"end_character":60},"updated":"2016-10-12 02:19:34.000000000","message":"renaming a base method needs a release note","commit_id":"6c75a962b59de09a1d4419c7301813a1b99741d4"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"985a0c089e785183c748a4a1778a0e9db1d8423d","unresolved":false,"context_lines":[{"line_number":570,"context_line":"        :returns: token data"},{"line_number":571,"context_line":"        :raises keystone.exception.TokenNotFound: If the token doesn\u0027t exist."},{"line_number":572,"context_line":"        \"\"\""},{"line_number":573,"context_line":"        raise exception.NotImplemented()  # pragma: no cover"},{"line_number":574,"context_line":""},{"line_number":575,"context_line":"    @abc.abstractmethod"},{"line_number":576,"context_line":"    def _get_token_id(self, token_data):"}],"source_content_type":"text/x-python","patch_set":4,"id":"fa6399be_6bd770bf","side":"PARENT","line":573,"in_reply_to":"fa6399be_d0268715","updated":"2016-10-12 15:04:02.000000000","message":"Done","commit_id":"6c75a962b59de09a1d4419c7301813a1b99741d4"}],"keystone/token/providers/common.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"0c13bc35becfa37653ab1453b1039ec2d2e19cba","unresolved":false,"context_lines":[{"line_number":755,"context_line":"            trust_ref \u003d self.trust_api.get_trust(trust_id)"},{"line_number":756,"context_line":""},{"line_number":757,"context_line":"        token_data \u003d token_ref.get(\u0027token_data\u0027)"},{"line_number":758,"context_line":"        token_version \u003d self.get_token_version(token_data)"},{"line_number":759,"context_line":"        if token_version \u003d\u003d token.provider.V2:"},{"line_number":760,"context_line":"            methods \u003d [\u0027password\u0027, \u0027token\u0027]"},{"line_number":761,"context_line":"            bind \u003d token_ref.get(\u0027bind\u0027)"},{"line_number":762,"context_line":"            # I have no idea why issued_at and expires_at come from two"}],"source_content_type":"text/x-python","patch_set":1,"id":"5a8bc5a2_e0fda609","line":759,"range":{"start_line":758,"start_character":7,"end_line":759,"end_character":46},"updated":"2016-09-28 04:15:57.000000000","message":"this change wasn\u0027t necessary, or the change below... but i like your way better","commit_id":"68240a15d73f15948443293390fc3eefb3203a5a"}]}
