)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c5a68a514f557515e27d9f4df7a37dfe6fb41a0c","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Dolph Mathews \u003cdolph.mathews@gmail.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2015-03-06 16:06:34 +0000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Refactor: remove Fernet formatter\u0027s dep on trust_api / v3 token helper"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This removes the token formatter\u0027s dependency on both trust_api and the"},{"line_number":10,"context_line":"v3 token data helper, leaving token formatters with nothing to deal with"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"9a80dd14_3d86f513","line":7,"updated":"2015-03-06 16:58:08.000000000","message":"(nit) this may be long for a summary line","commit_id":"d1f8fcf1930f31ebdbec1e3873212723f1810edb"}],"keystone/tests/unit/token/test_fernet_provider.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c8bd321aca72613d8222a8c029e8dc6cd1a61f77","unresolved":false,"context_lines":[{"line_number":16,"context_line":"import tempfile"},{"line_number":17,"context_line":"import uuid"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import mock"},{"line_number":20,"context_line":"from oslo_utils import timeutils"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from keystone.common import config"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_88dddce2","side":"PARENT","line":19,"updated":"2015-03-06 19:17:51.000000000","message":"++","commit_id":"13f7cf70d59e5d865200f505db085a57eb3ba1eb"}],"keystone/token/providers/fernet/core.py":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c8bd321aca72613d8222a8c029e8dc6cd1a61f77","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        token_formatter \u003d self.token_format_map.get(token_format)"},{"line_number":147,"context_line":"        if not token_formatter:"},{"line_number":148,"context_line":"            # If the token_format is not recognized, raise Unauthorized."},{"line_number":149,"context_line":"            raise exception.Unauthorized(_("},{"line_number":150,"context_line":"                \u0027This is not a recognized Fernet formatted token: %s\u0027) %"},{"line_number":151,"context_line":"                token_format)"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_8804fc4a","line":149,"updated":"2015-03-06 19:17:51.000000000","message":"no _LE?","commit_id":"10b0b3c590868490c46c74af9ebf2992fae18623"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"dd600bfc920c00b81cc3669e1609be5ca9cb6272","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        token_formatter \u003d self.token_format_map.get(token_format)"},{"line_number":147,"context_line":"        if not token_formatter:"},{"line_number":148,"context_line":"            # If the token_format is not recognized, raise Unauthorized."},{"line_number":149,"context_line":"            raise exception.Unauthorized(_("},{"line_number":150,"context_line":"                \u0027This is not a recognized Fernet formatted token: %s\u0027) %"},{"line_number":151,"context_line":"                token_format)"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_c82d14aa","line":149,"in_reply_to":"9a80dd14_8804fc4a","updated":"2015-03-06 19:20:09.000000000","message":"_LE() is for logging to the error log - _() is for messages that go directly to users","commit_id":"10b0b3c590868490c46c74af9ebf2992fae18623"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c27647d0f4110653c67931bde9de1f7089aca666","unresolved":false,"context_lines":[{"line_number":146,"context_line":"        token_formatter \u003d self.token_format_map.get(token_format)"},{"line_number":147,"context_line":"        if not token_formatter:"},{"line_number":148,"context_line":"            # If the token_format is not recognized, raise Unauthorized."},{"line_number":149,"context_line":"            raise exception.Unauthorized(_("},{"line_number":150,"context_line":"                \u0027This is not a recognized Fernet formatted token: %s\u0027) %"},{"line_number":151,"context_line":"                token_format)"},{"line_number":152,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_4811245c","line":149,"in_reply_to":"9a80dd14_c82d14aa","updated":"2015-03-06 19:21:28.000000000","message":"cool, thanks for the response.","commit_id":"10b0b3c590868490c46c74af9ebf2992fae18623"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c95b2bb745884a6c7622911e93783c162528dea8","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        token_str \u003d token_ref[token_prefix_length:]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        # depending on the formatter, these may or may not be defined"},{"line_number":158,"context_line":"        project_id \u003d None"},{"line_number":159,"context_line":"        trust_ref \u003d None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        if token_format \u003d\u003d fm.UNSCOPED_TOKEN_PREFIX:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_19ecd7f2","line":158,"updated":"2015-03-06 22:47:32.000000000","message":"validate_token should know enough to return None for these values.","commit_id":"10b0b3c590868490c46c74af9ebf2992fae18623"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"262717ae3116b552660305b99149dc765b8ce876","unresolved":false,"context_lines":[{"line_number":155,"context_line":"        token_str \u003d token_ref[token_prefix_length:]"},{"line_number":156,"context_line":""},{"line_number":157,"context_line":"        # depending on the formatter, these may or may not be defined"},{"line_number":158,"context_line":"        project_id \u003d None"},{"line_number":159,"context_line":"        trust_ref \u003d None"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"        if token_format \u003d\u003d fm.UNSCOPED_TOKEN_PREFIX:"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_ad5c3c4c","line":158,"in_reply_to":"9a80dd14_19ecd7f2","updated":"2015-03-09 15:55:13.000000000","message":"eventually this bit of code becomes the sole thing responsible for knowing what formats support which pieces of data. that seems far cleaner to me than, for example, having unscoped payloads half-aware of domain scopes and trusts and whatever else comes along - and just returning null for them all.","commit_id":"10b0b3c590868490c46c74af9ebf2992fae18623"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c95b2bb745884a6c7622911e93783c162528dea8","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        return self.v3_token_data_helper.get_token_data("},{"line_number":174,"context_line":"            user_id,"},{"line_number":175,"context_line":"            [\u0027password\u0027, \u0027token\u0027],"},{"line_number":176,"context_line":"            {},"},{"line_number":177,"context_line":"            project_id\u003dproject_id,"},{"line_number":178,"context_line":"            expires\u003dexpires_at,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_199a176e","line":175,"updated":"2015-03-06 22:47:32.000000000","message":"why these values? Add a comment.\n\nAlso, suggest use method_names\u003d[\u0027password\u0027, \u0027token\u0027], so that readers know what these are for.","commit_id":"10b0b3c590868490c46c74af9ebf2992fae18623"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"262717ae3116b552660305b99149dc765b8ce876","unresolved":false,"context_lines":[{"line_number":172,"context_line":""},{"line_number":173,"context_line":"        return self.v3_token_data_helper.get_token_data("},{"line_number":174,"context_line":"            user_id,"},{"line_number":175,"context_line":"            [\u0027password\u0027, \u0027token\u0027],"},{"line_number":176,"context_line":"            {},"},{"line_number":177,"context_line":"            project_id\u003dproject_id,"},{"line_number":178,"context_line":"            expires\u003dexpires_at,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_1c673c27","line":175,"in_reply_to":"9a80dd14_199a176e","updated":"2015-03-09 15:55:13.000000000","message":"this isn\u0027t new code in this patch (it\u0027s just being moved from a different module), but i agree","commit_id":"10b0b3c590868490c46c74af9ebf2992fae18623"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c95b2bb745884a6c7622911e93783c162528dea8","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        return self.v3_token_data_helper.get_token_data("},{"line_number":174,"context_line":"            user_id,"},{"line_number":175,"context_line":"            [\u0027password\u0027, \u0027token\u0027],"},{"line_number":176,"context_line":"            {},"},{"line_number":177,"context_line":"            project_id\u003dproject_id,"},{"line_number":178,"context_line":"            expires\u003dexpires_at,"},{"line_number":179,"context_line":"            issued_at\u003dissued_at,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_598f2f2a","line":176,"updated":"2015-03-06 22:47:32.000000000","message":"suggest use extras\u003d{}. Also, could use a comment why {} is used here.","commit_id":"10b0b3c590868490c46c74af9ebf2992fae18623"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"262717ae3116b552660305b99149dc765b8ce876","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        return self.v3_token_data_helper.get_token_data("},{"line_number":174,"context_line":"            user_id,"},{"line_number":175,"context_line":"            [\u0027password\u0027, \u0027token\u0027],"},{"line_number":176,"context_line":"            {},"},{"line_number":177,"context_line":"            project_id\u003dproject_id,"},{"line_number":178,"context_line":"            expires\u003dexpires_at,"},{"line_number":179,"context_line":"            issued_at\u003dissued_at,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9a80dd14_9c7a4cbb","line":176,"in_reply_to":"9a80dd14_598f2f2a","updated":"2015-03-09 15:55:13.000000000","message":"this isn\u0027t new code in this patch either, but instead of documenting this antipattern, i\u0027d rather just make it an optional argument and stop shoveling garbage around: https://review.openstack.org/#/c/162661/","commit_id":"10b0b3c590868490c46c74af9ebf2992fae18623"}],"keystone/token/providers/fernet/token_formatters.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c5a68a514f557515e27d9f4df7a37dfe6fb41a0c","unresolved":false,"context_lines":[{"line_number":150,"context_line":"    def validate_token(self, token_string):"},{"line_number":151,"context_line":"        \"\"\"Validate an unscoped token."},{"line_number":152,"context_line":""},{"line_number":153,"context_line":"        :param token_string: a string representing the token"},{"line_number":154,"context_line":"        :return: a tuple contains the user_id and token_data"},{"line_number":155,"context_line":""},{"line_number":156,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_1db5b17d","line":153,"updated":"2015-03-06 16:58:08.000000000","message":"Needs to be updated.","commit_id":"d1f8fcf1930f31ebdbec1e3873212723f1810edb"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c5a68a514f557515e27d9f4df7a37dfe6fb41a0c","unresolved":false,"context_lines":[{"line_number":202,"context_line":"    def validate_token(self, token_string):"},{"line_number":203,"context_line":"        \"\"\"Validate a F00 formatted token."},{"line_number":204,"context_line":""},{"line_number":205,"context_line":"        :param token_string: a string representing the token"},{"line_number":206,"context_line":"        :return: a tuple contains the user_id, project_id and token_data"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_5db2c994","line":205,"updated":"2015-03-06 16:58:08.000000000","message":"Same here","commit_id":"d1f8fcf1930f31ebdbec1e3873212723f1810edb"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"c5a68a514f557515e27d9f4df7a37dfe6fb41a0c","unresolved":false,"context_lines":[{"line_number":264,"context_line":"    def validate_token(self, token_string):"},{"line_number":265,"context_line":"        \"\"\"Validate a trust formatted token."},{"line_number":266,"context_line":""},{"line_number":267,"context_line":"        :param token_string: a string representing the token"},{"line_number":268,"context_line":"        :return: a tuple contains the user_id, project_id and token_data"},{"line_number":269,"context_line":""},{"line_number":270,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":4,"id":"9a80dd14_9da8c121","line":267,"updated":"2015-03-06 16:58:08.000000000","message":"Same here","commit_id":"d1f8fcf1930f31ebdbec1e3873212723f1810edb"}]}
