)]}'
{"keystone/auth/plugins/token.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"acbb497bef01edf589be1581d35f80066ba28bcf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"1abeadc6_02aecb2d","updated":"2014-08-23 05:33:48.000000000","message":"i really like how much this gets condensed, so much easier to read now.","commit_id":"02f2d74d413d7b012a8764cd314ed1956ac0a52e"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"24d279c8c605b8a992dd56a141a1bb41fd886feb","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            user_context[\u0027audit_id\u0027] \u003d token_audit_id"},{"line_number":65,"context_line":"            user_context.setdefault(\u0027user_id\u0027, token_ref.user_id)"},{"line_number":66,"context_line":"            # TODO(morganfainberg: determine if token \u0027extras\u0027 can be removed"},{"line_number":67,"context_line":"            # from the user_context"},{"line_number":68,"context_line":"            user_context[\u0027extras\u0027].update(token_ref.get(\u0027extras\u0027, {}))"},{"line_number":69,"context_line":"            user_context[\u0027method_names\u0027].extend(token_ref.methods)"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_516cd836","line":67,"updated":"2014-08-25 21:05:11.000000000","message":"we don\u0027t use it","commit_id":"7790df214d64a3b31efbbfa85133d8058a8ac37f"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2e5a044451134d5d37ae83d597ea428e265a640c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            user_context[\u0027audit_id\u0027] \u003d token_audit_id"},{"line_number":65,"context_line":"            user_context.setdefault(\u0027user_id\u0027, token_ref.user_id)"},{"line_number":66,"context_line":"            # TODO(morganfainberg: determine if token \u0027extras\u0027 can be removed"},{"line_number":67,"context_line":"            # from the user_context"},{"line_number":68,"context_line":"            user_context[\u0027extras\u0027].update(token_ref.get(\u0027extras\u0027, {}))"},{"line_number":69,"context_line":"            user_context[\u0027method_names\u0027].extend(token_ref.methods)"},{"line_number":70,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_16cdf186","line":67,"in_reply_to":"1abeadc6_516cd836","updated":"2014-08-25 23:18:02.000000000","message":"Fantastic, I\u0027ll clean that bit out (if another patch is needed) or at the end of the chain.","commit_id":"7790df214d64a3b31efbbfa85133d8058a8ac37f"}],"keystone/common/authorization.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"acbb497bef01edf589be1581d35f80066ba28bcf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"1abeadc6_c26f73fa","updated":"2014-08-23 05:33:48.000000000","message":"+100","commit_id":"02f2d74d413d7b012a8764cd314ed1956ac0a52e"}],"keystone/common/controller.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"acbb497bef01edf589be1581d35f80066ba28bcf","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        # NOTE(jamielennox): whilst this maybe shouldn\u0027t be within this"},{"line_number":73,"context_line":"        # function it would otherwise need to reload the token_ref from"},{"line_number":74,"context_line":"        # backing store."},{"line_number":75,"context_line":"        wsgi.validate_token_bind(context, token_ref)"},{"line_number":76,"context_line":"    except exception.TokenNotFound:"},{"line_number":77,"context_line":"        LOG.warning(_(\u0027RBAC: Invalid token\u0027))"},{"line_number":78,"context_line":"        raise exception.Unauthorized()"}],"source_content_type":"text/x-python","patch_set":15,"id":"1abeadc6_025c0b4a","line":75,"updated":"2014-08-23 05:33:48.000000000","message":"why move this into the try? would it be pointless outside the try?","commit_id":"02f2d74d413d7b012a8764cd314ed1956ac0a52e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"e45cb6fe2eead1b809e1139757c8bebd21c8a9f9","unresolved":false,"context_lines":[{"line_number":72,"context_line":"        # NOTE(jamielennox): whilst this maybe shouldn\u0027t be within this"},{"line_number":73,"context_line":"        # function it would otherwise need to reload the token_ref from"},{"line_number":74,"context_line":"        # backing store."},{"line_number":75,"context_line":"        wsgi.validate_token_bind(context, token_ref)"},{"line_number":76,"context_line":"    except exception.TokenNotFound:"},{"line_number":77,"context_line":"        LOG.warning(_(\u0027RBAC: Invalid token\u0027))"},{"line_number":78,"context_line":"        raise exception.Unauthorized()"}],"source_content_type":"text/x-python","patch_set":15,"id":"1abeadc6_bac6e914","line":75,"in_reply_to":"1abeadc6_025c0b4a","updated":"2014-08-25 18:26:39.000000000","message":"There is no need to move it, I can move it back if it\u0027s an issue. I think this was a bit of \"make the code as easy to read as possible\" and this got shuffled in the process.","commit_id":"02f2d74d413d7b012a8764cd314ed1956ac0a52e"}],"keystone/common/wsgi.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"24d279c8c605b8a992dd56a141a1bb41fd886feb","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    if not isinstance(token_ref, token_model.KeystoneToken):"},{"line_number":58,"context_line":"        raise exception.UnexpectedError(_(\u0027token reference must be a \u0027"},{"line_number":59,"context_line":"                                          \u0027KeystoneToken type, got: %s\u0027) %"},{"line_number":60,"context_line":"                                        type(token_ref))"},{"line_number":61,"context_line":"    bind \u003d token_ref.bind"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    # permissive and strict modes don\u0027t require there to be a bind"}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_b1e1ac9c","line":60,"updated":"2014-08-25 21:05:11.000000000","message":"hmm - what else are you expecting here?","commit_id":"7790df214d64a3b31efbbfa85133d8058a8ac37f"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2e5a044451134d5d37ae83d597ea428e265a640c","unresolved":false,"context_lines":[{"line_number":57,"context_line":"    if not isinstance(token_ref, token_model.KeystoneToken):"},{"line_number":58,"context_line":"        raise exception.UnexpectedError(_(\u0027token reference must be a \u0027"},{"line_number":59,"context_line":"                                          \u0027KeystoneToken type, got: %s\u0027) %"},{"line_number":60,"context_line":"                                        type(token_ref))"},{"line_number":61,"context_line":"    bind \u003d token_ref.bind"},{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    # permissive and strict modes don\u0027t require there to be a bind"}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_36caed6e","line":60,"in_reply_to":"1abeadc6_b1e1ac9c","updated":"2014-08-25 23:18:02.000000000","message":"This could be passed in as a dict (many things used to pass around dicts)","commit_id":"7790df214d64a3b31efbbfa85133d8058a8ac37f"}],"keystone/models/token_model.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"acbb497bef01edf589be1581d35f80066ba28bcf","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        else:"},{"line_number":55,"context_line":"            raise exception.UnsupportedTokenVersionException()"},{"line_number":56,"context_line":"        self.token_id \u003d token_id"},{"line_number":57,"context_line":"        self.short_id \u003d cms.cms_hash_token(token_id,"},{"line_number":58,"context_line":"                                           mode\u003dCONF.token.hash_algorithm)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        if self.project_scoped and self.domain_scoped:"}],"source_content_type":"text/x-python","patch_set":15,"id":"1abeadc6_c23db3de","line":57,"updated":"2014-08-23 05:33:48.000000000","message":"nice, i like that","commit_id":"02f2d74d413d7b012a8764cd314ed1956ac0a52e"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"24d279c8c605b8a992dd56a141a1bb41fd886feb","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    @property"},{"line_number":316,"context_line":"    def metadata(self):"},{"line_number":317,"context_line":"        return self.get(\u0027metadata\u0027, {})"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    @property"},{"line_number":320,"context_line":"    def methods(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_91a91027","line":317,"updated":"2014-08-25 21:05:11.000000000","message":"does this really need to be a first class thing?","commit_id":"7790df214d64a3b31efbbfa85133d8058a8ac37f"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2e5a044451134d5d37ae83d597ea428e265a640c","unresolved":false,"context_lines":[{"line_number":314,"context_line":""},{"line_number":315,"context_line":"    @property"},{"line_number":316,"context_line":"    def metadata(self):"},{"line_number":317,"context_line":"        return self.get(\u0027metadata\u0027, {})"},{"line_number":318,"context_line":""},{"line_number":319,"context_line":"    @property"},{"line_number":320,"context_line":"    def methods(self):"}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_167b312a","line":317,"in_reply_to":"1abeadc6_91a91027","updated":"2014-08-25 23:18:02.000000000","message":"The V2 tokens use metadata extensively (unfortunately), this is/was forward looking to unifying issue token/validate token, *but* I think we can remove this.","commit_id":"7790df214d64a3b31efbbfa85133d8058a8ac37f"}],"keystone/tests/test_content_types.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"24d279c8c605b8a992dd56a141a1bb41fd886feb","unresolved":false,"context_lines":[{"line_number":1226,"context_line":"        # expiry to revoke individual tokens. This is a stop-gap until all"},{"line_number":1227,"context_line":"        # associated issues with resolution on expiration and revocation events"},{"line_number":1228,"context_line":"        # are resolved."},{"line_number":1229,"context_line":"        time.sleep(1)"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"        token2 \u003d self.get_scoped_token()"},{"line_number":1232,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_d130e809","line":1229,"updated":"2014-08-25 21:05:11.000000000","message":"ah; we should just go back to one second resolution as a common ground","commit_id":"7790df214d64a3b31efbbfa85133d8058a8ac37f"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2e5a044451134d5d37ae83d597ea428e265a640c","unresolved":false,"context_lines":[{"line_number":1226,"context_line":"        # expiry to revoke individual tokens. This is a stop-gap until all"},{"line_number":1227,"context_line":"        # associated issues with resolution on expiration and revocation events"},{"line_number":1228,"context_line":"        # are resolved."},{"line_number":1229,"context_line":"        time.sleep(1)"},{"line_number":1230,"context_line":""},{"line_number":1231,"context_line":"        token2 \u003d self.get_scoped_token()"},{"line_number":1232,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"1abeadc6_d698d96c","line":1229,"in_reply_to":"1abeadc6_d130e809","updated":"2014-08-25 23:18:02.000000000","message":"probably.","commit_id":"7790df214d64a3b31efbbfa85133d8058a8ac37f"}],"keystone/tests/unit/token/test_token_model.py":[{"author":{"_account_id":6482,"name":"Steve Martinelli","email":"s.martinelli@gmail.com","username":"stevemar"},"change_message_id":"acbb497bef01edf589be1581d35f80066ba28bcf","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        token_data[\u0027user\u0027][token_model.federation.FEDERATION] \u003d federation_data"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        # Federated users should not exist in V2, the data should remain empty"},{"line_number":155,"context_line":"        self.assertFalse(token_data.is_federated_user)"},{"line_number":156,"context_line":"        self.assertEqual([], token_data.federation_group_ids)"},{"line_number":157,"context_line":"        self.assertIsNone(token_data.federation_protocol_id)"},{"line_number":158,"context_line":"        self.assertIsNone(token_data.federation_idp_id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1abeadc6_a211975e","line":155,"updated":"2014-08-23 05:33:48.000000000","message":"155-158 is the same as 125-128 and the same as 146-150, maybe condense them?","commit_id":"02f2d74d413d7b012a8764cd314ed1956ac0a52e"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"e45cb6fe2eead1b809e1139757c8bebd21c8a9f9","unresolved":false,"context_lines":[{"line_number":152,"context_line":"        token_data[\u0027user\u0027][token_model.federation.FEDERATION] \u003d federation_data"},{"line_number":153,"context_line":""},{"line_number":154,"context_line":"        # Federated users should not exist in V2, the data should remain empty"},{"line_number":155,"context_line":"        self.assertFalse(token_data.is_federated_user)"},{"line_number":156,"context_line":"        self.assertEqual([], token_data.federation_group_ids)"},{"line_number":157,"context_line":"        self.assertIsNone(token_data.federation_protocol_id)"},{"line_number":158,"context_line":"        self.assertIsNone(token_data.federation_idp_id)"}],"source_content_type":"text/x-python","patch_set":15,"id":"1abeadc6_3a01f939","line":155,"in_reply_to":"1abeadc6_a211975e","updated":"2014-08-25 18:26:39.000000000","message":"If needed I will, I tend to err on the side of being as explicit as possible in a single test so it\u0027s easy to follow.","commit_id":"02f2d74d413d7b012a8764cd314ed1956ac0a52e"}]}
