)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"e4ef8f6f993ceee0a1eea7f928ee12ee2be7efc6","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move auth_token session code to middleware repo"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch should emulate the same behaviour of the existing auth token"},{"line_number":10,"context_line":"middleware but using the new session object for requests and token"},{"line_number":11,"context_line":"management."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_c49e0db8","line":9,"updated":"2014-07-11 04:41:53.000000000","message":"should?","commit_id":"9bb48674c2d35f843aa80381f267699a2e2b1811"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"155a6082c23cf5b6097209534cf1290a729690da","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move auth_token session code to middleware repo"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch should emulate the same behaviour of the existing auth token"},{"line_number":10,"context_line":"middleware but using the new session object for requests and token"},{"line_number":11,"context_line":"management."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"baada198_a1a0c0f4","line":9,"in_reply_to":"baada198_c49e0db8","updated":"2014-07-15 05:36:55.000000000","message":"that\u0027s one of mine.","commit_id":"9bb48674c2d35f843aa80381f267699a2e2b1811"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"7eb3a2797db3a4b6c91d4bd45306e6fb709c0dde","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Jamie Lennox \u003cjamielennox@redhat.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2014-07-15 15:39:51 +1000"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move auth_token session code to middleware repo"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch emulates the same behaviour of the existing auth token"},{"line_number":10,"context_line":"middleware but using the new session object for requests and token"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baada198_261f115d","line":7,"updated":"2014-07-16 20:11:49.000000000","message":"change the title;  duplicating a review should not referr to the old review, but instead should just state what the review accomplishes:\n\nconver auth_token middleware to use keystone sessions","commit_id":"424a0542c5319d15985130b06c591e236daed3cc"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"7eb3a2797db3a4b6c91d4bd45306e6fb709c0dde","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Move auth_token session code to middleware repo"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"This patch emulates the same behaviour of the existing auth token"},{"line_number":10,"context_line":"middleware but using the new session object for requests and token"},{"line_number":11,"context_line":"management."},{"line_number":12,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"baada198_663f49b6","line":9,"updated":"2014-07-16 20:11:49.000000000","message":"and clean up the following paragraphs to not refer to the other review request.  The review will not go through now, and will be ancient history when someone reads git history years from now.","commit_id":"424a0542c5319d15985130b06c591e236daed3cc"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"424087955e6f68e2f4a151a09c53efd1c9e4717e","unresolved":false,"context_lines":[{"line_number":20,"context_line":"This fixes the existing behaviour that if an admin_token was given and"},{"line_number":21,"context_line":"was marked invalid then the middleware would fallback to using the"},{"line_number":22,"context_line":"username and password provided. If an authentication method fails then"},{"line_number":23,"context_line":"this is something that should be addressed not compensated for."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Co-authored-by: Harry Rybacki \u003chrybacki@redhat.com\u003e"},{"line_number":26,"context_line":"Change-Id: Ib52beaaa1e01875cceaae78dc879a6399ccefa36"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"baada198_3128f432","line":23,"updated":"2014-07-24 07:14:22.000000000","message":"It will be great if there is a test to validate this behavior.","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"e2532e6d90c29b934e473aaffb97155af71eff0a","unresolved":false,"context_lines":[{"line_number":20,"context_line":"This fixes the existing behaviour that if an admin_token was given and"},{"line_number":21,"context_line":"was marked invalid then the middleware would fallback to using the"},{"line_number":22,"context_line":"username and password provided. If an authentication method fails then"},{"line_number":23,"context_line":"this is something that should be addressed not compensated for."},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"Co-authored-by: Harry Rybacki \u003chrybacki@redhat.com\u003e"},{"line_number":26,"context_line":"Change-Id: Ib52beaaa1e01875cceaae78dc879a6399ccefa36"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"baada198_f7300509","line":23,"in_reply_to":"baada198_3128f432","updated":"2014-07-25 03:57:37.000000000","message":"It will be tested by merely being used.  The existing unit tests are sufficient.","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"}],"keystonemiddleware/auth_token.py":[{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0305fcae86781a1b227381060fe5b2c1eaa49d1e","unresolved":false,"context_lines":[{"line_number":555,"context_line":"        self._revoked_file_name \u003d val"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"       # Token caching"},{"line_number":558,"context_line":"        self._cache_pool \u003d None"},{"line_number":559,"context_line":"        self._cache_initialized \u003d False"},{"line_number":560,"context_line":"        # memcache value treatement, ENCRYPT or MAC"},{"line_number":561,"context_line":"        self._memcache_security_strategy \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_9e84ef0b","line":558,"updated":"2014-07-07 23:31:38.000000000","message":"i think this is a rebase issue, it seems to be part of the _token_cache now","commit_id":"ecceef3c624d238a85c5fb79df9737d5eb824476"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"e737aa812476c0c14012f36e559d1081df710469","unresolved":false,"context_lines":[{"line_number":555,"context_line":"        self._revoked_file_name \u003d val"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"       # Token caching"},{"line_number":558,"context_line":"        self._cache_pool \u003d None"},{"line_number":559,"context_line":"        self._cache_initialized \u003d False"},{"line_number":560,"context_line":"        # memcache value treatement, ENCRYPT or MAC"},{"line_number":561,"context_line":"        self._memcache_security_strategy \u003d ("}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_7e0b9b7c","line":558,"in_reply_to":"baada198_9e84ef0b","updated":"2014-07-07 23:39:18.000000000","message":"Nods, I\u0027ll change that.","commit_id":"ecceef3c624d238a85c5fb79df9737d5eb824476"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0305fcae86781a1b227381060fe5b2c1eaa49d1e","unresolved":false,"context_lines":[{"line_number":558,"context_line":"        self._cache_pool \u003d None"},{"line_number":559,"context_line":"        self._cache_initialized \u003d False"},{"line_number":560,"context_line":"        # memcache value treatement, ENCRYPT or MAC"},{"line_number":561,"context_line":"        self._memcache_security_strategy \u003d ("},{"line_number":562,"context_line":"            self._conf_get(\u0027memcache_security_strategy\u0027))"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"        self._token_cache \u003d _TokenCache("}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_7e98fb69","line":561,"updated":"2014-07-07 23:31:38.000000000","message":"why put this on self? it\u0027s only used for the _token_cache init below.","commit_id":"ecceef3c624d238a85c5fb79df9737d5eb824476"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"e737aa812476c0c14012f36e559d1081df710469","unresolved":false,"context_lines":[{"line_number":558,"context_line":"        self._cache_pool \u003d None"},{"line_number":559,"context_line":"        self._cache_initialized \u003d False"},{"line_number":560,"context_line":"        # memcache value treatement, ENCRYPT or MAC"},{"line_number":561,"context_line":"        self._memcache_security_strategy \u003d ("},{"line_number":562,"context_line":"            self._conf_get(\u0027memcache_security_strategy\u0027))"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"        self._token_cache \u003d _TokenCache("}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_7efd5b6d","line":561,"in_reply_to":"baada198_7e98fb69","updated":"2014-07-07 23:39:18.000000000","message":"It\u0027s used in several locations actually e.g. _assert_valid_memcache_protection_config, _cache_get, and _cache_store","commit_id":"ecceef3c624d238a85c5fb79df9737d5eb824476"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"ec42cbd641e09d2065d9e5ee7074973cc0ee2e9d","unresolved":false,"context_lines":[{"line_number":558,"context_line":"        self._cache_pool \u003d None"},{"line_number":559,"context_line":"        self._cache_initialized \u003d False"},{"line_number":560,"context_line":"        # memcache value treatement, ENCRYPT or MAC"},{"line_number":561,"context_line":"        self._memcache_security_strategy \u003d ("},{"line_number":562,"context_line":"            self._conf_get(\u0027memcache_security_strategy\u0027))"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"        self._token_cache \u003d _TokenCache("}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_9e14ef4d","line":561,"in_reply_to":"baada198_7eb55b7c","updated":"2014-07-07 23:51:48.000000000","message":"solid point. I\u0027ll make it local only","commit_id":"ecceef3c624d238a85c5fb79df9737d5eb824476"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"100b30045c87516b1003441cc81a67b2c67ca620","unresolved":false,"context_lines":[{"line_number":558,"context_line":"        self._cache_pool \u003d None"},{"line_number":559,"context_line":"        self._cache_initialized \u003d False"},{"line_number":560,"context_line":"        # memcache value treatement, ENCRYPT or MAC"},{"line_number":561,"context_line":"        self._memcache_security_strategy \u003d ("},{"line_number":562,"context_line":"            self._conf_get(\u0027memcache_security_strategy\u0027))"},{"line_number":563,"context_line":""},{"line_number":564,"context_line":"        self._token_cache \u003d _TokenCache("}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_7eb55b7c","line":561,"in_reply_to":"baada198_7efd5b6d","updated":"2014-07-07 23:46:45.000000000","message":"yes, but those functions are all on the _TokenCache object.","commit_id":"ecceef3c624d238a85c5fb79df9737d5eb824476"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0305fcae86781a1b227381060fe5b2c1eaa49d1e","unresolved":false,"context_lines":[{"line_number":774,"context_line":"                break"},{"line_number":775,"context_line":"            except exceptions.HTTPError as e:"},{"line_number":776,"context_line":"                # there is no point in retrying an HTTP error (eg 404) the new"},{"line_number":777,"context_line":"                # request should ive the exact same response."},{"line_number":778,"context_line":"                raise"},{"line_number":779,"context_line":"            except Exception as e:"},{"line_number":780,"context_line":"                if retry \u003e\u003d RETRIES:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_1ea7ffa7","line":777,"updated":"2014-07-07 23:31:38.000000000","message":"s/ive/have","commit_id":"ecceef3c624d238a85c5fb79df9737d5eb824476"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"e737aa812476c0c14012f36e559d1081df710469","unresolved":false,"context_lines":[{"line_number":774,"context_line":"                break"},{"line_number":775,"context_line":"            except exceptions.HTTPError as e:"},{"line_number":776,"context_line":"                # there is no point in retrying an HTTP error (eg 404) the new"},{"line_number":777,"context_line":"                # request should ive the exact same response."},{"line_number":778,"context_line":"                raise"},{"line_number":779,"context_line":"            except Exception as e:"},{"line_number":780,"context_line":"                if retry \u003e\u003d RETRIES:"}],"source_content_type":"text/x-python","patch_set":2,"id":"baada198_9e0eaf8a","line":777,"in_reply_to":"baada198_1ea7ffa7","updated":"2014-07-07 23:39:18.000000000","message":"have","commit_id":"ecceef3c624d238a85c5fb79df9737d5eb824476"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"155a6082c23cf5b6097209534cf1290a729690da","unresolved":false,"context_lines":[{"line_number":554,"context_line":"        val \u003d \u0027%s/revoked.pem\u0027 % self._signing_dirname"},{"line_number":555,"context_line":"        self._revoked_file_name \u003d val"},{"line_number":556,"context_line":""},{"line_number":557,"context_line":"       # Token caching"},{"line_number":558,"context_line":"        self._token_cache \u003d None"},{"line_number":559,"context_line":"        self._cache_initialized \u003d False"},{"line_number":560,"context_line":"        # memcache value treatement, ENCRYPT or MAC"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_e17d586e","line":557,"updated":"2014-07-15 05:36:55.000000000","message":"looks out of line","commit_id":"9bb48674c2d35f843aa80381f267699a2e2b1811"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"e4ef8f6f993ceee0a1eea7f928ee12ee2be7efc6","unresolved":false,"context_lines":[{"line_number":845,"context_line":"                verified \u003d self._verify_signed_token(user_token, token_ids)"},{"line_number":846,"context_line":"                data \u003d jsonutils.loads(verified)"},{"line_number":847,"context_line":"            else:"},{"line_number":848,"context_line":"                data \u003d self._verify_uuid_token(user_token)"},{"line_number":849,"context_line":"            expires \u003d _confirm_token_not_expired(data)"},{"line_number":850,"context_line":"            self._confirm_token_bind(data, env)"},{"line_number":851,"context_line":"            self._token_cache.store(token_id, data, expires)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_e4a5d104","line":848,"updated":"2014-07-11 04:41:53.000000000","message":"Did you mean to also remove the retry paramter into this function the same way you did above?","commit_id":"9bb48674c2d35f843aa80381f267699a2e2b1811"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"155a6082c23cf5b6097209534cf1290a729690da","unresolved":false,"context_lines":[{"line_number":845,"context_line":"                verified \u003d self._verify_signed_token(user_token, token_ids)"},{"line_number":846,"context_line":"                data \u003d jsonutils.loads(verified)"},{"line_number":847,"context_line":"            else:"},{"line_number":848,"context_line":"                data \u003d self._verify_uuid_token(user_token)"},{"line_number":849,"context_line":"            expires \u003d _confirm_token_not_expired(data)"},{"line_number":850,"context_line":"            self._confirm_token_bind(data, env)"},{"line_number":851,"context_line":"            self._token_cache.store(token_id, data, expires)"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_21acb0ec","line":848,"in_reply_to":"baada198_e4a5d104","updated":"2014-07-15 05:36:55.000000000","message":"yes, what it means is that i missed the other one.","commit_id":"9bb48674c2d35f843aa80381f267699a2e2b1811"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"155a6082c23cf5b6097209534cf1290a729690da","unresolved":false,"context_lines":[{"line_number":1010,"context_line":"                                \u0027identifier\u0027: identifier})"},{"line_number":1011,"context_line":"                self._invalid_user_token()"},{"line_number":1012,"context_line":""},{"line_number":1013,"context_line":"    def _verify_uuid_token(self, user_token, retry\u003dTrue):"},{"line_number":1014,"context_line":"        \"\"\"Authenticate user token with keystone."},{"line_number":1015,"context_line":""},{"line_number":1016,"context_line":"        :param user_token: user\u0027s token id"}],"source_content_type":"text/x-python","patch_set":3,"id":"baada198_41b7e439","line":1013,"updated":"2014-07-15 05:36:55.000000000","message":"this retry\u003d should be removed.","commit_id":"9bb48674c2d35f843aa80381f267699a2e2b1811"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"7eb3a2797db3a4b6c91d4bd45306e6fb709c0dde","unresolved":false,"context_lines":[{"line_number":519,"context_line":"            insecure\u003dself._conf_get(\u0027insecure\u0027),"},{"line_number":520,"context_line":"            timeout\u003dself._conf_get(\u0027http_connect_timeout\u0027)))"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        auth_url \u003d \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":523,"context_line":"        token \u003d self._conf_get(\u0027admin_token\u0027)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        # Credentials used to verify this component with the Auth service since"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_86637ddc","line":522,"updated":"2014-07-16 20:11:49.000000000","message":"This looks suspect.  If the URL does not end in /v2.0 or /v3 then we should do discovery, not compose the URL ourselves.","commit_id":"424a0542c5319d15985130b06c591e236daed3cc"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0d7b5e1dfb0324d043be76df33e16f6616ad605c","unresolved":false,"context_lines":[{"line_number":519,"context_line":"            insecure\u003dself._conf_get(\u0027insecure\u0027),"},{"line_number":520,"context_line":"            timeout\u003dself._conf_get(\u0027http_connect_timeout\u0027)))"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        auth_url \u003d \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":523,"context_line":"        token \u003d self._conf_get(\u0027admin_token\u0027)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        # Credentials used to verify this component with the Auth service since"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_069d7fbb","line":522,"in_reply_to":"baada198_86637ddc","updated":"2014-07-24 00:54:23.000000000","message":"Agreed, this won\u0027t last long, it\u0027ll hopefully be replaced by loading auth plugins from CONF.\n\nHarry, for a short term fix here you want something like: \n\n    from keystoneclient import discovery\n\n    disc \u003d discover.Discover(auth_url\u003dself._identity_url) \n    auth_url \u003d disc.url_for(\u0027v2.0\u0027)\n\n    if not auth_url: \n        self._LOG.warning(\"There is no identity v2.0 at the provided URL\")\n\nIt\u0027s on my list (which may be harry\u0027s list) to convert this to using ksc discovery. Hopefully that patch will come in quickly enough that we don\u0027t release this as it is an extra call.","commit_id":"424a0542c5319d15985130b06c591e236daed3cc"},{"author":{"_account_id":220,"name":"Haneef Ali","email":"haneef.ali@hp.com","username":"haneef"},"change_message_id":"c8c54fbdf1c4e56b6ba4b573ddb6bd2d2efb4594","unresolved":false,"context_lines":[{"line_number":520,"context_line":"            timeout\u003dself._conf_get(\u0027http_connect_timeout\u0027)))"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        auth_url \u003d \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":523,"context_line":"        token \u003d self._conf_get(\u0027admin_token\u0027)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        # Credentials used to verify this component with the Auth service since"},{"line_number":526,"context_line":"        # validating tokens is a privileged call"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_1c6dfccc","line":523,"updated":"2014-07-16 20:55:59.000000000","message":"I believe admin token is always v2. If we plan to use v3, then we need to add additional param  user_domain, project_domain in all the services config file","commit_id":"424a0542c5319d15985130b06c591e236daed3cc"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0d7b5e1dfb0324d043be76df33e16f6616ad605c","unresolved":false,"context_lines":[{"line_number":520,"context_line":"            timeout\u003dself._conf_get(\u0027http_connect_timeout\u0027)))"},{"line_number":521,"context_line":""},{"line_number":522,"context_line":"        auth_url \u003d \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":523,"context_line":"        token \u003d self._conf_get(\u0027admin_token\u0027)"},{"line_number":524,"context_line":""},{"line_number":525,"context_line":"        # Credentials used to verify this component with the Auth service since"},{"line_number":526,"context_line":"        # validating tokens is a privileged call"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_66ad5bea","line":523,"in_reply_to":"baada198_1c6dfccc","updated":"2014-07-24 00:54:23.000000000","message":"Handled by changes in keystoneclient now. We\u0027re just waiting for 0.10 to propogate through requirements.","commit_id":"424a0542c5319d15985130b06c591e236daed3cc"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"7eb3a2797db3a4b6c91d4bd45306e6fb709c0dde","unresolved":false,"context_lines":[{"line_number":626,"context_line":""},{"line_number":627,"context_line":"    def _get_supported_versions(self):"},{"line_number":628,"context_line":"        versions \u003d []"},{"line_number":629,"context_line":"        failure_msg \u003d \u0027Unable to get version info from Identity API Server\u0027"},{"line_number":630,"context_line":"        try:"},{"line_number":631,"context_line":"            response, data \u003d self._json_request(\u0027GET\u0027, \u0027/\u0027,"},{"line_number":632,"context_line":"                                                authenticated\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_a6e5e139","line":629,"updated":"2014-07-16 20:11:49.000000000","message":"I wonder if we can drop this logic, and just state that we need to get version info from the server?  This is discover logic, and should not be middleware.","commit_id":"424a0542c5319d15985130b06c591e236daed3cc"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0d7b5e1dfb0324d043be76df33e16f6616ad605c","unresolved":false,"context_lines":[{"line_number":626,"context_line":""},{"line_number":627,"context_line":"    def _get_supported_versions(self):"},{"line_number":628,"context_line":"        versions \u003d []"},{"line_number":629,"context_line":"        failure_msg \u003d \u0027Unable to get version info from Identity API Server\u0027"},{"line_number":630,"context_line":"        try:"},{"line_number":631,"context_line":"            response, data \u003d self._json_request(\u0027GET\u0027, \u0027/\u0027,"},{"line_number":632,"context_line":"                                                authenticated\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_260e03e6","line":629,"in_reply_to":"baada198_a6e5e139","updated":"2014-07-24 00:54:23.000000000","message":"yep, it\u0027s coming, but discovery relies on a session object so we may as well do the session bit first.","commit_id":"424a0542c5319d15985130b06c591e236daed3cc"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"7eb3a2797db3a4b6c91d4bd45306e6fb709c0dde","unresolved":false,"context_lines":[{"line_number":767,"context_line":"        retry \u003d 0"},{"line_number":768,"context_line":"        while True:"},{"line_number":769,"context_line":"            try:"},{"line_number":770,"context_line":"                response \u003d self._session.request(url,"},{"line_number":771,"context_line":"                                                 method,"},{"line_number":772,"context_line":"                                                 allow_reauth\u003dTrue,"},{"line_number":773,"context_line":"                                                 **kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_4645e515","line":770,"updated":"2014-07-16 20:11:49.000000000","message":"this logic should be in the client as well.","commit_id":"424a0542c5319d15985130b06c591e236daed3cc"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"0d7b5e1dfb0324d043be76df33e16f6616ad605c","unresolved":false,"context_lines":[{"line_number":767,"context_line":"        retry \u003d 0"},{"line_number":768,"context_line":"        while True:"},{"line_number":769,"context_line":"            try:"},{"line_number":770,"context_line":"                response \u003d self._session.request(url,"},{"line_number":771,"context_line":"                                                 method,"},{"line_number":772,"context_line":"                                                 allow_reauth\u003dTrue,"},{"line_number":773,"context_line":"                                                 **kwargs)"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_661e3b0f","line":770,"in_reply_to":"baada198_4645e515","updated":"2014-07-24 00:54:23.000000000","message":"maybe, maybe not.\n\nI\u0027m not sure i want to bake that much retrying logic into the client. \n\nIf there are other client\u0027s that have similar code then sure.","commit_id":"424a0542c5319d15985130b06c591e236daed3cc"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"7eb3a2797db3a4b6c91d4bd45306e6fb709c0dde","unresolved":false,"context_lines":[{"line_number":1033,"context_line":"                path \u003d path + \u0027?nocatalog\u0027"},{"line_number":1034,"context_line":"        else:"},{"line_number":1035,"context_line":"            headers \u003d {}"},{"line_number":1036,"context_line":"            path \u003d \u0027/v2.0/tokens/%s\u0027 % user_token"},{"line_number":1037,"context_line":""},{"line_number":1038,"context_line":"        try:"},{"line_number":1039,"context_line":"            response, data \u003d self._json_request(\u0027GET\u0027, path,"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_861b7d1b","line":1036,"updated":"2014-07-16 20:11:49.000000000","message":"This should come out of the client. Please file a ticket and implement it there, but leave this code in as a stop-gap measure.","commit_id":"424a0542c5319d15985130b06c591e236daed3cc"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"7eb3a2797db3a4b6c91d4bd45306e6fb709c0dde","unresolved":false,"context_lines":[{"line_number":1206,"context_line":""},{"line_number":1207,"context_line":"    def _fetch_revocation_list(self):"},{"line_number":1208,"context_line":"        try:"},{"line_number":1209,"context_line":"            response, data \u003d self._json_request(\u0027GET\u0027, \u0027/v2.0/tokens/revoked\u0027,"},{"line_number":1210,"context_line":"                                                authenticated\u003dTrue)"},{"line_number":1211,"context_line":"        except exceptions.HTTPError as e:"},{"line_number":1212,"context_line":"            raise ServiceError(\u0027Failed to fetch token revocation list: %d\u0027 %"}],"source_content_type":"text/x-python","patch_set":4,"id":"baada198_26dc7146","line":1209,"updated":"2014-07-16 20:11:49.000000000","message":"This should also come out of the client.","commit_id":"424a0542c5319d15985130b06c591e236daed3cc"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"50027142025dca59a74439a21cf845df94f626c9","unresolved":false,"context_lines":[{"line_number":503,"context_line":"            cacert\u003dself._conf_get(\u0027cafile\u0027),"},{"line_number":504,"context_line":"            insecure\u003dself._conf_get(\u0027insecure\u0027),"},{"line_number":505,"context_line":"            timeout\u003dself._conf_get(\u0027http_connect_timeout\u0027)))"},{"line_number":506,"context_line":""},{"line_number":507,"context_line":"        # signing"},{"line_number":508,"context_line":"        self._signing_dirname \u003d self._conf_get(\u0027signing_dir\u0027)"},{"line_number":509,"context_line":"        if self._signing_dirname is None:"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_c3f53952","line":506,"updated":"2014-07-24 00:34:21.000000000","message":"there shouldn\u0027t be anything left of the main class that still uses the session, so you don\u0027t need this.\n\nWhen you move the stuff below up here you shouldn\u0027t need to save it on the object.","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"50027142025dca59a74439a21cf845df94f626c9","unresolved":false,"context_lines":[{"line_number":523,"context_line":"        # Token caching"},{"line_number":524,"context_line":"        self._token_cache \u003d None"},{"line_number":525,"context_line":"        self._cache_initialized \u003d False"},{"line_number":526,"context_line":"        # memcache value treatment, ENCRYPT or MAC"},{"line_number":527,"context_line":"        memcache_security_strategy \u003d ("},{"line_number":528,"context_line":"            self._conf_get(\u0027memcache_security_strategy\u0027))"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_637aad26","line":526,"updated":"2014-07-24 00:34:21.000000000","message":"this doesn\u0027t seem like something that affects us.","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"3cc4daa1e8b209ce39456ecf4890dfd974e971a9","unresolved":false,"context_lines":[{"line_number":523,"context_line":"        # Token caching"},{"line_number":524,"context_line":"        self._token_cache \u003d None"},{"line_number":525,"context_line":"        self._cache_initialized \u003d False"},{"line_number":526,"context_line":"        # memcache value treatment, ENCRYPT or MAC"},{"line_number":527,"context_line":"        memcache_security_strategy \u003d ("},{"line_number":528,"context_line":"            self._conf_get(\u0027memcache_security_strategy\u0027))"},{"line_number":529,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_36641fb2","line":526,"in_reply_to":"baada198_637aad26","updated":"2014-07-28 19:24:39.000000000","message":"Done","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"50027142025dca59a74439a21cf845df94f626c9","unresolved":false,"context_lines":[{"line_number":539,"context_line":"        self._token_revocation_list_prop \u003d None"},{"line_number":540,"context_line":"        self._token_revocation_list_fetched_time_prop \u003d None"},{"line_number":541,"context_line":"        self._token_revocation_list_cache_timeout \u003d datetime.timedelta("},{"line_number":542,"context_line":"            seconds\u003dself._conf_get(\u0027revocation_cache_time\u0027))"},{"line_number":543,"context_line":"        self._check_revocations_for_cached \u003d self._conf_get("},{"line_number":544,"context_line":"            \u0027check_revocations_for_cached\u0027)"},{"line_number":545,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_8338a13c","line":542,"updated":"2014-07-24 00:34:21.000000000","message":"revert unrelated whitespace change.","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"3cc4daa1e8b209ce39456ecf4890dfd974e971a9","unresolved":false,"context_lines":[{"line_number":539,"context_line":"        self._token_revocation_list_prop \u003d None"},{"line_number":540,"context_line":"        self._token_revocation_list_fetched_time_prop \u003d None"},{"line_number":541,"context_line":"        self._token_revocation_list_cache_timeout \u003d datetime.timedelta("},{"line_number":542,"context_line":"            seconds\u003dself._conf_get(\u0027revocation_cache_time\u0027))"},{"line_number":543,"context_line":"        self._check_revocations_for_cached \u003d self._conf_get("},{"line_number":544,"context_line":"            \u0027check_revocations_for_cached\u0027)"},{"line_number":545,"context_line":""}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_75121b62","line":542,"in_reply_to":"baada198_8338a13c","updated":"2014-07-28 19:24:39.000000000","message":"Done","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"424087955e6f68e2f4a151a09c53efd1c9e4717e","unresolved":false,"context_lines":[{"line_number":1129,"context_line":"            insecure\u003dself._ssl_insecure,"},{"line_number":1130,"context_line":"            timeout\u003dself._http_connect_timeout))"},{"line_number":1131,"context_line":""},{"line_number":1132,"context_line":"        # FIXME(hrybacki) find where the equivalent is and substitute it"},{"line_number":1133,"context_line":"        auth_url \u003d \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":1134,"context_line":""},{"line_number":1135,"context_line":"        if self._admin_token:"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_11fdb06e","line":1132,"updated":"2014-07-24 07:14:22.000000000","message":"The code needs to determine self._auth_version here.","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"424087955e6f68e2f4a151a09c53efd1c9e4717e","unresolved":false,"context_lines":[{"line_number":1130,"context_line":"            timeout\u003dself._http_connect_timeout))"},{"line_number":1131,"context_line":""},{"line_number":1132,"context_line":"        # FIXME(hrybacki) find where the equivalent is and substitute it"},{"line_number":1133,"context_line":"        auth_url \u003d \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":1134,"context_line":""},{"line_number":1135,"context_line":"        if self._admin_token:"},{"line_number":1136,"context_line":"            self._LOG.warning("}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_513d682b","line":1133,"updated":"2014-07-24 07:14:22.000000000","message":"Based on self._auth_version, put together either a v2.0 or v3 auth_url.","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":11333,"name":"David J Hu","email":"david.hu@hpe.com","username":"dhu"},"change_message_id":"424087955e6f68e2f4a151a09c53efd1c9e4717e","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"            self._session.auth \u003d token_endpoint.Token(auth_url,"},{"line_number":1142,"context_line":"                                                      self._admin_token)"},{"line_number":1143,"context_line":"        else:"},{"line_number":1144,"context_line":"            # FIXME(hrybacki) check if should this ever have to use the v3 API"},{"line_number":1145,"context_line":"            self._session.auth \u003d v2.Password("},{"line_number":1146,"context_line":"                auth_url,"},{"line_number":1147,"context_line":"                self._admin_user,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_914700bc","line":1144,"updated":"2014-07-24 07:14:22.000000000","message":"Based on self._auth_version, call either v2.Password(...) or v3.Password(...).  V3 needs to be imported. of course.","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"50027142025dca59a74439a21cf845df94f626c9","unresolved":false,"context_lines":[{"line_number":1146,"context_line":"                auth_url,"},{"line_number":1147,"context_line":"                self._admin_user,"},{"line_number":1148,"context_line":"                self._admin_password,"},{"line_number":1149,"context_line":"                tenant_name\u003dself._admin_tenant_name)"},{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":"    def verify_token(self, user_token, retry\u003dTrue):"},{"line_number":1152,"context_line":"        \"\"\"Authenticate user token with keystone."}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_c3d459eb","line":1149,"updated":"2014-07-24 00:34:21.000000000","message":"move all this up into the main __init__ rather than in the IdentityService, then pass the authenticated session to IdentityService.\n\nThen you don\u0027t need to pass all these parameters to IdentityService.","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"3cc4daa1e8b209ce39456ecf4890dfd974e971a9","unresolved":false,"context_lines":[{"line_number":1146,"context_line":"                auth_url,"},{"line_number":1147,"context_line":"                self._admin_user,"},{"line_number":1148,"context_line":"                self._admin_password,"},{"line_number":1149,"context_line":"                tenant_name\u003dself._admin_tenant_name)"},{"line_number":1150,"context_line":""},{"line_number":1151,"context_line":"    def verify_token(self, user_token, retry\u003dTrue):"},{"line_number":1152,"context_line":"        \"\"\"Authenticate user token with keystone."}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_16fe3baf","line":1149,"in_reply_to":"baada198_c3d459eb","updated":"2014-07-28 19:24:39.000000000","message":"Done","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"50027142025dca59a74439a21cf845df94f626c9","unresolved":false,"context_lines":[{"line_number":1312,"context_line":"        retry \u003d 0"},{"line_number":1313,"context_line":"        while True:"},{"line_number":1314,"context_line":"            try:"},{"line_number":1315,"context_line":"                #response \u003d requests.request(method, url, **kwargs)"},{"line_number":1316,"context_line":"                response \u003d self._session.request(url,"},{"line_number":1317,"context_line":"                                                 method,"},{"line_number":1318,"context_line":"                                                 allow_reauth\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_63c8ed56","line":1315,"updated":"2014-07-24 00:34:21.000000000","message":"remove comment","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"3cc4daa1e8b209ce39456ecf4890dfd974e971a9","unresolved":false,"context_lines":[{"line_number":1312,"context_line":"        retry \u003d 0"},{"line_number":1313,"context_line":"        while True:"},{"line_number":1314,"context_line":"            try:"},{"line_number":1315,"context_line":"                #response \u003d requests.request(method, url, **kwargs)"},{"line_number":1316,"context_line":"                response \u003d self._session.request(url,"},{"line_number":1317,"context_line":"                                                 method,"},{"line_number":1318,"context_line":"                                                 allow_reauth\u003dTrue,"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_7583fbca","line":1315,"in_reply_to":"baada198_63c8ed56","updated":"2014-07-28 19:24:39.000000000","message":"Done","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"e9c6820a0becac41f0b2b5cc094a555e29a5bfab","unresolved":false,"context_lines":[{"line_number":1338,"context_line":""},{"line_number":1339,"context_line":"        :param method: http method"},{"line_number":1340,"context_line":"        :param path: relative request url"},{"line_number":1341,"context_line":"        :param body: dict to encode to json as request body. Optional."},{"line_number":1342,"context_line":"        :param additional_headers: dict of additional headers to send with"},{"line_number":1343,"context_line":"                                   http request. Optional."},{"line_number":1344,"context_line":"        :return (http response object, response body parsed as json)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_b0b4d336","line":1341,"updated":"2014-07-25 06:21:58.000000000","message":"Remove","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"3cc4daa1e8b209ce39456ecf4890dfd974e971a9","unresolved":false,"context_lines":[{"line_number":1338,"context_line":""},{"line_number":1339,"context_line":"        :param method: http method"},{"line_number":1340,"context_line":"        :param path: relative request url"},{"line_number":1341,"context_line":"        :param body: dict to encode to json as request body. Optional."},{"line_number":1342,"context_line":"        :param additional_headers: dict of additional headers to send with"},{"line_number":1343,"context_line":"                                   http request. Optional."},{"line_number":1344,"context_line":"        :return (http response object, response body parsed as json)"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_1578fff6","line":1341,"in_reply_to":"baada198_b0b4d336","updated":"2014-07-28 19:24:39.000000000","message":"Done","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":11045,"name":"Bob Thyne","email":"bob.thyne@hp.com","username":"bobt"},"change_message_id":"e9c6820a0becac41f0b2b5cc094a555e29a5bfab","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"        :param method: http method"},{"line_number":1340,"context_line":"        :param path: relative request url"},{"line_number":1341,"context_line":"        :param body: dict to encode to json as request body. Optional."},{"line_number":1342,"context_line":"        :param additional_headers: dict of additional headers to send with"},{"line_number":1343,"context_line":"                                   http request. Optional."},{"line_number":1344,"context_line":"        :return (http response object, response body parsed as json)"},{"line_number":1345,"context_line":"        :raise ServerError when unable to communicate with keystone"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_d0b14745","line":1342,"updated":"2014-07-25 06:21:58.000000000","message":"Remove","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"3cc4daa1e8b209ce39456ecf4890dfd974e971a9","unresolved":false,"context_lines":[{"line_number":1339,"context_line":"        :param method: http method"},{"line_number":1340,"context_line":"        :param path: relative request url"},{"line_number":1341,"context_line":"        :param body: dict to encode to json as request body. Optional."},{"line_number":1342,"context_line":"        :param additional_headers: dict of additional headers to send with"},{"line_number":1343,"context_line":"                                   http request. Optional."},{"line_number":1344,"context_line":"        :return (http response object, response body parsed as json)"},{"line_number":1345,"context_line":"        :raise ServerError when unable to communicate with keystone"}],"source_content_type":"text/x-python","patch_set":5,"id":"baada198_357d03e8","line":1342,"in_reply_to":"baada198_d0b14745","updated":"2014-07-28 19:24:39.000000000","message":"Done","commit_id":"a090a5013dfcb5871c041d76ba9e91cd56d7d42b"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"59395198a479b1ed793bfa0ce2abf8baa9df8d9b","unresolved":false,"context_lines":[{"line_number":468,"context_line":"                                     (True, \u0027true\u0027, \u0027t\u0027, \u00271\u0027, \u0027on\u0027, \u0027yes\u0027, \u0027y\u0027)"},{"line_number":469,"context_line":"                                     )"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        self.session \u003d self._session_factory()"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        self.identity_uri \u003d self._conf_get(\u0027identity_uri\u0027)"},{"line_number":474,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_b161ab3a","line":471,"updated":"2014-07-29 22:15:42.000000000","message":"this should be prefixed with _ since it\u0027s private.","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"de21127cfc931258a6989b89a3abfd360c579965","unresolved":false,"context_lines":[{"line_number":468,"context_line":"                                     (True, \u0027true\u0027, \u0027t\u0027, \u00271\u0027, \u0027on\u0027, \u0027yes\u0027, \u0027y\u0027)"},{"line_number":469,"context_line":"                                     )"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        self.session \u003d self._session_factory()"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        self.identity_uri \u003d self._conf_get(\u0027identity_uri\u0027)"},{"line_number":474,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_3452d0de","line":471,"in_reply_to":"baada198_b161ab3a","updated":"2014-07-30 14:01:49.000000000","message":"Done","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"59395198a479b1ed793bfa0ce2abf8baa9df8d9b","unresolved":false,"context_lines":[{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        self.session \u003d self._session_factory()"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        self.identity_uri \u003d self._conf_get(\u0027identity_uri\u0027)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        # NOTE(jamielennox): it does appear here that our defaults arguments"},{"line_number":476,"context_line":"        # are backwards. We need to do it this way so that we can handle the"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_d1561f5e","line":473,"updated":"2014-07-29 22:15:42.000000000","message":"this should be prefixed with _ since it\u0027s private.","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"de21127cfc931258a6989b89a3abfd360c579965","unresolved":false,"context_lines":[{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        self.session \u003d self._session_factory()"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        self.identity_uri \u003d self._conf_get(\u0027identity_uri\u0027)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        # NOTE(jamielennox): it does appear here that our defaults arguments"},{"line_number":476,"context_line":"        # are backwards. We need to do it this way so that we can handle the"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_b4b18003","line":473,"in_reply_to":"baada198_d1561f5e","updated":"2014-07-30 14:01:49.000000000","message":"Done","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"59395198a479b1ed793bfa0ce2abf8baa9df8d9b","unresolved":false,"context_lines":[{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        self.identity_uri \u003d self._conf_get(\u0027identity_uri\u0027)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        # NOTE(jamielennox): it does appear here that our defaults arguments"},{"line_number":476,"context_line":"        # are backwards. We need to do it this way so that we can handle the"},{"line_number":477,"context_line":"        # same deprecation strategy for CONF and the conf variable."},{"line_number":478,"context_line":"        if not self.identity_uri:"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_11ca576f","line":475,"updated":"2014-07-29 22:15:42.000000000","message":"(nit) change \"defaults\" to \"default\"","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"de21127cfc931258a6989b89a3abfd360c579965","unresolved":false,"context_lines":[{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        self.identity_uri \u003d self._conf_get(\u0027identity_uri\u0027)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        # NOTE(jamielennox): it does appear here that our defaults arguments"},{"line_number":476,"context_line":"        # are backwards. We need to do it this way so that we can handle the"},{"line_number":477,"context_line":"        # same deprecation strategy for CONF and the conf variable."},{"line_number":478,"context_line":"        if not self.identity_uri:"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_54c0244a","line":475,"in_reply_to":"baada198_11ca576f","updated":"2014-07-30 14:01:49.000000000","message":"Done","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"59395198a479b1ed793bfa0ce2abf8baa9df8d9b","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            self.identity_uri \u003d self.identity_uri.rstrip(\u0027/\u0027)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        # FIXME(jamielennox): Yes. This is wrong. We should be determining the"},{"line_number":506,"context_line":"        # plugin to use based on a combination of discovery and inputs. Much"},{"line_number":507,"context_line":"        # of this can be changed when we get keystoneclient 0.10. For now this"},{"line_number":508,"context_line":"        # hardcoded path is EXACTLY the same as the original auth_token did."}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_51d76fee","line":505,"updated":"2014-07-29 22:15:42.000000000","message":"Is there a bug for this?","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"de21127cfc931258a6989b89a3abfd360c579965","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            self.identity_uri \u003d self.identity_uri.rstrip(\u0027/\u0027)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        # FIXME(jamielennox): Yes. This is wrong. We should be determining the"},{"line_number":506,"context_line":"        # plugin to use based on a combination of discovery and inputs. Much"},{"line_number":507,"context_line":"        # of this can be changed when we get keystoneclient 0.10. For now this"},{"line_number":508,"context_line":"        # hardcoded path is EXACTLY the same as the original auth_token did."}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_2f1a7d6f","line":505,"in_reply_to":"baada198_51d76fee","updated":"2014-07-30 14:01:49.000000000","message":"There is no bug but the auth portion of this will come in a follow up patch after Jamie\u0027s httpretty test port is merged into middleware.","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"59395198a479b1ed793bfa0ce2abf8baa9df8d9b","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                password\u003dself._conf_get(\u0027admin_password\u0027),"},{"line_number":524,"context_line":"                tenant_name\u003dself._conf_get(\u0027admin_tenant_name\u0027))"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        self.http_request_max_retries \u003d \\"},{"line_number":527,"context_line":"            self._conf_get(\u0027http_request_max_retries\u0027)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        self._include_service_catalog \u003d self._conf_get("}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_319cbb5b","line":526,"updated":"2014-07-29 22:15:42.000000000","message":"use () to continue a line rather than \\","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"de21127cfc931258a6989b89a3abfd360c579965","unresolved":false,"context_lines":[{"line_number":523,"context_line":"                password\u003dself._conf_get(\u0027admin_password\u0027),"},{"line_number":524,"context_line":"                tenant_name\u003dself._conf_get(\u0027admin_tenant_name\u0027))"},{"line_number":525,"context_line":""},{"line_number":526,"context_line":"        self.http_request_max_retries \u003d \\"},{"line_number":527,"context_line":"            self._conf_get(\u0027http_request_max_retries\u0027)"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        self._include_service_catalog \u003d self._conf_get("}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_2f319ded","line":526,"in_reply_to":"baada198_319cbb5b","updated":"2014-07-30 14:01:49.000000000","message":"Done","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"59395198a479b1ed793bfa0ce2abf8baa9df8d9b","unresolved":false,"context_lines":[{"line_number":529,"context_line":"        self._include_service_catalog \u003d self._conf_get("},{"line_number":530,"context_line":"            \u0027include_service_catalog\u0027)"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"        self.identity_server \u003d self._identity_server_factory()"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        # signing"},{"line_number":535,"context_line":"        self._signing_dirname \u003d self._conf_get(\u0027signing_dir\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_91c3c705","line":532,"updated":"2014-07-29 22:15:42.000000000","message":"prefix the variable with _ since it\u0027s private.","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"de21127cfc931258a6989b89a3abfd360c579965","unresolved":false,"context_lines":[{"line_number":529,"context_line":"        self._include_service_catalog \u003d self._conf_get("},{"line_number":530,"context_line":"            \u0027include_service_catalog\u0027)"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"        self.identity_server \u003d self._identity_server_factory()"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        # signing"},{"line_number":535,"context_line":"        self._signing_dirname \u003d self._conf_get(\u0027signing_dir\u0027)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_749e086b","line":532,"in_reply_to":"baada198_91c3c705","updated":"2014-07-30 14:01:49.000000000","message":"Done","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"59395198a479b1ed793bfa0ce2abf8baa9df8d9b","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        val \u003d \u0027%s/revoked.pem\u0027 % self._signing_dirname"},{"line_number":548,"context_line":"        self._revoked_file_name \u003d val"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"        # memcache value treatment, ENCRYPT or MAC"},{"line_number":551,"context_line":"        self.memcache_security_strategy \u003d ("},{"line_number":552,"context_line":"            self._conf_get(\u0027memcache_security_strategy\u0027))"},{"line_number":553,"context_line":"        self._token_cache \u003d self._token_cache_factory()"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_7142b3ac","line":550,"updated":"2014-07-29 22:15:42.000000000","message":"revert adding this comment since it\u0027s unrelated.","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"de21127cfc931258a6989b89a3abfd360c579965","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        val \u003d \u0027%s/revoked.pem\u0027 % self._signing_dirname"},{"line_number":548,"context_line":"        self._revoked_file_name \u003d val"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"        # memcache value treatment, ENCRYPT or MAC"},{"line_number":551,"context_line":"        self.memcache_security_strategy \u003d ("},{"line_number":552,"context_line":"            self._conf_get(\u0027memcache_security_strategy\u0027))"},{"line_number":553,"context_line":"        self._token_cache \u003d self._token_cache_factory()"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_3473b04f","line":550,"in_reply_to":"baada198_7142b3ac","updated":"2014-07-30 14:01:49.000000000","message":"Done","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"59395198a479b1ed793bfa0ce2abf8baa9df8d9b","unresolved":false,"context_lines":[{"line_number":555,"context_line":"        self._token_revocation_list_fetched_time_prop \u003d None"},{"line_number":556,"context_line":"        self._token_revocation_list_cache_timeout \u003d datetime.timedelta("},{"line_number":557,"context_line":"            seconds\u003dself._conf_get(\u0027revocation_cache_time\u0027))"},{"line_number":558,"context_line":"        self._check_revocations_for_cached \u003d self._conf_get("},{"line_number":559,"context_line":"            \u0027check_revocations_for_cached\u0027)"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"    def _conf_get(self, name):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_511ccfc2","line":558,"updated":"2014-07-29 22:15:42.000000000","message":"revert the blank line removal on the previous line since it\u0027s unnecessary","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"de21127cfc931258a6989b89a3abfd360c579965","unresolved":false,"context_lines":[{"line_number":555,"context_line":"        self._token_revocation_list_fetched_time_prop \u003d None"},{"line_number":556,"context_line":"        self._token_revocation_list_cache_timeout \u003d datetime.timedelta("},{"line_number":557,"context_line":"            seconds\u003dself._conf_get(\u0027revocation_cache_time\u0027))"},{"line_number":558,"context_line":"        self._check_revocations_for_cached \u003d self._conf_get("},{"line_number":559,"context_line":"            \u0027check_revocations_for_cached\u0027)"},{"line_number":560,"context_line":""},{"line_number":561,"context_line":"    def _conf_get(self, name):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_546e6465","line":558,"in_reply_to":"baada198_511ccfc2","updated":"2014-07-30 14:01:49.000000000","message":"Done","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"59395198a479b1ed793bfa0ce2abf8baa9df8d9b","unresolved":false,"context_lines":[{"line_number":659,"context_line":"        :returns HTTPUnauthorized http response"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"        \"\"\""},{"line_number":662,"context_line":"        header_val \u003d \u0027Keystone uri\u003d\\\u0027%s\\\u0027\u0027 % self.identity_server.auth_uri"},{"line_number":663,"context_line":"        headers \u003d [(\u0027WWW-Authenticate\u0027, header_val)]"},{"line_number":664,"context_line":"        resp \u003d _MiniResp(\u0027Authentication required\u0027, env, headers)"},{"line_number":665,"context_line":"        start_response(\u0027401 Unauthorized\u0027, resp.headers)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_f1d243d0","line":662,"updated":"2014-07-29 22:15:42.000000000","message":"revert this since identity_server should be private.","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"de21127cfc931258a6989b89a3abfd360c579965","unresolved":false,"context_lines":[{"line_number":659,"context_line":"        :returns HTTPUnauthorized http response"},{"line_number":660,"context_line":""},{"line_number":661,"context_line":"        \"\"\""},{"line_number":662,"context_line":"        header_val \u003d \u0027Keystone uri\u003d\\\u0027%s\\\u0027\u0027 % self.identity_server.auth_uri"},{"line_number":663,"context_line":"        headers \u003d [(\u0027WWW-Authenticate\u0027, header_val)]"},{"line_number":664,"context_line":"        resp \u003d _MiniResp(\u0027Authentication required\u0027, env, headers)"},{"line_number":665,"context_line":"        start_response(\u0027401 Unauthorized\u0027, resp.headers)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_f49f784f","line":662,"in_reply_to":"baada198_f1d243d0","updated":"2014-07-30 14:01:49.000000000","message":"Done","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"59395198a479b1ed793bfa0ce2abf8baa9df8d9b","unresolved":false,"context_lines":[{"line_number":701,"context_line":"                verified \u003d self._verify_signed_token(user_token, token_ids)"},{"line_number":702,"context_line":"                data \u003d jsonutils.loads(verified)"},{"line_number":703,"context_line":"            else:"},{"line_number":704,"context_line":"                data \u003d self.identity_server.verify_token(user_token, retry)"},{"line_number":705,"context_line":"            expires \u003d _confirm_token_not_expired(data)"},{"line_number":706,"context_line":"            self._confirm_token_bind(data, env)"},{"line_number":707,"context_line":"            self._token_cache.store(token_id, data, expires)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_915ca782","line":704,"updated":"2014-07-29 22:15:42.000000000","message":"revert","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"de21127cfc931258a6989b89a3abfd360c579965","unresolved":false,"context_lines":[{"line_number":701,"context_line":"                verified \u003d self._verify_signed_token(user_token, token_ids)"},{"line_number":702,"context_line":"                data \u003d jsonutils.loads(verified)"},{"line_number":703,"context_line":"            else:"},{"line_number":704,"context_line":"                data \u003d self.identity_server.verify_token(user_token, retry)"},{"line_number":705,"context_line":"            expires \u003d _confirm_token_not_expired(data)"},{"line_number":706,"context_line":"            self._confirm_token_bind(data, env)"},{"line_number":707,"context_line":"            self._token_cache.store(token_id, data, expires)"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_149b0c65","line":704,"in_reply_to":"baada198_915ca782","updated":"2014-07-30 14:01:49.000000000","message":"Done","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"59395198a479b1ed793bfa0ce2abf8baa9df8d9b","unresolved":false,"context_lines":[{"line_number":1016,"context_line":"        self._atomic_write_to_signing_dir(self._revoked_file_name, value)"},{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"    def _fetch_revocation_list(self):"},{"line_number":1019,"context_line":"        revocation_list_data \u003d self.identity_server.fetch_revocation_list()"},{"line_number":1020,"context_line":"        return self._cms_verify(revocation_list_data)"},{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"    def _fetch_signing_cert(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_11d7b7c1","line":1019,"updated":"2014-07-29 22:15:42.000000000","message":"revert.","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"de21127cfc931258a6989b89a3abfd360c579965","unresolved":false,"context_lines":[{"line_number":1016,"context_line":"        self._atomic_write_to_signing_dir(self._revoked_file_name, value)"},{"line_number":1017,"context_line":""},{"line_number":1018,"context_line":"    def _fetch_revocation_list(self):"},{"line_number":1019,"context_line":"        revocation_list_data \u003d self.identity_server.fetch_revocation_list()"},{"line_number":1020,"context_line":"        return self._cms_verify(revocation_list_data)"},{"line_number":1021,"context_line":""},{"line_number":1022,"context_line":"    def _fetch_signing_cert(self):"}],"source_content_type":"text/x-python","patch_set":8,"id":"baada198_54a5849d","line":1019,"in_reply_to":"baada198_11d7b7c1","updated":"2014-07-30 14:01:49.000000000","message":"Done","commit_id":"32c6bf3c5a34cb2fba03a14f5876f079005c837f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":468,"context_line":"                                     (True, \u0027true\u0027, \u0027t\u0027, \u00271\u0027, \u0027on\u0027, \u0027yes\u0027, \u0027y\u0027)"},{"line_number":469,"context_line":"                                     )"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        self._session \u003d self._session_factory()"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        self.identity_uri \u003d self._conf_get(\u0027identity_uri\u0027)"},{"line_number":474,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_ec26c866","line":471,"updated":"2014-07-30 18:17:40.000000000","message":"_session_factory already sets self._session, so either change _session_factory to not do that or don\u0027t also set self._session here.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":468,"context_line":"                                     (True, \u0027true\u0027, \u0027t\u0027, \u00271\u0027, \u0027on\u0027, \u0027yes\u0027, \u0027y\u0027)"},{"line_number":469,"context_line":"                                     )"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        self._session \u003d self._session_factory()"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        self.identity_uri \u003d self._conf_get(\u0027identity_uri\u0027)"},{"line_number":474,"context_line":""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_c308e330","line":471,"in_reply_to":"baada198_ec26c866","updated":"2014-07-31 03:46:30.000000000","message":"Completely agree; this and subsequent comments should be resolved with factory function changes.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        self._session \u003d self._session_factory()"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        self.identity_uri \u003d self._conf_get(\u0027identity_uri\u0027)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        # NOTE(jamielennox): it does appear here that our default arguments"},{"line_number":476,"context_line":"        # are backwards. We need to do it this way so that we can handle the"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_d11d1b64","line":473,"updated":"2014-07-30 18:17:40.000000000","message":"this should be prefixed with _ since it\u0027s private. (this same comment was made in the previous patch set)","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":470,"context_line":""},{"line_number":471,"context_line":"        self._session \u003d self._session_factory()"},{"line_number":472,"context_line":""},{"line_number":473,"context_line":"        self.identity_uri \u003d self._conf_get(\u0027identity_uri\u0027)"},{"line_number":474,"context_line":""},{"line_number":475,"context_line":"        # NOTE(jamielennox): it does appear here that our default arguments"},{"line_number":476,"context_line":"        # are backwards. We need to do it this way so that we can handle the"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_fe19fc7a","line":473,"in_reply_to":"baada198_d11d1b64","updated":"2014-07-31 03:46:30.000000000","message":"Done","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            self.identity_uri \u003d self.identity_uri.rstrip(\u0027/\u0027)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        # FIXME(jamielennox): Yes. This is wrong. We should be determining the"},{"line_number":506,"context_line":"        # plugin to use based on a combination of discovery and inputs. Much"},{"line_number":507,"context_line":"        # of this can be changed when we get keystoneclient 0.10. For now this"},{"line_number":508,"context_line":"        # hardcoded path is EXACTLY the same as the original auth_token did."}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_113793e5","line":505,"updated":"2014-07-30 18:17:40.000000000","message":"File a bug so that this gets tracked as something to fix.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":502,"context_line":"        else:"},{"line_number":503,"context_line":"            self.identity_uri \u003d self.identity_uri.rstrip(\u0027/\u0027)"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        # FIXME(jamielennox): Yes. This is wrong. We should be determining the"},{"line_number":506,"context_line":"        # plugin to use based on a combination of discovery and inputs. Much"},{"line_number":507,"context_line":"        # of this can be changed when we get keystoneclient 0.10. For now this"},{"line_number":508,"context_line":"        # hardcoded path is EXACTLY the same as the original auth_token did."}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_9efe4069","line":505,"in_reply_to":"baada198_113793e5","updated":"2014-07-31 03:46:30.000000000","message":"https://bugs.launchpad.net/keystonemiddleware/+bug/1350659","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                \"deprecated and should not be used. The admin_user and \""},{"line_number":516,"context_line":"                \"admin_password options should be used instead. The \""},{"line_number":517,"context_line":"                \"admin_token option may be removed in a future release.\")"},{"line_number":518,"context_line":"            self._session.auth \u003d token_endpoint.Token(auth_url, admin_token)"},{"line_number":519,"context_line":"        else:"},{"line_number":520,"context_line":"            self._session.auth \u003d v2.Password("},{"line_number":521,"context_line":"                auth_url,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_4c48945c","line":518,"updated":"2014-07-30 18:17:40.000000000","message":"factory functions were added for session and identity_server, which to me are too simple because there\u0027s no logic in them, but then in the place where there\u0027s some logic in creating the object (self._session.auth), there\u0027s no factory... weird.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":515,"context_line":"                \"deprecated and should not be used. The admin_user and \""},{"line_number":516,"context_line":"                \"admin_password options should be used instead. The \""},{"line_number":517,"context_line":"                \"admin_token option may be removed in a future release.\")"},{"line_number":518,"context_line":"            self._session.auth \u003d token_endpoint.Token(auth_url, admin_token)"},{"line_number":519,"context_line":"        else:"},{"line_number":520,"context_line":"            self._session.auth \u003d v2.Password("},{"line_number":521,"context_line":"                auth_url,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_1e5a301e","line":518,"in_reply_to":"baada198_4c48945c","updated":"2014-07-31 03:46:30.000000000","message":"Valid point. AuthProtocol\u0027s __init__ is rather large and that was one of the motivations for the factory functions. I moved this chunk of logic into session factory function in PS 11.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":517,"context_line":"                \"admin_token option may be removed in a future release.\")"},{"line_number":518,"context_line":"            self._session.auth \u003d token_endpoint.Token(auth_url, admin_token)"},{"line_number":519,"context_line":"        else:"},{"line_number":520,"context_line":"            self._session.auth \u003d v2.Password("},{"line_number":521,"context_line":"                auth_url,"},{"line_number":522,"context_line":"                username\u003dself._conf_get(\u0027admin_user\u0027),"},{"line_number":523,"context_line":"                password\u003dself._conf_get(\u0027admin_password\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_0c93fca4","line":520,"updated":"2014-07-30 18:17:40.000000000","message":"session can take an auth plugin as a parameter on the constructor, shouldn\u0027t auth_token do that instead? The `auth` Session property isn\u0027t documented, so I can\u0027t tell if this is valid or not. We should be using documented functionality rather than undocumented.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":517,"context_line":"                \"admin_token option may be removed in a future release.\")"},{"line_number":518,"context_line":"            self._session.auth \u003d token_endpoint.Token(auth_url, admin_token)"},{"line_number":519,"context_line":"        else:"},{"line_number":520,"context_line":"            self._session.auth \u003d v2.Password("},{"line_number":521,"context_line":"                auth_url,"},{"line_number":522,"context_line":"                username\u003dself._conf_get(\u0027admin_user\u0027),"},{"line_number":523,"context_line":"                password\u003dself._conf_get(\u0027admin_password\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_9ea56005","line":520,"in_reply_to":"baada198_0c93fca4","updated":"2014-07-31 03:46:30.000000000","message":"Jamie is aware of this. There need to be modifications to the construct() method as its needs have outgrown what it was originally designed to do.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":529,"context_line":"        self._include_service_catalog \u003d self._conf_get("},{"line_number":530,"context_line":"            \u0027include_service_catalog\u0027)"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"        self._identity_server \u003d self._identity_server_factory()"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        # signing"},{"line_number":535,"context_line":"        self._signing_dirname \u003d self._conf_get(\u0027signing_dir\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_ac885022","line":532,"updated":"2014-07-30 18:17:40.000000000","message":"_identity_server_factory sets self._identity_server already. Either change _identity_server_factory to not set self._identity_server or don\u0027t also set self._identity_server here.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":529,"context_line":"        self._include_service_catalog \u003d self._conf_get("},{"line_number":530,"context_line":"            \u0027include_service_catalog\u0027)"},{"line_number":531,"context_line":""},{"line_number":532,"context_line":"        self._identity_server \u003d self._identity_server_factory()"},{"line_number":533,"context_line":""},{"line_number":534,"context_line":"        # signing"},{"line_number":535,"context_line":"        self._signing_dirname \u003d self._conf_get(\u0027signing_dir\u0027)"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_5e9bc8c7","line":532,"in_reply_to":"baada198_ac885022","updated":"2014-07-31 03:46:30.000000000","message":"Done","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        val \u003d \u0027%s/revoked.pem\u0027 % self._signing_dirname"},{"line_number":548,"context_line":"        self._revoked_file_name \u003d val"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"        self.memcache_security_strategy \u003d ("},{"line_number":551,"context_line":"            self._conf_get(\u0027memcache_security_strategy\u0027))"},{"line_number":552,"context_line":"        self._token_cache \u003d self._token_cache_factory()"},{"line_number":553,"context_line":"        self._token_revocation_list_prop \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_919803ce","line":550,"updated":"2014-07-30 18:17:40.000000000","message":"this should be prefixed with _ since it\u0027s private.\n\n self._memcache_security_strategy \u003d (","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":547,"context_line":"        val \u003d \u0027%s/revoked.pem\u0027 % self._signing_dirname"},{"line_number":548,"context_line":"        self._revoked_file_name \u003d val"},{"line_number":549,"context_line":""},{"line_number":550,"context_line":"        self.memcache_security_strategy \u003d ("},{"line_number":551,"context_line":"            self._conf_get(\u0027memcache_security_strategy\u0027))"},{"line_number":552,"context_line":"        self._token_cache \u003d self._token_cache_factory()"},{"line_number":553,"context_line":"        self._token_revocation_list_prop \u003d None"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_83418b65","line":550,"in_reply_to":"baada198_919803ce","updated":"2014-07-31 03:46:30.000000000","message":"Done","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":549,"context_line":""},{"line_number":550,"context_line":"        self.memcache_security_strategy \u003d ("},{"line_number":551,"context_line":"            self._conf_get(\u0027memcache_security_strategy\u0027))"},{"line_number":552,"context_line":"        self._token_cache \u003d self._token_cache_factory()"},{"line_number":553,"context_line":"        self._token_revocation_list_prop \u003d None"},{"line_number":554,"context_line":"        self._token_revocation_list_fetched_time_prop \u003d None"},{"line_number":555,"context_line":"        self._token_revocation_list_cache_timeout \u003d datetime.timedelta("}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_ecb088de","line":552,"updated":"2014-07-30 18:17:40.000000000","message":"similar comment here as for the other factory functions... it\u0027s confusing to have self._token_cache_factory set self._token_cache and also have this statement set self._token_cache.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":549,"context_line":""},{"line_number":550,"context_line":"        self.memcache_security_strategy \u003d ("},{"line_number":551,"context_line":"            self._conf_get(\u0027memcache_security_strategy\u0027))"},{"line_number":552,"context_line":"        self._token_cache \u003d self._token_cache_factory()"},{"line_number":553,"context_line":"        self._token_revocation_list_prop \u003d None"},{"line_number":554,"context_line":"        self._token_revocation_list_fetched_time_prop \u003d None"},{"line_number":555,"context_line":"        self._token_revocation_list_cache_timeout \u003d datetime.timedelta("}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_de8d187f","line":552,"in_reply_to":"baada198_ecb088de","updated":"2014-07-31 03:46:30.000000000","message":"Done","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":1029,"context_line":"            self._signing_ca_file_name,"},{"line_number":1030,"context_line":"            self._identity_server.fetch_ca_cert())"},{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":"    def _session_factory(self):"},{"line_number":1033,"context_line":"        self._session \u003d session.Session.construct(dict("},{"line_number":1034,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"},{"line_number":1035,"context_line":"            key\u003dself._conf_get(\u0027keyfile\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_2c0b6023","line":1032,"updated":"2014-07-30 18:17:40.000000000","message":"having a function for this seems unnecessarily complicated.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":1029,"context_line":"            self._signing_ca_file_name,"},{"line_number":1030,"context_line":"            self._identity_server.fetch_ca_cert())"},{"line_number":1031,"context_line":""},{"line_number":1032,"context_line":"    def _session_factory(self):"},{"line_number":1033,"context_line":"        self._session \u003d session.Session.construct(dict("},{"line_number":1034,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"},{"line_number":1035,"context_line":"            key\u003dself._conf_get(\u0027keyfile\u0027),"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_7e3ecc8c","line":1032,"in_reply_to":"baada198_2c0b6023","updated":"2014-07-31 03:46:30.000000000","message":"The __init__ for AuthProtocol is very large as it stands. This and the others below leave the code looking much cleaner and modular. If the group consensus is to remove and add to another patch I\u0027ll do that but I think this is the right move.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":1039,"context_line":"        ))"},{"line_number":1040,"context_line":"        return self._session"},{"line_number":1041,"context_line":""},{"line_number":1042,"context_line":"    def _identity_server_factory(self):"},{"line_number":1043,"context_line":"        self._identity_server \u003d _IdentityServer("},{"line_number":1044,"context_line":"            self._LOG,"},{"line_number":1045,"context_line":"            self._session,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_6c15583c","line":1042,"updated":"2014-07-30 18:17:40.000000000","message":"having a function for this seems unnecessarily complicated and also unrelated to the change. If it needs to be done do it in a separate commit.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":1039,"context_line":"        ))"},{"line_number":1040,"context_line":"        return self._session"},{"line_number":1041,"context_line":""},{"line_number":1042,"context_line":"    def _identity_server_factory(self):"},{"line_number":1043,"context_line":"        self._identity_server \u003d _IdentityServer("},{"line_number":1044,"context_line":"            self._LOG,"},{"line_number":1045,"context_line":"            self._session,"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_9e41e00c","line":1042,"in_reply_to":"baada198_6c15583c","updated":"2014-07-31 03:46:30.000000000","message":"Same as above","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":1050,"context_line":"            auth_version\u003dself._conf_get(\u0027auth_version\u0027))"},{"line_number":1051,"context_line":"        return self._identity_server"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    def _token_cache_factory(self):"},{"line_number":1054,"context_line":"        self._token_cache \u003d _TokenCache("},{"line_number":1055,"context_line":"            self._LOG,"},{"line_number":1056,"context_line":"            cache_time\u003dint(self._conf_get(\u0027token_cache_time\u0027)),"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_ac2690b7","line":1053,"updated":"2014-07-30 18:17:40.000000000","message":"having a function for this seems unnecessarily complicated and also unrelated to the change. If it needs to be done do it in a separate commit.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":1050,"context_line":"            auth_version\u003dself._conf_get(\u0027auth_version\u0027))"},{"line_number":1051,"context_line":"        return self._identity_server"},{"line_number":1052,"context_line":""},{"line_number":1053,"context_line":"    def _token_cache_factory(self):"},{"line_number":1054,"context_line":"        self._token_cache \u003d _TokenCache("},{"line_number":1055,"context_line":"            self._LOG,"},{"line_number":1056,"context_line":"            cache_time\u003dint(self._conf_get(\u0027token_cache_time\u0027)),"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_de42780c","line":1053,"in_reply_to":"baada198_ac2690b7","updated":"2014-07-31 03:46:30.000000000","message":"Same as above","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"        self._auth_version \u003d None"},{"line_number":1128,"context_line":"        self._http_request_max_retries \u003d http_request_max_retries"},{"line_number":1129,"context_line":""},{"line_number":1130,"context_line":"    def verify_token(self, user_token, retry\u003dTrue):"},{"line_number":1131,"context_line":"        \"\"\"Authenticate user token with keystone."},{"line_number":1132,"context_line":""},{"line_number":1133,"context_line":"        :param user_token: user\u0027s token id"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_0c6a1c1b","line":1130,"updated":"2014-07-30 18:17:40.000000000","message":"The \"retry\" option isn\u0027t used anymore. This method should continue to support retrying.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":1127,"context_line":"        self._auth_version \u003d None"},{"line_number":1128,"context_line":"        self._http_request_max_retries \u003d http_request_max_retries"},{"line_number":1129,"context_line":""},{"line_number":1130,"context_line":"    def verify_token(self, user_token, retry\u003dTrue):"},{"line_number":1131,"context_line":"        \"\"\"Authenticate user token with keystone."},{"line_number":1132,"context_line":""},{"line_number":1133,"context_line":"        :param user_token: user\u0027s token id"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_bed94486","line":1130,"in_reply_to":"baada198_0c6a1c1b","updated":"2014-07-31 03:46:30.000000000","message":"Done","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":1272,"context_line":"            try:"},{"line_number":1273,"context_line":"                response \u003d self._session.request(url,"},{"line_number":1274,"context_line":"                                                 method,"},{"line_number":1275,"context_line":"                                                 allow_reauth\u003dTrue,"},{"line_number":1276,"context_line":"                                                 **kwargs)"},{"line_number":1277,"context_line":"                break"},{"line_number":1278,"context_line":"            except exceptions.HTTPError:"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_31d3b7d4","line":1275,"updated":"2014-07-30 18:17:40.000000000","message":"allow_reauth\u003dTrue is the default. This line can be removed.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":1272,"context_line":"            try:"},{"line_number":1273,"context_line":"                response \u003d self._session.request(url,"},{"line_number":1274,"context_line":"                                                 method,"},{"line_number":1275,"context_line":"                                                 allow_reauth\u003dTrue,"},{"line_number":1276,"context_line":"                                                 **kwargs)"},{"line_number":1277,"context_line":"                break"},{"line_number":1278,"context_line":"            except exceptions.HTTPError:"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_1edf9067","line":1275,"in_reply_to":"baada198_31d3b7d4","updated":"2014-07-31 03:46:30.000000000","message":"Done","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":1277,"context_line":"                break"},{"line_number":1278,"context_line":"            except exceptions.HTTPError:"},{"line_number":1279,"context_line":"                # there is no point in retrying an HTTP error (eg 404) the new"},{"line_number":1280,"context_line":"                #  request should have the exact same response."},{"line_number":1281,"context_line":"                raise"},{"line_number":1282,"context_line":"            except Exception as e:"},{"line_number":1283,"context_line":"                if retry \u003e\u003d RETRIES:"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_51c10b2e","line":1280,"updated":"2014-07-30 18:17:40.000000000","message":"remove the extra space after the #.\n\nAlso, this doesn\u0027t make any sense. There\u0027s HTTP error responses where I might expect a different response if this was tried again after some delay. For example, 408 Request Timeout, 500 Internal Server Error, 503 Service Unavailable, 504 Gateway Timeout.\n\nI think this new exception handler should be removed and let\u0027s just stick with the old behavior. A separate bug can be filed for this change.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":1277,"context_line":"                break"},{"line_number":1278,"context_line":"            except exceptions.HTTPError:"},{"line_number":1279,"context_line":"                # there is no point in retrying an HTTP error (eg 404) the new"},{"line_number":1280,"context_line":"                #  request should have the exact same response."},{"line_number":1281,"context_line":"                raise"},{"line_number":1282,"context_line":"            except Exception as e:"},{"line_number":1283,"context_line":"                if retry \u003e\u003d RETRIES:"}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_7eb16c00","line":1280,"in_reply_to":"baada198_51c10b2e","updated":"2014-07-31 03:46:30.000000000","message":"This is in place as a result of how the session object handles http failures. Unlike in the requests library where these errors are returned as Response objects with a related status code, session turns these responses in to HTTPError exceptions.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5e648dd28c6a9ab0c7136f6fa2d3770710da7066","unresolved":false,"context_lines":[{"line_number":1295,"context_line":""},{"line_number":1296,"context_line":"        :param method: http method"},{"line_number":1297,"context_line":"        :param path: relative request url"},{"line_number":1298,"context_line":"        :return (http response object, response body parsed as json)"},{"line_number":1299,"context_line":"        :raise ServerError when unable to communicate with keystone"},{"line_number":1300,"context_line":""},{"line_number":1301,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_11f6b3d8","line":1298,"updated":"2014-07-30 18:17:40.000000000","message":"the docstring should say what the kwargs parameter is used for.","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"39353c7118fe762dbeebab745813b8d49ac98a29","unresolved":false,"context_lines":[{"line_number":1295,"context_line":""},{"line_number":1296,"context_line":"        :param method: http method"},{"line_number":1297,"context_line":"        :param path: relative request url"},{"line_number":1298,"context_line":"        :return (http response object, response body parsed as json)"},{"line_number":1299,"context_line":"        :raise ServerError when unable to communicate with keystone"},{"line_number":1300,"context_line":""},{"line_number":1301,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":9,"id":"baada198_5eb668dc","line":1298,"in_reply_to":"baada198_11f6b3d8","updated":"2014-07-31 03:46:30.000000000","message":"Done","commit_id":"2131efc79cc9db915f80bc301f7c57de471533c7"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b20f3aa5792965943b8f56aaae292c6eb348d527","unresolved":false,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"        http_connect_timeout_cfg \u003d self._conf_get(\u0027http_connect_timeout\u0027)"},{"line_number":473,"context_line":"        http_connect_timeout \u003d (http_connect_timeout_cfg and"},{"line_number":474,"context_line":"                                int(http_connect_timeout_cfg))"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        http_request_max_retries \u003d self._conf_get(\u0027http_request_max_retries\u0027)"},{"line_number":477,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_5f6e6301","side":"PARENT","line":474,"updated":"2014-07-31 05:40:28.000000000","message":"we don\u0027t care about timeout anymore?","commit_id":"68ba62c9c75b4f1e0431c59c136e7f3be3708ac4"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"0bf1812984a36157b2d9db05d1d9edb8177aed9a","unresolved":false,"context_lines":[{"line_number":471,"context_line":""},{"line_number":472,"context_line":"        http_connect_timeout_cfg \u003d self._conf_get(\u0027http_connect_timeout\u0027)"},{"line_number":473,"context_line":"        http_connect_timeout \u003d (http_connect_timeout_cfg and"},{"line_number":474,"context_line":"                                int(http_connect_timeout_cfg))"},{"line_number":475,"context_line":""},{"line_number":476,"context_line":"        http_request_max_retries \u003d self._conf_get(\u0027http_request_max_retries\u0027)"},{"line_number":477,"context_line":""}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_15275564","side":"PARENT","line":474,"in_reply_to":"baada198_5f6e6301","updated":"2014-07-31 16:10:15.000000000","message":"We do but this is handled by the session now. See line 1017","commit_id":"68ba62c9c75b4f1e0431c59c136e7f3be3708ac4"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b20f3aa5792965943b8f56aaae292c6eb348d527","unresolved":false,"context_lines":[{"line_number":502,"context_line":""},{"line_number":503,"context_line":"        self._session \u003d self._session_factory()"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        self.http_request_max_retries \u003d self._conf_get("},{"line_number":506,"context_line":"            \u0027http_request_max_retries\u0027)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        self._include_service_catalog \u003d self._conf_get("}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_df7993c6","line":505,"updated":"2014-07-31 05:40:28.000000000","message":"self._http_request_max_retries","commit_id":"9e7dea60ebc2a32161c92db711d96cd63f5e3c4b"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"0bf1812984a36157b2d9db05d1d9edb8177aed9a","unresolved":false,"context_lines":[{"line_number":502,"context_line":""},{"line_number":503,"context_line":"        self._session \u003d self._session_factory()"},{"line_number":504,"context_line":""},{"line_number":505,"context_line":"        self.http_request_max_retries \u003d self._conf_get("},{"line_number":506,"context_line":"            \u0027http_request_max_retries\u0027)"},{"line_number":507,"context_line":""},{"line_number":508,"context_line":"        self._include_service_catalog \u003d self._conf_get("}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_351d3911","line":505,"in_reply_to":"baada198_df7993c6","updated":"2014-07-31 16:10:15.000000000","message":"Good catch.","commit_id":"9e7dea60ebc2a32161c92db711d96cd63f5e3c4b"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b20f3aa5792965943b8f56aaae292c6eb348d527","unresolved":false,"context_lines":[{"line_number":1020,"context_line":"        # plugin to use based on a combination of discovery and inputs. Much"},{"line_number":1021,"context_line":"        # of this can be changed when we get keystoneclient 0.10. For now this"},{"line_number":1022,"context_line":"        # hardcoded path is EXACTLY the same as the original auth_token did."},{"line_number":1023,"context_line":"        auth_url \u003d \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"        admin_token \u003d self._conf_get(\u0027admin_token\u0027)"},{"line_number":1026,"context_line":"        if admin_token:"}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_5f13c364","line":1023,"updated":"2014-07-31 05:40:28.000000000","message":"this is definitely wrong. Why still using v2.0? Shouldn\u0027t we be using discovery here?","commit_id":"9e7dea60ebc2a32161c92db711d96cd63f5e3c4b"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"0bf1812984a36157b2d9db05d1d9edb8177aed9a","unresolved":false,"context_lines":[{"line_number":1020,"context_line":"        # plugin to use based on a combination of discovery and inputs. Much"},{"line_number":1021,"context_line":"        # of this can be changed when we get keystoneclient 0.10. For now this"},{"line_number":1022,"context_line":"        # hardcoded path is EXACTLY the same as the original auth_token did."},{"line_number":1023,"context_line":"        auth_url \u003d \u0027%s/v2.0\u0027 % self._identity_uri"},{"line_number":1024,"context_line":""},{"line_number":1025,"context_line":"        admin_token \u003d self._conf_get(\u0027admin_token\u0027)"},{"line_number":1026,"context_line":"        if admin_token:"}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_7517b1ee","line":1023,"in_reply_to":"baada198_5f13c364","updated":"2014-07-31 16:10:15.000000000","message":"As per my comments in PS #9 -- a bug has been filed and moving to discovery will be a follow up patch.","commit_id":"9e7dea60ebc2a32161c92db711d96cd63f5e3c4b"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b20f3aa5792965943b8f56aaae292c6eb348d527","unresolved":false,"context_lines":[{"line_number":1038,"context_line":"                tenant_name\u003dself._conf_get(\u0027admin_tenant_name\u0027))"},{"line_number":1039,"context_line":"        return sess"},{"line_number":1040,"context_line":""},{"line_number":1041,"context_line":"    def _identity_server_factory(self):"},{"line_number":1042,"context_line":"        identity_server \u003d _IdentityServer("},{"line_number":1043,"context_line":"            self._LOG,"},{"line_number":1044,"context_line":"            self._session,"}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_02fd7208","line":1041,"updated":"2014-07-31 05:40:28.000000000","message":"why do we need a \"factory\" for this?","commit_id":"9e7dea60ebc2a32161c92db711d96cd63f5e3c4b"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"0bf1812984a36157b2d9db05d1d9edb8177aed9a","unresolved":false,"context_lines":[{"line_number":1038,"context_line":"                tenant_name\u003dself._conf_get(\u0027admin_tenant_name\u0027))"},{"line_number":1039,"context_line":"        return sess"},{"line_number":1040,"context_line":""},{"line_number":1041,"context_line":"    def _identity_server_factory(self):"},{"line_number":1042,"context_line":"        identity_server \u003d _IdentityServer("},{"line_number":1043,"context_line":"            self._LOG,"},{"line_number":1044,"context_line":"            self._session,"}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_35e4590d","line":1041,"in_reply_to":"baada198_02fd7208","updated":"2014-07-31 16:10:15.000000000","message":"Trimming down the bulky __init__ of AuthProtocol. More detailed notes in PS #9 comments","commit_id":"9e7dea60ebc2a32161c92db711d96cd63f5e3c4b"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"b20f3aa5792965943b8f56aaae292c6eb348d527","unresolved":false,"context_lines":[{"line_number":1049,"context_line":"            auth_version\u003dself._conf_get(\u0027auth_version\u0027))"},{"line_number":1050,"context_line":"        return identity_server"},{"line_number":1051,"context_line":""},{"line_number":1052,"context_line":"    def _token_cache_factory(self):"},{"line_number":1053,"context_line":"        token_cache \u003d _TokenCache("},{"line_number":1054,"context_line":"            self._LOG,"},{"line_number":1055,"context_line":"            cache_time\u003dint(self._conf_get(\u0027token_cache_time\u0027)),"}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_2200b6ff","line":1052,"updated":"2014-07-31 05:40:28.000000000","message":"same as above","commit_id":"9e7dea60ebc2a32161c92db711d96cd63f5e3c4b"},{"author":{"_account_id":11589,"name":"Harry Rybacki","email":"hrybacki@redhat.com","username":"hrybacki"},"change_message_id":"0bf1812984a36157b2d9db05d1d9edb8177aed9a","unresolved":false,"context_lines":[{"line_number":1049,"context_line":"            auth_version\u003dself._conf_get(\u0027auth_version\u0027))"},{"line_number":1050,"context_line":"        return identity_server"},{"line_number":1051,"context_line":""},{"line_number":1052,"context_line":"    def _token_cache_factory(self):"},{"line_number":1053,"context_line":"        token_cache \u003d _TokenCache("},{"line_number":1054,"context_line":"            self._LOG,"},{"line_number":1055,"context_line":"            cache_time\u003dint(self._conf_get(\u0027token_cache_time\u0027)),"}],"source_content_type":"text/x-python","patch_set":11,"id":"baada198_75eed1ee","line":1052,"in_reply_to":"baada198_2200b6ff","updated":"2014-07-31 16:10:15.000000000","message":"Same as above","commit_id":"9e7dea60ebc2a32161c92db711d96cd63f5e3c4b"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2e3b606303ed575f16e2200c73a777d8a8bdcc56","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"            self._identity_server.fetch_ca_cert())"},{"line_number":1010,"context_line":""},{"line_number":1011,"context_line":"    # NOTE(hrybacki): This and subsequent factory functions are part of a"},{"line_number":1012,"context_line":"    # cleanup and better organization effort of AuthProtocol."},{"line_number":1013,"context_line":"    def _session_factory(self):"},{"line_number":1014,"context_line":"        sess \u003d session.Session.construct(dict("},{"line_number":1015,"context_line":"            cert\u003dself._conf_get(\u0027certfile\u0027),"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_a960140e","line":1012,"updated":"2014-07-31 19:23:48.000000000","message":"Next time, submit a change like factory function refactor/cleanup as a separate patch. It\u0027ll be much easier to review and identify changes between session-specific changes and \"cleanup\" changes. Notably the cache factory and identity service factory, i realize the session factory is more specific to this change.\n\nGrouping these changes together has made reviewing this change much much more difficult.","commit_id":"cd1dee761798d9aaff2bd06b2f447c311c0c6940"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2e3b606303ed575f16e2200c73a777d8a8bdcc56","unresolved":false,"context_lines":[{"line_number":1170,"context_line":"            self._LOG.info(\u0027Keystone rejected authorization\u0027)"},{"line_number":1171,"context_line":"            self._LOG.warn(\u0027Identity response: %s\u0027 % e.response.text)"},{"line_number":1172,"context_line":"            self._LOG.info(\u0027Retrying validation\u0027)"},{"line_number":1173,"context_line":"            return self.verify_token(user_token, False)"},{"line_number":1174,"context_line":"        except exceptions.HttpError as e:"},{"line_number":1175,"context_line":"            self._LOG.error(\u0027Bad response code while validating token: %s\u0027,"},{"line_number":1176,"context_line":"                            e.http_status)"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_df8096c1","line":1173,"updated":"2014-07-31 19:23:48.000000000","message":"We are not checking if retry is true or false here, we could endlessly retry in a loop. This needs the \u0027if retry:\u0027 block before it.","commit_id":"cd1dee761798d9aaff2bd06b2f447c311c0c6940"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"2e3b606303ed575f16e2200c73a777d8a8bdcc56","unresolved":false,"context_lines":[{"line_number":1280,"context_line":"                a response object with a status code e.g. 400, http failures"},{"line_number":1281,"context_line":"                in session take these response and create HTTPError exceptions"},{"line_number":1282,"context_line":"                to be handled at a higher level"},{"line_number":1283,"context_line":"                \"\"\""},{"line_number":1284,"context_line":"                raise"},{"line_number":1285,"context_line":"            except Exception as e:"},{"line_number":1286,"context_line":"                if retry \u003e\u003d RETRIES:"}],"source_content_type":"text/x-python","patch_set":12,"id":"baada198_9f29be3c","line":1283,"updated":"2014-07-31 19:23:48.000000000","message":"This should be a comment not a docstring.","commit_id":"cd1dee761798d9aaff2bd06b2f447c311c0c6940"},{"author":{"_account_id":2903,"name":"Morgan Fainberg","email":"morgan.fainberg@gmail.com","username":"mdrnstm"},"change_message_id":"711875d84b05ffa1f97856973509b17c380c58a1","unresolved":false,"context_lines":[{"line_number":1169,"context_line":"        except exceptions.Unauthorized as e:"},{"line_number":1170,"context_line":"            self._LOG.info(\u0027Keystone rejected authorization\u0027)"},{"line_number":1171,"context_line":"            self._LOG.warn(\u0027Identity response: %s\u0027 % e.response.text)"},{"line_number":1172,"context_line":"            self._LOG.info(\u0027Retrying validation\u0027)"},{"line_number":1173,"context_line":"            if retry:"},{"line_number":1174,"context_line":"                return self.verify_token(user_token, False)"},{"line_number":1175,"context_line":"        except exceptions.HttpError as e:"}],"source_content_type":"text/x-python","patch_set":13,"id":"baada198_0e9f1866","line":1172,"updated":"2014-08-01 18:58:41.000000000","message":"This needs to go in the \u0027if retry:\u0027 block","commit_id":"2b42c67fac2c86c27f317542e71dea44a7959743"},{"author":{"_account_id":7191,"name":"Jamie Lennox","email":"jamielennox@gmail.com","username":"jamielennox"},"change_message_id":"aa214dac9b29d17ae85965c278462263003ddd61","unresolved":false,"context_lines":[{"line_number":526,"context_line":"        val \u003d \u0027%s/revoked.pem\u0027 % self._signing_dirname"},{"line_number":527,"context_line":"        self._revoked_file_name \u003d val"},{"line_number":528,"context_line":""},{"line_number":529,"context_line":"        self._memcache_security_strategy \u003d ("},{"line_number":530,"context_line":"            self._conf_get(\u0027memcache_security_strategy\u0027))"},{"line_number":531,"context_line":"        self._token_cache \u003d self._token_cache_factory()"},{"line_number":532,"context_line":"        self._token_revocation_list_prop \u003d None"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_10071182","line":529,"updated":"2014-08-05 21:09:33.000000000","message":"why not make it part of the token_cache_factory?","commit_id":"913fd8ef67a277d37154797df60e98103eb3ddd2"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"25b2d109d5b00f2c667f7f6eee42ca0a1b430757","unresolved":false,"context_lines":[{"line_number":1166,"context_line":"        except exceptions.NotFound as e:"},{"line_number":1167,"context_line":"            self._LOG.warn(\u0027Authorization failed for token\u0027)"},{"line_number":1168,"context_line":"            self._LOG.warn(\u0027Identity response: %s\u0027 % e.response.text)"},{"line_number":1169,"context_line":"        except exceptions.Unauthorized as e:"},{"line_number":1170,"context_line":"            self._LOG.info(\u0027Keystone rejected authorization\u0027)"},{"line_number":1171,"context_line":"            self._LOG.warn(\u0027Identity response: %s\u0027 % e.response.text)"},{"line_number":1172,"context_line":"            if retry:"}],"source_content_type":"text/x-python","patch_set":14,"id":"baada198_1618cd74","line":1169,"updated":"2014-08-04 18:33:53.000000000","message":"In theory, we should need this anymore as auth plugins are aware of token expiry now\n\nhttps://github.com/openstack/python-keystoneclient/blob/master/keystoneclient/auth/identity/base.py#L95\n\nBut in any case, it doesn\u0027t hurt to have it here as non-standard identity plugins may not have this.","commit_id":"913fd8ef67a277d37154797df60e98103eb3ddd2"}]}
