)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c573aad5276a98141b23ed3f50e1801b98a4f328","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Support token_format for backward compatibility"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"The provider property in the [token] section will be unset by default. If"},{"line_number":10,"context_line":"provider is not set, we will us token_format in the [signing] section to"},{"line_number":11,"context_line":"determine to provider. If provider is set, it must agree with the token_format."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"fixed bug 1202651"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"AAAAQn%2F%2F81g%3D","line":10,"updated":"2013-07-18 16:17:42.000000000","message":"us -\u003e use?","commit_id":"06e373b9ffbc45f89130884bdf82cc69d8178c6b"}],"etc/keystone.conf.sample":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"59b2c048df1cf141ffb597d850ca7e86fecc11f5","unresolved":false,"context_lines":[{"line_number":128,"context_line":"# driver \u003d keystone.token.backends.sql.Token"},{"line_number":129,"context_line":""},{"line_number":130,"context_line":"# Controls the token construction, validation, and revocation operations."},{"line_number":131,"context_line":"# Note this property is unset by default. If set, the \u0027token_format\u0027 property"},{"line_number":132,"context_line":"# in the [signing] must agree with the provider."},{"line_number":133,"context_line":"# provider \u003d keystone.token.providers.pki.Provider"},{"line_number":134,"context_line":""}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAQn%2F%2F9CE%3D","line":131,"updated":"2013-07-18 15:39:30.000000000","message":"i kind of feel like this whole comment can be removed?","commit_id":"c09726d44a81450bcab7eb7658dec5653fccf001"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"59b2c048df1cf141ffb597d850ca7e86fecc11f5","unresolved":false,"context_lines":[{"line_number":163,"context_line":"#cert_subject \u003d /C\u003dUS/ST\u003dUnset/L\u003dUnset/O\u003dUnset/CN\u003dlocalhost"},{"line_number":164,"context_line":""},{"line_number":165,"context_line":"[signing]"},{"line_number":166,"context_line":"# Note token_format have been deprecated in favor of provider in the [token]"},{"line_number":167,"context_line":"# section. If provider property in the [token] section is set, it must agrees"},{"line_number":168,"context_line":"# with token_format."},{"line_number":169,"context_line":"#token_format \u003d PKI"}],"source_content_type":"application/octet-stream","patch_set":1,"id":"AAAAQn%2F%2F9Bs%3D","line":166,"updated":"2013-07-18 15:39:30.000000000","message":"I think this would be sufficient\n\n  # Deprecated in favor of [token] provider\n\nthe rest can be communicated via error messages","commit_id":"c09726d44a81450bcab7eb7658dec5653fccf001"}],"keystone/common/config.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"293f00ddaf4ff308f7561c02f9b89140b6caaa0d","unresolved":false,"context_lines":[{"line_number":415,"context_line":"    register_str("},{"line_number":416,"context_line":"        \u0027provider\u0027,"},{"line_number":417,"context_line":"        group\u003d\u0027token\u0027,"},{"line_number":418,"context_line":"        default\u003d\u0027\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F9AI%3D","line":418,"updated":"2013-07-18 15:44:52.000000000","message":"use None to detect that it\u0027s not set; an empty string is a valid value that a user could specify via\n\n  provider \u003d","commit_id":"c09726d44a81450bcab7eb7658dec5653fccf001"}],"keystone/token/provider.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"293f00ddaf4ff308f7561c02f9b89140b6caaa0d","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        instead."},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"        \"\"\""},{"line_number":59,"context_line":"        if len(CONF.token.provider.strip()) \u003e 0:"},{"line_number":60,"context_line":"            # FIXME(gyee): we are deprecating CONF.signing.token_format. This"},{"line_number":61,"context_line":"            # code is to ensure the token provider configuration agrees with"},{"line_number":62,"context_line":"            # CONF.signing.token_format."}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F8%2F8%3D","line":59,"updated":"2013-07-18 15:44:52.000000000","message":"if CONF.token.provider is not None","commit_id":"c09726d44a81450bcab7eb7658dec5653fccf001"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"293f00ddaf4ff308f7561c02f9b89140b6caaa0d","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            # code is to ensure the token provider configuration agrees with"},{"line_number":62,"context_line":"            # CONF.signing.token_format."},{"line_number":63,"context_line":"            if ((CONF.signing.token_format \u003d\u003d \u0027PKI\u0027 and"},{"line_number":64,"context_line":"                    not CONF.token.provider.endswith(\u0027.pki.Provider\u0027)) or"},{"line_number":65,"context_line":"                    (CONF.signing.token_format \u003d\u003d \u0027UUID\u0027 and"},{"line_number":66,"context_line":"                        not CONF.token.provider.endswith(\u0027uuid.Provider\u0027))):"},{"line_number":67,"context_line":"                raise ValueError(\u0027token_format conflicts with token provider\u0027)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F8%2Fk%3D","line":64,"updated":"2013-07-18 15:44:52.000000000","message":"use the full expected package path:\n\n  and CONF.token.provider !\u003d \u0027keystone.token.providers.pki.Provider\u0027","commit_id":"c09726d44a81450bcab7eb7658dec5653fccf001"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"293f00ddaf4ff308f7561c02f9b89140b6caaa0d","unresolved":false,"context_lines":[{"line_number":64,"context_line":"                    not CONF.token.provider.endswith(\u0027.pki.Provider\u0027)) or"},{"line_number":65,"context_line":"                    (CONF.signing.token_format \u003d\u003d \u0027UUID\u0027 and"},{"line_number":66,"context_line":"                        not CONF.token.provider.endswith(\u0027uuid.Provider\u0027))):"},{"line_number":67,"context_line":"                raise ValueError(\u0027token_format conflicts with token provider\u0027)"},{"line_number":68,"context_line":"            return CONF.token.provider"},{"line_number":69,"context_line":"        else:"},{"line_number":70,"context_line":"            if CONF.signing.token_format \u003d\u003d \u0027PKI\u0027:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F8%2BY%3D","line":67,"updated":"2013-07-18 15:44:52.000000000","message":"use the built in oen\n\n  raise exception.UnexpectedError(\u0027[signing] token_format conflicts with [token] provider in keystone.conf\u0027)","commit_id":"c09726d44a81450bcab7eb7658dec5653fccf001"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"293f00ddaf4ff308f7561c02f9b89140b6caaa0d","unresolved":false,"context_lines":[{"line_number":72,"context_line":"            elif CONF.signing.token_format \u003d\u003d \u0027UUID\u0027:"},{"line_number":73,"context_line":"                return \u0027keystone.token.providers.uuid.Provider\u0027"},{"line_number":74,"context_line":"            else:"},{"line_number":75,"context_line":"                raise ValueError(\u0027unsupported token format\u0027)"},{"line_number":76,"context_line":""},{"line_number":77,"context_line":"    def __init__(self):"},{"line_number":78,"context_line":"        super(Manager, self).__init__(self.check_and_get_token_provider())"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F898%3D","line":75,"updated":"2013-07-18 15:44:52.000000000","message":"s/unsupported/unrecognized/ \n\nand add the expected values:\n\n  Must be either \u0027UUID\u0027 or \u0027PKI\u0027","commit_id":"c09726d44a81450bcab7eb7658dec5653fccf001"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c573aad5276a98141b23ed3f50e1801b98a4f328","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                    (CONF.signing.token_format \u003d\u003d \u0027UUID\u0027 and"},{"line_number":70,"context_line":"                        CONF.token.provider !\u003d UUID_PROVIDER))):"},{"line_number":71,"context_line":"                raise exception.UnexpectedError("},{"line_number":72,"context_line":"                    \u0027[signing] token_format conflicts with [token] provider \u0027 +"},{"line_number":73,"context_line":"                    \u0027in keystone.conf\u0027)"},{"line_number":74,"context_line":"            return CONF.token.provider"},{"line_number":75,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2F80I%3D","line":72,"updated":"2013-07-18 16:17:42.000000000","message":"Is the \u0027+\u0027 required here?","commit_id":"06e373b9ffbc45f89130884bdf82cc69d8178c6b"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"b0a9e9cd71d8d10de5923bca2ad11e6b061762dd","unresolved":false,"context_lines":[{"line_number":69,"context_line":"                    (CONF.signing.token_format \u003d\u003d \u0027UUID\u0027 and"},{"line_number":70,"context_line":"                        CONF.token.provider !\u003d UUID_PROVIDER))):"},{"line_number":71,"context_line":"                raise exception.UnexpectedError("},{"line_number":72,"context_line":"                    \u0027[signing] token_format conflicts with [token] provider \u0027 +"},{"line_number":73,"context_line":"                    \u0027in keystone.conf\u0027)"},{"line_number":74,"context_line":"            return CONF.token.provider"},{"line_number":75,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2F80c%3D","line":72,"updated":"2013-07-18 16:13:47.000000000","message":"the concatanation is unnecessary","commit_id":"06e373b9ffbc45f89130884bdf82cc69d8178c6b"},{"author":{"_account_id":5046,"name":"Lance Bragstad","email":"lbragstad@redhat.com","username":"ldbragst"},"change_message_id":"c573aad5276a98141b23ed3f50e1801b98a4f328","unresolved":false,"context_lines":[{"line_number":79,"context_line":"                return UUID_PROVIDER"},{"line_number":80,"context_line":"            else:"},{"line_number":81,"context_line":"                raise exception.UnexpectedError("},{"line_number":82,"context_line":"                    \u0027unrecognized token format. Must be either \u0027 +"},{"line_number":83,"context_line":"                    \u0027\\\u0027UUID\\\u0027 or \\\u0027PKI\\\u0027\u0027)"},{"line_number":84,"context_line":""},{"line_number":85,"context_line":"    def __init__(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAQn%2F%2F80E%3D","line":82,"updated":"2013-07-18 16:17:42.000000000","message":"Is the \u0027+\u0027 required here?","commit_id":"06e373b9ffbc45f89130884bdf82cc69d8178c6b"}],"tests/test_token_provider.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"233ca8c4f47e829e84ddec977ece4f5e8c06303a","unresolved":false,"context_lines":[{"line_number":411,"context_line":""},{"line_number":412,"context_line":"    def test_provider_override_token_format(self):"},{"line_number":413,"context_line":"        self.opt_in_group(\u0027token\u0027,"},{"line_number":414,"context_line":"                          provider\u003d\u0027keystone.token.providers.pki.Test\u0027)"},{"line_number":415,"context_line":"        self.assertRaises(ValueError,"},{"line_number":416,"context_line":"                          token.provider.Manager.check_and_get_token_provider)"},{"line_number":417,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F89I%3D","line":414,"updated":"2013-07-18 15:49:14.000000000","message":"i\u0027m not sure what\u0027s wrong with this? why can\u0027t users specify a custom class..? that\u0027s the goal of making it pluggable\n\nif the value error is suppressing an import error, then this needs to be fixed","commit_id":"c09726d44a81450bcab7eb7658dec5653fccf001"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"233ca8c4f47e829e84ddec977ece4f5e8c06303a","unresolved":false,"context_lines":[{"line_number":427,"context_line":"        self.assertEqual(token.provider.Manager.check_and_get_token_provider(),"},{"line_number":428,"context_line":"                         \u0027keystone.token.providers.pki.Provider\u0027)"},{"line_number":429,"context_line":""},{"line_number":430,"context_line":"        self.opt_in_group(\u0027signing\u0027, token_format\u003d\u0027CUSTOM\u0027)"},{"line_number":431,"context_line":"        self.opt_in_group(\u0027token\u0027,"},{"line_number":432,"context_line":"                          provider\u003d\u0027my.package.MyProvider\u0027)"},{"line_number":433,"context_line":"        self.assertEqual(token.provider.Manager.check_and_get_token_provider(),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAQn%2F%2F874%3D","line":430,"updated":"2013-07-18 15:49:14.000000000","message":"i feel like this should raise an error, or just not be tested. it looks to illustrate that in order to use a custom provider, you have to set signing format to \u0027CUSTOM\u0027 which goes against the notion that we\u0027re deprecating the option","commit_id":"c09726d44a81450bcab7eb7658dec5653fccf001"}]}
