)]}'
{"keystoneclient/middleware/auth_token.py":[{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2b76c68786b9e650974642767d60da3b7669c150","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    cfg.StrOpt(\u0027admin_user\u0027),"},{"line_number":160,"context_line":"    cfg.StrOpt(\u0027admin_password\u0027),"},{"line_number":161,"context_line":"    cfg.StrOpt(\u0027admin_tenant_name\u0027, default\u003d\u0027admin\u0027),"},{"line_number":162,"context_line":"    cfg.StrOpt(\u0027cache\u0027, default\u003dNone),"},{"line_number":163,"context_line":"    cfg.StrOpt(\u0027certfile\u0027),"},{"line_number":164,"context_line":"    cfg.StrOpt(\u0027keyfile\u0027),"},{"line_number":165,"context_line":"    cfg.StrOpt(\u0027signing_dir\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F97I%3D","line":162,"updated":"2012-12-18 16:15:26.000000000","message":"not clear on what this config option is defining -- the name of another config variable that defines the cache?","commit_id":"670431a2129b6ca3fc46f4f448ae2ac1fa9d830d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"bf3991b2331f3a9efe8a6b4f7ebd20224301cb56","unresolved":false,"context_lines":[{"line_number":159,"context_line":"    cfg.StrOpt(\u0027admin_user\u0027),"},{"line_number":160,"context_line":"    cfg.StrOpt(\u0027admin_password\u0027),"},{"line_number":161,"context_line":"    cfg.StrOpt(\u0027admin_tenant_name\u0027, default\u003d\u0027admin\u0027),"},{"line_number":162,"context_line":"    cfg.StrOpt(\u0027cache\u0027, default\u003dNone),"},{"line_number":163,"context_line":"    cfg.StrOpt(\u0027certfile\u0027),"},{"line_number":164,"context_line":"    cfg.StrOpt(\u0027keyfile\u0027),"},{"line_number":165,"context_line":"    cfg.StrOpt(\u0027signing_dir\u0027),"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F95Y%3D","line":162,"in_reply_to":"AAAAM3%2F%2F97I%3D","updated":"2012-12-18 16:34:38.000000000","message":"Its the key name of the env var where the swift cache object is stored. I\u0027ll add some comments to make it more clear.","commit_id":"670431a2129b6ca3fc46f4f448ae2ac1fa9d830d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2b76c68786b9e650974642767d60da3b7669c150","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        cache_timeout \u003d datetime.timedelta(seconds\u003d0)"},{"line_number":271,"context_line":"        self.token_revocation_list_cache_timeout \u003d cache_timeout"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    def _init_cache(self, env):"},{"line_number":274,"context_line":"        cache \u003d self._conf_get(\u0027cache\u0027)"},{"line_number":275,"context_line":"        memcache_servers \u003d self._conf_get(\u0027memcache_servers\u0027)"},{"line_number":276,"context_line":"        if cache and env.get(cache, None) is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F970%3D","line":273,"updated":"2012-12-18 16:15:26.000000000","message":"worthy of a docstring explaining why this needs env, and what the priority is between sources of cache configs","commit_id":"670431a2129b6ca3fc46f4f448ae2ac1fa9d830d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"bf3991b2331f3a9efe8a6b4f7ebd20224301cb56","unresolved":false,"context_lines":[{"line_number":270,"context_line":"        cache_timeout \u003d datetime.timedelta(seconds\u003d0)"},{"line_number":271,"context_line":"        self.token_revocation_list_cache_timeout \u003d cache_timeout"},{"line_number":272,"context_line":""},{"line_number":273,"context_line":"    def _init_cache(self, env):"},{"line_number":274,"context_line":"        cache \u003d self._conf_get(\u0027cache\u0027)"},{"line_number":275,"context_line":"        memcache_servers \u003d self._conf_get(\u0027memcache_servers\u0027)"},{"line_number":276,"context_line":"        if cache and env.get(cache, None) is not None:"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F95E%3D","line":273,"in_reply_to":"AAAAM3%2F%2F970%3D","updated":"2012-12-18 16:34:38.000000000","message":"Good suggestion.","commit_id":"670431a2129b6ca3fc46f4f448ae2ac1fa9d830d"},{"author":{"_account_id":6,"name":"Joe Heck","email":"heckj@mac.com","username":"heckj"},"change_message_id":"d4dfb723df00c5df029fe8e1a6ed5f5189c79405","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        LOG.debug(\u0027Authenticating user token\u0027)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        # initialize memcache first"},{"line_number":310,"context_line":"        self._init_cache(env)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        try:"},{"line_number":313,"context_line":"            self._remove_auth_headers(env)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F%2B8o%3D","line":310,"updated":"2012-12-17 21:32:06.000000000","message":"do we really want to verify the cache initialization on each __call__ - seems very heavy handed. Fine with having a separate private method to intialize, but that should remain in the init() method.","commit_id":"670431a2129b6ca3fc46f4f448ae2ac1fa9d830d"},{"author":{"_account_id":4,"name":"Dolph Mathews","email":"dolph.mathews@gmail.com","username":"dolph"},"change_message_id":"2b76c68786b9e650974642767d60da3b7669c150","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        LOG.debug(\u0027Authenticating user token\u0027)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        # initialize memcache first"},{"line_number":310,"context_line":"        self._init_cache(env)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        try:"},{"line_number":313,"context_line":"            self._remove_auth_headers(env)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F974%3D","line":310,"in_reply_to":"AAAAM3%2F%2F%2B5I%3D","updated":"2012-12-18 16:15:26.000000000","message":"Fair enough, but it only needs to do the initialization work once. If it\u0027s already been set, _init_cache() should be doing any work. As-is, it looks like it\u0027ll reinitialize self._cache on every __call__","commit_id":"670431a2129b6ca3fc46f4f448ae2ac1fa9d830d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"06ac6244797780bd2ef9f7755c634f443b94c812","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        LOG.debug(\u0027Authenticating user token\u0027)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        # initialize memcache first"},{"line_number":310,"context_line":"        self._init_cache(env)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        try:"},{"line_number":313,"context_line":"            self._remove_auth_headers(env)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F%2B5I%3D","line":310,"in_reply_to":"AAAAM3%2F%2F%2B8o%3D","updated":"2012-12-17 21:46:03.000000000","message":"We need it because Swift cache is passed down from the environment. Env is only available in __call__.","commit_id":"670431a2129b6ca3fc46f4f448ae2ac1fa9d830d"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"bf3991b2331f3a9efe8a6b4f7ebd20224301cb56","unresolved":false,"context_lines":[{"line_number":307,"context_line":"        LOG.debug(\u0027Authenticating user token\u0027)"},{"line_number":308,"context_line":""},{"line_number":309,"context_line":"        # initialize memcache first"},{"line_number":310,"context_line":"        self._init_cache(env)"},{"line_number":311,"context_line":""},{"line_number":312,"context_line":"        try:"},{"line_number":313,"context_line":"            self._remove_auth_headers(env)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAM3%2F%2F94s%3D","line":310,"in_reply_to":"AAAAM3%2F%2F974%3D","updated":"2012-12-18 16:34:38.000000000","message":"Yeah. You guys are right. It needs to be optimized.","commit_id":"670431a2129b6ca3fc46f4f448ae2ac1fa9d830d"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"69049f1e9a1102b3a356d09ed5e7f7b90fb2fa0a","unresolved":false,"context_lines":[{"line_number":148,"context_line":"# admin_user \u003d admin"},{"line_number":149,"context_line":"# admin_password \u003d badpassword"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"# when deploy Keystone auth_token middleware with Swift, user may elect"},{"line_number":152,"context_line":"# to use Swift memcache instead of the local Keystone memcache. Swift memcache"},{"line_number":153,"context_line":"# is passed in from the request environment and its identified by the"},{"line_number":154,"context_line":"# \u0027swift.cache\u0027 key. However it could be different, depending on deployment."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F8f4%3D","line":151,"updated":"2012-12-19 16:33:29.000000000","message":"I suspect that a better approach would be an enumeration for cache values:\n\n\"memcached\",\"switf\",\"None\"  with None being default long term, but \"memcache\" being the default for now.","commit_id":"d8003e5352f4f091acba6e75d32c0e60d6712bdf"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"913ade612f863b39195e36abeb2cbbf03fae2fbd","unresolved":false,"context_lines":[{"line_number":148,"context_line":"# admin_user \u003d admin"},{"line_number":149,"context_line":"# admin_password \u003d badpassword"},{"line_number":150,"context_line":""},{"line_number":151,"context_line":"# when deploy Keystone auth_token middleware with Swift, user may elect"},{"line_number":152,"context_line":"# to use Swift memcache instead of the local Keystone memcache. Swift memcache"},{"line_number":153,"context_line":"# is passed in from the request environment and its identified by the"},{"line_number":154,"context_line":"# \u0027swift.cache\u0027 key. However it could be different, depending on deployment."}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F8dM%3D","line":151,"in_reply_to":"AAAAM3%2F%2F8f4%3D","updated":"2012-12-19 16:51:33.000000000","message":"In deployment, memcache usage is very specific. Both Swift cache and Keystone cache (memcache_servers) are essential a cluster of memcache servers.","commit_id":"d8003e5352f4f091acba6e75d32c0e60d6712bdf"},{"author":{"_account_id":2218,"name":"Adam Young","email":"adam@younglogic.com","username":"ayoung"},"change_message_id":"69049f1e9a1102b3a356d09ed5e7f7b90fb2fa0a","unresolved":false,"context_lines":[{"line_number":281,"context_line":"    def _init_cache(self, env):"},{"line_number":282,"context_line":"        cache \u003d self._conf_get(\u0027cache\u0027)"},{"line_number":283,"context_line":"        memcache_servers \u003d self._conf_get(\u0027memcache_servers\u0027)"},{"line_number":284,"context_line":"        if cache and env.get(cache, None) is not None:"},{"line_number":285,"context_line":"            # use the cache from the upstream filter"},{"line_number":286,"context_line":"            self.LOG.info(\u0027Using %s memcache for caching token\u0027, cache)"},{"line_number":287,"context_line":"            self._cache \u003d env.get(cache)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F8f0%3D","line":284,"updated":"2012-12-19 16:33:29.000000000","message":"If None, no caching.  If swift,  ... if memcache....","commit_id":"d8003e5352f4f091acba6e75d32c0e60d6712bdf"},{"author":{"_account_id":1916,"name":"Guang Yee","email":"gyee@suse.com","username":"guang-yee"},"change_message_id":"913ade612f863b39195e36abeb2cbbf03fae2fbd","unresolved":false,"context_lines":[{"line_number":281,"context_line":"    def _init_cache(self, env):"},{"line_number":282,"context_line":"        cache \u003d self._conf_get(\u0027cache\u0027)"},{"line_number":283,"context_line":"        memcache_servers \u003d self._conf_get(\u0027memcache_servers\u0027)"},{"line_number":284,"context_line":"        if cache and env.get(cache, None) is not None:"},{"line_number":285,"context_line":"            # use the cache from the upstream filter"},{"line_number":286,"context_line":"            self.LOG.info(\u0027Using %s memcache for caching token\u0027, cache)"},{"line_number":287,"context_line":"            self._cache \u003d env.get(cache)"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAM3%2F%2F8d0%3D","line":284,"in_reply_to":"AAAAM3%2F%2F8f0%3D","updated":"2012-12-19 16:51:33.000000000","message":"Default is None, if neither \"cache\" or \"cache_servers\" are configured.","commit_id":"d8003e5352f4f091acba6e75d32c0e60d6712bdf"}]}
