)]}'
{"keystoneclient/middleware/auth_token.py":[{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"06f2f6f3a6fdadafc3c1bc33b01774b076c1f059","unresolved":false,"context_lines":[{"line_number":954,"context_line":"        self.token_revocation_list_fetched_time \u003d timeutils.utcnow()"},{"line_number":955,"context_line":"        self._atomic_write_to_signing_dir(self.revoked_file_name, value)"},{"line_number":956,"context_line":""},{"line_number":957,"context_line":"    def fetch_revocation_list(self):"},{"line_number":958,"context_line":"        revocation_list_data \u003d self._identity_server.fetch_revocation_list()"},{"line_number":959,"context_line":"        return self.cms_verify(revocation_list_data)"},{"line_number":960,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_af03b8b6","line":957,"updated":"2014-06-10 17:34:02.000000000","message":"may want to add the \"retry\" param back and pass it down as this is public interface","commit_id":"7dac0f4752a518db608c22a903c61011789b6189"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3acb939d1c47d4c9fa1e99c8053de03e101b9af2","unresolved":false,"context_lines":[{"line_number":954,"context_line":"        self.token_revocation_list_fetched_time \u003d timeutils.utcnow()"},{"line_number":955,"context_line":"        self._atomic_write_to_signing_dir(self.revoked_file_name, value)"},{"line_number":956,"context_line":""},{"line_number":957,"context_line":"    def fetch_revocation_list(self):"},{"line_number":958,"context_line":"        revocation_list_data \u003d self._identity_server.fetch_revocation_list()"},{"line_number":959,"context_line":"        return self.cms_verify(revocation_list_data)"},{"line_number":960,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_8615f9e6","line":957,"in_reply_to":"1ae5cdf2_af03b8b6","updated":"2014-06-11 01:52:42.000000000","message":"Done","commit_id":"7dac0f4752a518db608c22a903c61011789b6189"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"06f2f6f3a6fdadafc3c1bc33b01774b076c1f059","unresolved":false,"context_lines":[{"line_number":959,"context_line":"        return self.cms_verify(revocation_list_data)"},{"line_number":960,"context_line":""},{"line_number":961,"context_line":"    def fetch_signing_cert(self):"},{"line_number":962,"context_line":"        self._atomic_write_to_signing_dir("},{"line_number":963,"context_line":"            self.signing_cert_file_name,"},{"line_number":964,"context_line":"            self._identity_server.fetch_signing_cert())"},{"line_number":965,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_2f832805","line":962,"updated":"2014-06-10 17:34:02.000000000","message":"nice!","commit_id":"7dac0f4752a518db608c22a903c61011789b6189"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"06f2f6f3a6fdadafc3c1bc33b01774b076c1f059","unresolved":false,"context_lines":[{"line_number":996,"context_line":"            self.append(c)"},{"line_number":997,"context_line":""},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"class IdentityServer(object):"},{"line_number":1000,"context_line":"    def __init__(self, conf_get, log, include_service_catalog):"},{"line_number":1001,"context_line":"        self._conf_get \u003d conf_get"},{"line_number":1002,"context_line":"        self.LOG \u003d log"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_6f68d0ba","line":999,"updated":"2014-06-10 17:34:02.000000000","message":"docstring","commit_id":"7dac0f4752a518db608c22a903c61011789b6189"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3acb939d1c47d4c9fa1e99c8053de03e101b9af2","unresolved":false,"context_lines":[{"line_number":996,"context_line":"            self.append(c)"},{"line_number":997,"context_line":""},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"class IdentityServer(object):"},{"line_number":1000,"context_line":"    def __init__(self, conf_get, log, include_service_catalog):"},{"line_number":1001,"context_line":"        self._conf_get \u003d conf_get"},{"line_number":1002,"context_line":"        self.LOG \u003d log"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_06864913","line":999,"in_reply_to":"1ae5cdf2_6f68d0ba","updated":"2014-06-11 01:52:42.000000000","message":"Done","commit_id":"7dac0f4752a518db608c22a903c61011789b6189"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"06f2f6f3a6fdadafc3c1bc33b01774b076c1f059","unresolved":false,"context_lines":[{"line_number":997,"context_line":""},{"line_number":998,"context_line":""},{"line_number":999,"context_line":"class IdentityServer(object):"},{"line_number":1000,"context_line":"    def __init__(self, conf_get, log, include_service_catalog):"},{"line_number":1001,"context_line":"        self._conf_get \u003d conf_get"},{"line_number":1002,"context_line":"        self.LOG \u003d log"},{"line_number":1003,"context_line":"        self.include_service_catalog \u003d include_service_catalog"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_4feb14b0","line":1000,"updated":"2014-06-10 17:34:02.000000000","message":"agree with Jamie in previous review, kwargs is better than passing conf_get object","commit_id":"7dac0f4752a518db608c22a903c61011789b6189"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"06f2f6f3a6fdadafc3c1bc33b01774b076c1f059","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"        # NOTE(jamielennox): it does appear here that our defaults arguments"},{"line_number":1010,"context_line":"        # are backwards. We need to do it this way so that we can handle the"},{"line_number":1011,"context_line":"        # same deprecation strategy for CONF and the conf variable."},{"line_number":1012,"context_line":"        if not self.identity_uri:"},{"line_number":1013,"context_line":"            self.LOG.warning(\u0027Configuring admin URI using auth fragments. \u0027"},{"line_number":1014,"context_line":"                             \u0027This is deprecated, use \\\u0027identity_uri\\\u0027\u0027"},{"line_number":1015,"context_line":"                             \u0027 instead.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_8f3a7c32","line":1012,"updated":"2014-06-10 17:34:02.000000000","message":"this block of code should have its own method, like _initialize_identity_uri() or something","commit_id":"7dac0f4752a518db608c22a903c61011789b6189"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"3acb939d1c47d4c9fa1e99c8053de03e101b9af2","unresolved":false,"context_lines":[{"line_number":1009,"context_line":"        # NOTE(jamielennox): it does appear here that our defaults arguments"},{"line_number":1010,"context_line":"        # are backwards. We need to do it this way so that we can handle the"},{"line_number":1011,"context_line":"        # same deprecation strategy for CONF and the conf variable."},{"line_number":1012,"context_line":"        if not self.identity_uri:"},{"line_number":1013,"context_line":"            self.LOG.warning(\u0027Configuring admin URI using auth fragments. \u0027"},{"line_number":1014,"context_line":"                             \u0027This is deprecated, use \\\u0027identity_uri\\\u0027\u0027"},{"line_number":1015,"context_line":"                             \u0027 instead.\u0027)"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_c6b9c1cc","line":1012,"in_reply_to":"1ae5cdf2_8f3a7c32","updated":"2014-06-11 01:52:42.000000000","message":"I agree, but I\u0027d rather do this in a separate commit since there wasn\u0027t a function in the source for this new method (which is AuthProtocol.__init__(), see line 476).","commit_id":"7dac0f4752a518db608c22a903c61011789b6189"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"06f2f6f3a6fdadafc3c1bc33b01774b076c1f059","unresolved":false,"context_lines":[{"line_number":1120,"context_line":"        else:"},{"line_number":1121,"context_line":"            self.LOG.error(\u0027Bad response code while validating token: %s\u0027,"},{"line_number":1122,"context_line":"                           response.status_code)"},{"line_number":1123,"context_line":"        if retry:"},{"line_number":1124,"context_line":"            self.LOG.info(\u0027Retrying validation\u0027)"},{"line_number":1125,"context_line":"            return self.verify_token(user_token, False)"},{"line_number":1126,"context_line":"        else:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_0ff2ec6e","line":1123,"updated":"2014-06-10 17:34:02.000000000","message":"not sure why are we doing indiscriminate retry. We should only retry on network failures. Retry on 401 and 404 is pointless. Also, there\u0027s no pulse in between retry so I am not sure what\u0027s the purpose of retry anyway.","commit_id":"7dac0f4752a518db608c22a903c61011789b6189"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"06f2f6f3a6fdadafc3c1bc33b01774b076c1f059","unresolved":false,"context_lines":[{"line_number":1130,"context_line":""},{"line_number":1131,"context_line":"    def fetch_revocation_list(self, retry\u003dTrue):"},{"line_number":1132,"context_line":"        headers \u003d {\u0027X-Auth-Token\u0027: self.get_admin_token()}"},{"line_number":1133,"context_line":"        response, data \u003d self._json_request(\u0027GET\u0027, \u0027/v2.0/tokens/revoked\u0027,"},{"line_number":1134,"context_line":"                                            additional_headers\u003dheaders)"},{"line_number":1135,"context_line":"        if response.status_code \u003d\u003d 401:"},{"line_number":1136,"context_line":"            if retry:"}],"source_content_type":"text/x-python","patch_set":4,"id":"1ae5cdf2_6f2530c1","line":1133,"updated":"2014-06-10 17:34:02.000000000","message":"we use v2 to fetch revocation list only?","commit_id":"7dac0f4752a518db608c22a903c61011789b6189"}]}
