)]}'
{"keystonemiddleware/auth_token.py":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"f0edc7b953a6bf537e4abee3620eee26a63638f3","unresolved":false,"context_lines":[{"line_number":482,"context_line":"        self.headers.append((\u0027Content-type\u0027, \u0027text/plain\u0027))"},{"line_number":483,"context_line":""},{"line_number":484,"context_line":""},{"line_number":485,"context_line":"class _AuthTokenPlugin(auth.BaseAuthPlugin):"},{"line_number":486,"context_line":""},{"line_number":487,"context_line":"    def __init__(self, auth_host, auth_port, auth_protocol, auth_admin_prefix,"},{"line_number":488,"context_line":"                 username, password, tenant_name,"}],"source_content_type":"text/x-python","patch_set":3,"id":"baa201ad_7bf61ad9","line":485,"updated":"2014-09-30 21:55:59.000000000","message":"Can we reuse the Keystone client plugins and stevedore here?","commit_id":"efc9172125e6c51d08b9894e0b560701326fc218"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"379d9bf329d20ae4d12a98f4b27292c18cc4fbd0","unresolved":false,"context_lines":[{"line_number":503,"context_line":"        self.headers.append((\u0027Content-type\u0027, \u0027text/plain\u0027))"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"class _AuthTokenPlugin(auth.BaseAuthPlugin):"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def __init__(self, auth_host, auth_port, auth_protocol, auth_admin_prefix,"},{"line_number":509,"context_line":"                 username, password, tenant_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_01bba372","line":506,"updated":"2014-10-23 01:58:33.000000000","message":"Why isn\u0027t this a BaseIdentityPlugin?","commit_id":"45d8fa5b829f5da06b29827a1f9e029885e9b32a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f5e2cb0bf0e4ab9cbe602d90e67c1f1fec7ca12c","unresolved":false,"context_lines":[{"line_number":503,"context_line":"        self.headers.append((\u0027Content-type\u0027, \u0027text/plain\u0027))"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"class _AuthTokenPlugin(auth.BaseAuthPlugin):"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def __init__(self, auth_host, auth_port, auth_protocol, auth_admin_prefix,"},{"line_number":509,"context_line":"                 username, password, tenant_name,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_1ffbf3c1","line":506,"in_reply_to":"9aa7fdbe_01bba372","updated":"2014-10-23 15:14:48.000000000","message":"because it\u0027s a proxy for v2.Password and token_endpoint.Token and token_endpoint.Token is not an IdentityPlugin.","commit_id":"45d8fa5b829f5da06b29827a1f9e029885e9b32a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"379d9bf329d20ae4d12a98f4b27292c18cc4fbd0","unresolved":false,"context_lines":[{"line_number":504,"context_line":""},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"class _AuthTokenPlugin(auth.BaseAuthPlugin):"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def __init__(self, auth_host, auth_port, auth_protocol, auth_admin_prefix,"},{"line_number":509,"context_line":"                 username, password, tenant_name,"},{"line_number":510,"context_line":"                 admin_token, identity_uri, log):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_9427cfb5","line":507,"updated":"2014-10-23 01:58:33.000000000","message":"it\u0027d be nice to have unit tests specifically for this plugin.","commit_id":"45d8fa5b829f5da06b29827a1f9e029885e9b32a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f5e2cb0bf0e4ab9cbe602d90e67c1f1fec7ca12c","unresolved":false,"context_lines":[{"line_number":504,"context_line":""},{"line_number":505,"context_line":""},{"line_number":506,"context_line":"class _AuthTokenPlugin(auth.BaseAuthPlugin):"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def __init__(self, auth_host, auth_port, auth_protocol, auth_admin_prefix,"},{"line_number":509,"context_line":"                 username, password, tenant_name,"},{"line_number":510,"context_line":"                 admin_token, identity_uri, log):"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_21397541","line":507,"in_reply_to":"9aa7fdbe_9427cfb5","updated":"2014-10-23 15:14:48.000000000","message":"Done","commit_id":"45d8fa5b829f5da06b29827a1f9e029885e9b32a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"379d9bf329d20ae4d12a98f4b27292c18cc4fbd0","unresolved":false,"context_lines":[{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def __init__(self, auth_host, auth_port, auth_protocol, auth_admin_prefix,"},{"line_number":509,"context_line":"                 username, password, tenant_name,"},{"line_number":510,"context_line":"                 admin_token, identity_uri, log):"},{"line_number":511,"context_line":"        # NOTE(jamielennox): it does appear here that our default arguments"},{"line_number":512,"context_line":"        # are backwards. We need to do it this way so that we can handle the"},{"line_number":513,"context_line":"        # same deprecation strategy for CONF and the conf variable."}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_a1ef3786","line":510,"updated":"2014-10-23 01:58:33.000000000","message":"could reformat this so it fills in the previous line for consistency","commit_id":"45d8fa5b829f5da06b29827a1f9e029885e9b32a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f5e2cb0bf0e4ab9cbe602d90e67c1f1fec7ca12c","unresolved":false,"context_lines":[{"line_number":507,"context_line":""},{"line_number":508,"context_line":"    def __init__(self, auth_host, auth_port, auth_protocol, auth_admin_prefix,"},{"line_number":509,"context_line":"                 username, password, tenant_name,"},{"line_number":510,"context_line":"                 admin_token, identity_uri, log):"},{"line_number":511,"context_line":"        # NOTE(jamielennox): it does appear here that our default arguments"},{"line_number":512,"context_line":"        # are backwards. We need to do it this way so that we can handle the"},{"line_number":513,"context_line":"        # same deprecation strategy for CONF and the conf variable."}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_5ffadb43","line":510,"in_reply_to":"9aa7fdbe_a1ef3786","updated":"2014-10-23 15:14:48.000000000","message":"Done","commit_id":"45d8fa5b829f5da06b29827a1f9e029885e9b32a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"379d9bf329d20ae4d12a98f4b27292c18cc4fbd0","unresolved":false,"context_lines":[{"line_number":567,"context_line":""},{"line_number":568,"context_line":"    @classmethod"},{"line_number":569,"context_line":"    def get_options(cls):"},{"line_number":570,"context_line":"        options \u003d super(_AuthTokenPlugin, cls).get_options()"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"        options.extend(["},{"line_number":573,"context_line":"            cfg.StrOpt(\u0027auth_admin_prefix\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_8154f321","line":570,"updated":"2014-10-23 01:58:33.000000000","message":"BaseAuthPlugin doesn\u0027t have get_options... how does this work?","commit_id":"45d8fa5b829f5da06b29827a1f9e029885e9b32a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f5e2cb0bf0e4ab9cbe602d90e67c1f1fec7ca12c","unresolved":false,"context_lines":[{"line_number":567,"context_line":""},{"line_number":568,"context_line":"    @classmethod"},{"line_number":569,"context_line":"    def get_options(cls):"},{"line_number":570,"context_line":"        options \u003d super(_AuthTokenPlugin, cls).get_options()"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"        options.extend(["},{"line_number":573,"context_line":"            cfg.StrOpt(\u0027auth_admin_prefix\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_ffe0effb","line":570,"in_reply_to":"9aa7fdbe_8154f321","updated":"2014-10-23 15:14:48.000000000","message":"https://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/auth/base.py#L114","commit_id":"45d8fa5b829f5da06b29827a1f9e029885e9b32a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"379d9bf329d20ae4d12a98f4b27292c18cc4fbd0","unresolved":false,"context_lines":[{"line_number":569,"context_line":"    def get_options(cls):"},{"line_number":570,"context_line":"        options \u003d super(_AuthTokenPlugin, cls).get_options()"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"        options.extend(["},{"line_number":573,"context_line":"            cfg.StrOpt(\u0027auth_admin_prefix\u0027,"},{"line_number":574,"context_line":"                       default\u003d\u0027\u0027,"},{"line_number":575,"context_line":"                       help\u003d\u0027Prefix to prepend at the beginning of the path. \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_01400355","line":572,"updated":"2014-10-23 01:58:33.000000000","message":"should probably make a copy of options just in case get_options returns a constant.","commit_id":"45d8fa5b829f5da06b29827a1f9e029885e9b32a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f5e2cb0bf0e4ab9cbe602d90e67c1f1fec7ca12c","unresolved":false,"context_lines":[{"line_number":569,"context_line":"    def get_options(cls):"},{"line_number":570,"context_line":"        options \u003d super(_AuthTokenPlugin, cls).get_options()"},{"line_number":571,"context_line":""},{"line_number":572,"context_line":"        options.extend(["},{"line_number":573,"context_line":"            cfg.StrOpt(\u0027auth_admin_prefix\u0027,"},{"line_number":574,"context_line":"                       default\u003d\u0027\u0027,"},{"line_number":575,"context_line":"                       help\u003d\u0027Prefix to prepend at the beginning of the path. \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_dfa96b91","line":572,"in_reply_to":"9aa7fdbe_01400355","updated":"2014-10-23 15:14:48.000000000","message":"hmm, this is a pattern that was followed throughout all the plugins in keystoneclient. \n\nYou are right, but would it be sufficient to update the get_options doc strings?","commit_id":"45d8fa5b829f5da06b29827a1f9e029885e9b32a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"379d9bf329d20ae4d12a98f4b27292c18cc4fbd0","unresolved":false,"context_lines":[{"line_number":1289,"context_line":"            # NOTE(jamielennox): we urljoin \u0027/\u0027 to get just the base URI"},{"line_number":1290,"context_line":"            # as this is the original behaviour."},{"line_number":1291,"context_line":"            auth_uri \u003d urllib.parse.urljoin(sess.auth._identity_uri, \u0027/\u0027)"},{"line_number":1292,"context_line":"            self._auth_uri \u003d auth_uri.rstrip(\u0027/\u0027)"},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"        return sess"},{"line_number":1295,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_81023309","line":1292,"updated":"2014-10-23 01:58:33.000000000","message":"_auth_uri was set in __init__ and now it\u0027s being overwitten in _session_factory. Pick one place ot set it.","commit_id":"45d8fa5b829f5da06b29827a1f9e029885e9b32a"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"f5e2cb0bf0e4ab9cbe602d90e67c1f1fec7ca12c","unresolved":false,"context_lines":[{"line_number":1289,"context_line":"            # NOTE(jamielennox): we urljoin \u0027/\u0027 to get just the base URI"},{"line_number":1290,"context_line":"            # as this is the original behaviour."},{"line_number":1291,"context_line":"            auth_uri \u003d urllib.parse.urljoin(sess.auth._identity_uri, \u0027/\u0027)"},{"line_number":1292,"context_line":"            self._auth_uri \u003d auth_uri.rstrip(\u0027/\u0027)"},{"line_number":1293,"context_line":""},{"line_number":1294,"context_line":"        return sess"},{"line_number":1295,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"9aa7fdbe_1f6f732c","line":1292,"in_reply_to":"9aa7fdbe_81023309","updated":"2014-10-23 15:14:48.000000000","message":"Done","commit_id":"45d8fa5b829f5da06b29827a1f9e029885e9b32a"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0f47fceda35743f28bcadda8dfae961d2d72ad8f","unresolved":false,"context_lines":[{"line_number":569,"context_line":"        return self._identity_uri"},{"line_number":570,"context_line":""},{"line_number":571,"context_line":"    def invalidate(self):"},{"line_number":572,"context_line":"        return self._plugin.invalidate()"},{"line_number":573,"context_line":""},{"line_number":574,"context_line":"    @classmethod"},{"line_number":575,"context_line":"    def get_options(cls):"}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_46484287","line":572,"updated":"2014-10-23 23:39:07.000000000","message":"This isn\u0027t tested.","commit_id":"5d8b434de815ff5b0f34e3ba61daa626617332ce"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0f47fceda35743f28bcadda8dfae961d2d72ad8f","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"    # cleanup and better organization effort of AuthProtocol."},{"line_number":1269,"context_line":"    def _session_factory(self):"},{"line_number":1270,"context_line":"        # NOTE(jamielennox): Loading Session here should be exactly the"},{"line_number":1271,"context_line":"        # same as calling Session.load_from_conf_options(CONF, GROUP)"},{"line_number":1272,"context_line":"        # however we can\u0027t do that because we have to use _conf_get to support"},{"line_number":1273,"context_line":"        # the paste.ini options."},{"line_number":1274,"context_line":"        sess \u003d session.Session.construct(dict("}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_6604664a","line":1271,"updated":"2014-10-23 23:39:07.000000000","message":"create a CONF adapter that uses _conf_get. load_from_conf_options should be more flexible.","commit_id":"5d8b434de815ff5b0f34e3ba61daa626617332ce"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"8eaa50691f711fa804bc2f0d23590f02d4052971","unresolved":false,"context_lines":[{"line_number":1268,"context_line":"    # cleanup and better organization effort of AuthProtocol."},{"line_number":1269,"context_line":"    def _session_factory(self):"},{"line_number":1270,"context_line":"        # NOTE(jamielennox): Loading Session here should be exactly the"},{"line_number":1271,"context_line":"        # same as calling Session.load_from_conf_options(CONF, GROUP)"},{"line_number":1272,"context_line":"        # however we can\u0027t do that because we have to use _conf_get to support"},{"line_number":1273,"context_line":"        # the paste.ini options."},{"line_number":1274,"context_line":"        sess \u003d session.Session.construct(dict("}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_64d539b8","line":1271,"in_reply_to":"9aa7fdbe_6604664a","updated":"2014-10-24 08:45:15.000000000","message":"This is how i tried it initially: https://review.openstack.org/#/c/115451 but it really wasn\u0027t nice.\n\nAfter proposing that and talking to dhellman i thought it might be something that would be generally useful: https://review.openstack.org/#/c/115565/\n\nIf that one makes it through i\u0027ll give it a try, but i think i\u0027m happy to say for now that new options should be CONF only and do the quickest possible thing for auth_token.","commit_id":"5d8b434de815ff5b0f34e3ba61daa626617332ce"}],"keystonemiddleware/tests/test_auth_token_middleware.py":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"0f47fceda35743f28bcadda8dfae961d2d72ad8f","unresolved":false,"context_lines":[{"line_number":2442,"context_line":"        auth_protocol \u003d \"http\""},{"line_number":2443,"context_line":"        auth_host \u003d \"testhost\""},{"line_number":2444,"context_line":"        auth_port \u003d 8888"},{"line_number":2445,"context_line":"        auth_admin_prefix \u003d \"admin\""},{"line_number":2446,"context_line":""},{"line_number":2447,"context_line":"        expected \u003d \u0027%s://%s:%d\u0027 % (auth_protocol, auth_host, auth_port)"},{"line_number":2448,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"9aa7fdbe_8676aad5","line":2445,"updated":"2014-10-23 23:39:07.000000000","message":"use \u0027 for consistency.","commit_id":"5d8b434de815ff5b0f34e3ba61daa626617332ce"}]}
