)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"89dfe347a1a429385e260d9d3a75b5cdc5619fe8","unresolved":false,"context_lines":[{"line_number":11,"context_line":"by oslo.cache.dict backend. Memcached was replaced"},{"line_number":12,"context_line":"by dogpile.cache.memcached backend."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"part of blueprint liberty-olso-sync"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"fa1b9901_862172a0","line":14,"updated":"2015-08-26 16:08:08.000000000","message":"change \"olso\" to \"oslo\"","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":11,"context_line":"by oslo.cache.dict backend. Memcached was replaced"},{"line_number":12,"context_line":"by dogpile.cache.memcached backend."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"part of blueprint liberty-olso-sync"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"da20952f_1f6f422c","line":14,"in_reply_to":"da20952f_02e2f0d5","updated":"2015-08-28 12:09:47.000000000","message":"ok, remains the same","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d127a2f1dc517339e884fb58db429860c3c3672f","unresolved":false,"context_lines":[{"line_number":11,"context_line":"by oslo.cache.dict backend. Memcached was replaced"},{"line_number":12,"context_line":"by dogpile.cache.memcached backend."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"part of blueprint liberty-olso-sync"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"da20952f_02e2f0d5","line":14,"in_reply_to":"fa1b9901_862172a0","updated":"2015-08-26 16:43:03.000000000","message":"Unfortunately that\u0027s the name of the blueprint:\n\nhttps://blueprints.launchpad.net/nova/+spec/liberty-olso-sync\n\nSo don\u0027t change it else the link is broken.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8258dab4b310011ac9724093655eba0a31322f5","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"part of blueprint liberty-olso-sync"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Co-Authored-By: Sergey Nikitin \u003csnikitin@mirantis.com\u003e"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"da20952f_597783d4","line":16,"updated":"2015-08-26 15:58:05.000000000","message":"You should explain what the doc impact is here.  I think it\u0027s more of an upgrade impact since I assume this is here for the deprecation of the memcached_servers config option.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":13,"context_line":""},{"line_number":14,"context_line":"part of blueprint liberty-olso-sync"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"Co-Authored-By: Sergey Nikitin \u003csnikitin@mirantis.com\u003e"},{"line_number":19,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":17,"id":"da20952f_bf7df6e8","line":16,"in_reply_to":"da20952f_597783d4","updated":"2015-08-28 12:09:47.000000000","message":"Done","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"3ef5973e7853d63be6ac9087d23a4e621b5619e5","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact: \u0027memcached_servers\u0027 opt is deprecated in Liberty,"},{"line_number":17,"context_line":"in Mitaka release oslo.cache config options will control this."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Co-Authored-By: Sergey Nikitin \u003csnikitin@mirantis.com\u003e"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: Ia120bcc2f057c9991389092fdbd181fdd60c7813"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"ba15a1d1_9aa4f757","line":18,"updated":"2015-09-14 20:34:53.000000000","message":"We should also mark this as Closes-Bug: #1483322","commit_id":"8a021837eda03fad14776933a95eafa9a25ded08"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"2a624a0722252d683f5909a9f96b2754c8393895","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"DocImpact: \u0027memcached_servers\u0027 opt is deprecated in Liberty,"},{"line_number":17,"context_line":"in Mitaka release oslo.cache config options will control this."},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Co-Authored-By: Sergey Nikitin \u003csnikitin@mirantis.com\u003e"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"Change-Id: Ia120bcc2f057c9991389092fdbd181fdd60c7813"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":21,"id":"9a1a9d01_8bc7fd44","line":18,"in_reply_to":"ba15a1d1_9aa4f757","updated":"2015-09-24 14:54:19.000000000","message":"Ok, and what about specified blueprint? Will be something similar in Mitaka?","commit_id":"8a021837eda03fad14776933a95eafa9a25ded08"}],"etc/nova/nova-config-generator.conf":[{"author":{"_account_id":5196,"name":"Matthew Treinish","email":"mtreinish@kortar.org","username":"treinish"},"change_message_id":"2874071cfc7c51cbc2d9d08f349d5784f359204d","unresolved":false,"context_lines":[{"line_number":8,"context_line":"namespace \u003d nova.network"},{"line_number":9,"context_line":"namespace \u003d nova.scheduler"},{"line_number":10,"context_line":"namespace \u003d nova.virt"},{"line_number":11,"context_line":"namespace \u003d nova.openstack.common.memorycache"},{"line_number":12,"context_line":"namespace \u003d nova.openstack.common.policy"},{"line_number":13,"context_line":"namespace \u003d oslo.log"},{"line_number":14,"context_line":"namespace \u003d oslo.messaging"}],"source_content_type":"text/plain","patch_set":17,"id":"da20952f_395f2f10","side":"PARENT","line":11,"updated":"2015-08-26 15:47:55.000000000","message":"shouldn\u0027t you add the oslo.cache namespace here instead? I\u0027m pretty sure there are a bunch of oslo.cache options","commit_id":"0ec55d55d2f7e59fbe6dc8ef0ce2ff321ecd2a90"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"89dfe347a1a429385e260d9d3a75b5cdc5619fe8","unresolved":false,"context_lines":[{"line_number":8,"context_line":"namespace \u003d nova.network"},{"line_number":9,"context_line":"namespace \u003d nova.scheduler"},{"line_number":10,"context_line":"namespace \u003d nova.virt"},{"line_number":11,"context_line":"namespace \u003d nova.openstack.common.policy"},{"line_number":12,"context_line":"namespace \u003d oslo.log"},{"line_number":13,"context_line":"namespace \u003d oslo.messaging"},{"line_number":14,"context_line":"namespace \u003d oslo.policy"}],"source_content_type":"text/plain","patch_set":17,"id":"fa1b9901_46ad9ae7","line":11,"updated":"2015-08-26 16:08:08.000000000","message":"Do you need to add namespace \u003d oslo.cache?","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":8,"context_line":"namespace \u003d nova.network"},{"line_number":9,"context_line":"namespace \u003d nova.scheduler"},{"line_number":10,"context_line":"namespace \u003d nova.virt"},{"line_number":11,"context_line":"namespace \u003d nova.openstack.common.policy"},{"line_number":12,"context_line":"namespace \u003d oslo.log"},{"line_number":13,"context_line":"namespace \u003d oslo.messaging"},{"line_number":14,"context_line":"namespace \u003d oslo.policy"}],"source_content_type":"text/plain","patch_set":17,"id":"da20952f_7fbafe6f","line":11,"in_reply_to":"fa1b9901_46ad9ae7","updated":"2015-08-28 12:09:47.000000000","message":"now oslo.cache options are not used in Nova, we will add this namespace in M release when we will replace old \u0027memcached_servers\u0027 opt by corresponding option from oslo.cache","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"}],"nova/api/ec2/__init__.py":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"b8a18c5a2fbf61dcb341c6b18b2c2ca35bf2420b","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003ddetail)"},{"line_number":173,"context_line":"        res \u003d req.get_response(self.application)"},{"line_number":174,"context_line":"        if res.status_int \u003d\u003d 403:"},{"line_number":175,"context_line":"            failures \u003d self.cache.get(failures_key)"},{"line_number":176,"context_line":"            if failures is NO_VALUE:"},{"line_number":177,"context_line":"                self.cache.set(failures_key, 1)"},{"line_number":178,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_4d6a05b5","line":175,"updated":"2015-07-21 13:55:32.000000000","message":"There is a possible race here on the first 2 failures happening concurrently, but it\u0027s not a big deal probably and it\u0027s not caused by migration to oslo.cache anyway.\n\nHaving said that, if oslo.cache support something like INCR command of Redis (http://redis.io/commands/INCR), we could use that.","commit_id":"2300fae0878f694ec9b588c4e422915bbaf068bf"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"871f1a50238e7a676207c36f55578d5928687c1c","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003ddetail)"},{"line_number":173,"context_line":"        res \u003d req.get_response(self.application)"},{"line_number":174,"context_line":"        if res.status_int \u003d\u003d 403:"},{"line_number":175,"context_line":"            failures \u003d self.cache.get(failures_key)"},{"line_number":176,"context_line":"            if failures is NO_VALUE:"},{"line_number":177,"context_line":"                self.cache.set(failures_key, 1)"},{"line_number":178,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_f0612c3a","line":175,"in_reply_to":"3a50d1a3_4d6a05b5","updated":"2015-07-22 12:21:52.000000000","message":"Yes, maybe, but doesn\u0027t depend on using oslo_cache. \n\nAlso, there is no INCR operation, so we make SET and GET instead.","commit_id":"2300fae0878f694ec9b588c4e422915bbaf068bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6ec187501bb9062f1ae144f4e3dc5cef94ac1d6d","unresolved":false,"context_lines":[{"line_number":46,"context_line":"from nova.i18n import _LW"},{"line_number":47,"context_line":"from nova.openstack.common import memorycache"},{"line_number":48,"context_line":"from nova import wsgi"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_169d1459","side":"PARENT","line":49,"updated":"2015-08-18 15:07:19.000000000","message":"Unrelated whitespace change.","commit_id":"8a73c0430db27501437fc2b6c1a354a121be7c45"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"aeeffc36fe01a4cd0115d7e708804aec1bdf4970","unresolved":false,"context_lines":[{"line_number":46,"context_line":"from nova.i18n import _LW"},{"line_number":47,"context_line":"from nova.openstack.common import memorycache"},{"line_number":48,"context_line":"from nova import wsgi"},{"line_number":49,"context_line":""},{"line_number":50,"context_line":""},{"line_number":51,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":52,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_896342dc","side":"PARENT","line":49,"in_reply_to":"fa1b9901_169d1459","updated":"2015-08-18 15:35:35.000000000","message":"Done","commit_id":"8a73c0430db27501437fc2b6c1a354a121be7c45"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"96994f234cd3674059f80b430e537cd2ecd856c9","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import hashlib"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":24,"context_line":"from oslo_config import cfg"},{"line_number":25,"context_line":"from oslo_context import context as common_context"},{"line_number":26,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_33861fdc","line":23,"updated":"2015-08-24 16:22:06.000000000","message":"Please only import modules, not objects... so:\n\n import oslo_cache.core","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"3202572ce94451a0a59f003110d9e50031e9eabd","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import hashlib"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":24,"context_line":"from oslo_config import cfg"},{"line_number":25,"context_line":"from oslo_context import context as common_context"},{"line_number":26,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_138bd81f","line":23,"in_reply_to":"fa1b9901_33861fdc","updated":"2015-08-24 17:10:45.000000000","message":"Done","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"96994f234cd3674059f80b430e537cd2ecd856c9","unresolved":false,"context_lines":[{"line_number":84,"context_line":"CONF.import_opt(\u0027use_forwarded_for\u0027, \u0027nova.api.auth\u0027)"},{"line_number":85,"context_line":"sslutils.is_enabled(CONF)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"CACHE_EXPIRATION_TIME \u003d CONF.lockout_window * 60"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"# Fault Wrapper around all EC2 requests"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_73633742","line":87,"updated":"2015-08-24 16:22:06.000000000","message":"And then here you can do:\n\n NO_VALUE \u003d oslo_cache.core.NO_VALUE","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"3202572ce94451a0a59f003110d9e50031e9eabd","unresolved":false,"context_lines":[{"line_number":84,"context_line":"CONF.import_opt(\u0027use_forwarded_for\u0027, \u0027nova.api.auth\u0027)"},{"line_number":85,"context_line":"sslutils.is_enabled(CONF)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"CACHE_EXPIRATION_TIME \u003d CONF.lockout_window * 60"},{"line_number":88,"context_line":""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"# Fault Wrapper around all EC2 requests"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_93904850","line":87,"in_reply_to":"fa1b9901_73633742","updated":"2015-08-24 17:10:45.000000000","message":"Done","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"89dfe347a1a429385e260d9d3a75b5cdc5619fe8","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import hashlib"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import oslo_cache.core as cache"},{"line_number":24,"context_line":"from oslo_config import cfg"},{"line_number":25,"context_line":"from oslo_context import context as common_context"},{"line_number":26,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_b9b81fe7","line":23,"updated":"2015-08-26 16:08:08.000000000","message":"should be able to just \"import oslo_cache as cache\"?","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"import hashlib"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"import oslo_cache.core as cache"},{"line_number":24,"context_line":"from oslo_config import cfg"},{"line_number":25,"context_line":"from oslo_context import context as common_context"},{"line_number":26,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_7a276c64","line":23,"in_reply_to":"da20952f_b9b81fe7","updated":"2015-08-28 12:09:47.000000000","message":"oslo_cache.core looks better","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"89dfe347a1a429385e260d9d3a75b5cdc5619fe8","unresolved":false,"context_lines":[{"line_number":84,"context_line":"CONF.import_opt(\u0027use_forwarded_for\u0027, \u0027nova.api.auth\u0027)"},{"line_number":85,"context_line":"sslutils.is_enabled(CONF)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"CACHE_EXPIRATION_TIME \u003d CONF.lockout_window * 60"},{"line_number":88,"context_line":"NO_VALUE \u003d cache.NO_VALUE"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_d97873fb","line":87,"updated":"2015-08-26 16:08:08.000000000","message":"This won\u0027t work as expected because the value gets set at import time and conf probably doesn\u0027t happen until later, so the expiration time will always get the default value and not the value the user has configured.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":84,"context_line":"CONF.import_opt(\u0027use_forwarded_for\u0027, \u0027nova.api.auth\u0027)"},{"line_number":85,"context_line":"sslutils.is_enabled(CONF)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"CACHE_EXPIRATION_TIME \u003d CONF.lockout_window * 60"},{"line_number":88,"context_line":"NO_VALUE \u003d cache.NO_VALUE"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_9a02806e","line":87,"in_reply_to":"da20952f_d97873fb","updated":"2015-08-28 12:09:47.000000000","message":"This was moved inside init","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8258dab4b310011ac9724093655eba0a31322f5","unresolved":false,"context_lines":[{"line_number":85,"context_line":"sslutils.is_enabled(CONF)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"CACHE_EXPIRATION_TIME \u003d CONF.lockout_window * 60"},{"line_number":88,"context_line":"NO_VALUE \u003d cache.NO_VALUE"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Fault Wrapper around all EC2 requests"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_7937e7e3","line":88,"updated":"2015-08-26 15:58:05.000000000","message":"style nit: I\u0027d prefer that we just used cache.NO_VALUE where it\u0027s needed rather than this module scope global, it would give it a bit more context directly where it\u0027s used.  But I wouldn\u0027t -1 for this.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"959a94e3dbc8f5d7de7305c6defe983c73ffc520","unresolved":false,"context_lines":[{"line_number":85,"context_line":"sslutils.is_enabled(CONF)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"CACHE_EXPIRATION_TIME \u003d CONF.lockout_window * 60"},{"line_number":88,"context_line":"NO_VALUE \u003d cache.NO_VALUE"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Fault Wrapper around all EC2 requests"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_7ccef55b","line":88,"in_reply_to":"da20952f_7937e7e3","updated":"2015-08-26 16:15:11.000000000","message":"i agree","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":85,"context_line":"sslutils.is_enabled(CONF)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"CACHE_EXPIRATION_TIME \u003d CONF.lockout_window * 60"},{"line_number":88,"context_line":"NO_VALUE \u003d cache.NO_VALUE"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"# Fault Wrapper around all EC2 requests"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_5af628d8","line":88,"in_reply_to":"da20952f_7ccef55b","updated":"2015-08-28 12:09:47.000000000","message":"Done","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"959a94e3dbc8f5d7de7305c6defe983c73ffc520","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        res \u003d req.get_response(self.application)"},{"line_number":177,"context_line":"        if res.status_int \u003d\u003d 403:"},{"line_number":178,"context_line":"            failures \u003d self.cache.get(failures_key)"},{"line_number":179,"context_line":"            if failures is NO_VALUE:"},{"line_number":180,"context_line":"                self.cache.set(failures_key, 1)"},{"line_number":181,"context_line":"            else:"},{"line_number":182,"context_line":"                failures +\u003d 1"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_9c43c96c","line":179,"updated":"2015-08-26 16:15:11.000000000","message":"Not sure if it matters in this context, but it may be important to note that this is no longer atomic and is now subject to races.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":176,"context_line":"        res \u003d req.get_response(self.application)"},{"line_number":177,"context_line":"        if res.status_int \u003d\u003d 403:"},{"line_number":178,"context_line":"            failures \u003d self.cache.get(failures_key)"},{"line_number":179,"context_line":"            if failures is NO_VALUE:"},{"line_number":180,"context_line":"                self.cache.set(failures_key, 1)"},{"line_number":181,"context_line":"            else:"},{"line_number":182,"context_line":"                failures +\u003d 1"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_7a368c53","line":179,"in_reply_to":"da20952f_9c43c96c","updated":"2015-08-28 12:09:47.000000000","message":"oslo_cache doesn\u0027t support incr operation so we must replace it with get and set","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8258dab4b310011ac9724093655eba0a31322f5","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                                {\u0027access_key\u0027: access_key,"},{"line_number":191,"context_line":"                                 \u0027failures\u0027: failures,"},{"line_number":192,"context_line":"                                 \u0027lock_mins\u0027: CONF.lockout_minutes})"},{"line_number":193,"context_line":"                    self.cache.set(failures_key, failures)"},{"line_number":194,"context_line":"        return res"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_d9fe3305","line":193,"updated":"2015-08-26 15:58:05.000000000","message":"You don\u0027t need this line since you already set it on L183.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":190,"context_line":"                                {\u0027access_key\u0027: access_key,"},{"line_number":191,"context_line":"                                 \u0027failures\u0027: failures,"},{"line_number":192,"context_line":"                                 \u0027lock_mins\u0027: CONF.lockout_minutes})"},{"line_number":193,"context_line":"                    self.cache.set(failures_key, failures)"},{"line_number":194,"context_line":"        return res"},{"line_number":195,"context_line":""},{"line_number":196,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_d5868b64","line":193,"in_reply_to":"da20952f_d9fe3305","updated":"2015-08-28 12:09:47.000000000","message":"Done","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"903c03afdb53f59a9bf9cc3d8f3b93a612fdf541","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003ddetail)"},{"line_number":173,"context_line":"        res \u003d req.get_response(self.application)"},{"line_number":174,"context_line":"        if res.status_int \u003d\u003d 403:"},{"line_number":175,"context_line":"            failures \u003d self.cache.get(failures_key)"},{"line_number":176,"context_line":"            if failures is cache.NO_VALUE:"},{"line_number":177,"context_line":"                self.cache.set(failures_key, 1)"},{"line_number":178,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a1a9d01_abe0e529","line":175,"updated":"2015-09-30 18:58:11.000000000","message":"this looks like it was trying to be multiprocess-safe before, but now it\u0027s not multi-process safe. If this is multiprocess-safe here somehow then add a comment that explains why it\u0027s safe to do the get separately from the set.\n\nHere\u0027s some docs on atomic ops in memcache: http://neopythonic.blogspot.com/2011/08/compare-and-set-in-memcache.html\n\nI don\u0027t know if oslo.cache supports any atomic ops.\n\ndogpile provides a function to get_or_create so this could be simpler:\n\nhttp://dogpilecache.readthedocs.org/en/latest/api.html#dogpile.cache.region.CacheRegion.get_or_create","commit_id":"30f2b7e4cd2c737c94931736c444ed2c491f0d8d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"42b3153924e0713eba6f15bfe69b800177da04e7","unresolved":false,"context_lines":[{"line_number":172,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003ddetail)"},{"line_number":173,"context_line":"        res \u003d req.get_response(self.application)"},{"line_number":174,"context_line":"        if res.status_int \u003d\u003d 403:"},{"line_number":175,"context_line":"            failures \u003d self.cache.get(failures_key)"},{"line_number":176,"context_line":"            if failures is cache.NO_VALUE:"},{"line_number":177,"context_line":"                self.cache.set(failures_key, 1)"},{"line_number":178,"context_line":"            else:"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a1a9d01_63ededee","line":175,"in_reply_to":"9a1a9d01_abe0e529","updated":"2015-10-01 14:49:52.000000000","message":"Agree with this point. fixed","commit_id":"30f2b7e4cd2c737c94931736c444ed2c491f0d8d"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"32039eac71870c1b994c22d8df7d1f5b0cf2727a","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        res \u003d req.get_response(self.application)"},{"line_number":174,"context_line":"        if res.status_int \u003d\u003d 403:"},{"line_number":175,"context_line":"            failures \u003d self.cache.get_or_create(failures_key, lambda: 0) + 1"},{"line_number":176,"context_line":"            self.cache.set(failures_key, failures)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"            if failures \u003e\u003d CONF.lockout_attempts:"},{"line_number":179,"context_line":"                LOG.warning(_LW(\u0027Access key %(access_key)s has had \u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"5a2ca52d_9c9d7bbe","line":176,"updated":"2015-10-15 21:57:40.000000000","message":"this is still introducing a bug, there\u0027s a race condition between the get and the set now that wasn\u0027t present when .incr was used.\n\nI don\u0027t have a proposed solution since I\u0027m not that familiar with oslo.cache and how you can prevent it. I don\u0027t see any atomic operations in there.","commit_id":"fbb498768e99b48fe4cdccb1e218cf1ad7b4a5e8"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"4e9c849716b979e46a07c442d1559f828fafa84c","unresolved":false,"context_lines":[{"line_number":173,"context_line":"        res \u003d req.get_response(self.application)"},{"line_number":174,"context_line":"        if res.status_int \u003d\u003d 403:"},{"line_number":175,"context_line":"            failures \u003d self.cache.get_or_create(failures_key, lambda: 0) + 1"},{"line_number":176,"context_line":"            self.cache.set(failures_key, failures)"},{"line_number":177,"context_line":""},{"line_number":178,"context_line":"            if failures \u003e\u003d CONF.lockout_attempts:"},{"line_number":179,"context_line":"                LOG.warning(_LW(\u0027Access key %(access_key)s has had \u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"5a2ca52d_401a767e","line":176,"in_reply_to":"5a2ca52d_9c9d7bbe","updated":"2015-10-16 14:16:59.000000000","message":"Thanks for review Brant! We decided to add LOCK here. Do you think it is ok?\n\nCould you please check other code, maybe the same locks are needed somewhere else","commit_id":"fbb498768e99b48fe4cdccb1e218cf1ad7b4a5e8"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"74c1fea55b9764a570a009e0d762b58d5404b50e","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003ddetail)"},{"line_number":177,"context_line":"        res \u003d req.get_response(self.application)"},{"line_number":178,"context_line":"        if res.status_int \u003d\u003d 403:"},{"line_number":179,"context_line":"            with _LOCK:"},{"line_number":180,"context_line":"                failures \u003d self.cache.get_or_create(failures_key,"},{"line_number":181,"context_line":"                                                    lambda: 0) + 1"},{"line_number":182,"context_line":"                self.cache.set(failures_key, failures)"}],"source_content_type":"text/x-python","patch_set":32,"id":"5a2ca52d_0629f636","line":179,"updated":"2015-10-16 14:30:33.000000000","message":"this isn\u0027t going to do anything. the problem is that another process not sharing the lock can update the entry at the same time tha this process is. This is why incr was used before is because it works atomically across processes.","commit_id":"d42efc8fd9b6d147f7b8e4415b2365702837013f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"8bb4498f3057fac0af8d2c91c7942c8c68897a17","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            raise webob.exc.HTTPForbidden(explanation\u003ddetail)"},{"line_number":177,"context_line":"        res \u003d req.get_response(self.application)"},{"line_number":178,"context_line":"        if res.status_int \u003d\u003d 403:"},{"line_number":179,"context_line":"            with _LOCK:"},{"line_number":180,"context_line":"                failures \u003d self.cache.get_or_create(failures_key,"},{"line_number":181,"context_line":"                                                    lambda: 0) + 1"},{"line_number":182,"context_line":"                self.cache.set(failures_key, failures)"}],"source_content_type":"text/x-python","patch_set":32,"id":"5a2ca52d_269752ed","line":179,"in_reply_to":"5a2ca52d_0629f636","updated":"2015-10-16 14:38:36.000000000","message":"It looks like a race condition here isn\u0027t that big of a deal since it should just cause some extra retries. So I\u0027d be fine with no locking or compare-and-swap and add a comment saying we\u0027re ignoring the race condition because it will only cause extra retries.","commit_id":"d42efc8fd9b6d147f7b8e4415b2365702837013f"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c5da7bf7a4726303d49c59d8df703ad9ab44148f","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    @webob.dec.wsgify(RequestClass\u003dwsgi.Request)"},{"line_number":164,"context_line":"    def __call__(self, req):"},{"line_number":165,"context_line":"        global _LOCK"},{"line_number":166,"context_line":"        access_key \u003d str(req.params[\u0027AWSAccessKeyId\u0027])"},{"line_number":167,"context_line":"        failures_key \u003d \"authfailures-%s\" % access_key"},{"line_number":168,"context_line":"        failures \u003d self.cache.get(failures_key)"}],"source_content_type":"text/x-python","patch_set":33,"id":"5a2ca52d_71c2e635","line":165,"updated":"2015-10-16 14:51:56.000000000","message":"not defined.","commit_id":"bd106be9b7867bb42470c748b71dd12601361235"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"c5da7bf7a4726303d49c59d8df703ad9ab44148f","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        res \u003d req.get_response(self.application)"},{"line_number":175,"context_line":"        if res.status_int \u003d\u003d 403:"},{"line_number":176,"context_line":"            # NOTE(pkholkin): we don\u0027t stricly care about multiprocessing here"},{"line_number":177,"context_line":"            # and don\u0027t insist on atomic operation instead of incr"},{"line_number":178,"context_line":"            failures \u003d self.cache.get_or_create(failures_key, lambda: 0) + 1"},{"line_number":179,"context_line":"            self.cache.set(failures_key, failures)"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"5a2ca52d_b1415eab","line":177,"updated":"2015-10-16 14:51:56.000000000","message":"remove \"instead of incr\".\n\nThe comment should say that the result of a race is that extra attempts will be allowed for authentication failures.","commit_id":"bd106be9b7867bb42470c748b71dd12601361235"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"2cd379fd27eb55a6e02816dfd5fd6e1f2addc5f9","unresolved":false,"context_lines":[{"line_number":174,"context_line":"        res \u003d req.get_response(self.application)"},{"line_number":175,"context_line":"        if res.status_int \u003d\u003d 403:"},{"line_number":176,"context_line":"            # NOTE(pkholkin): we don\u0027t stricly care about multiprocessing here"},{"line_number":177,"context_line":"            # and don\u0027t insist on atomic operation instead of incr"},{"line_number":178,"context_line":"            failures \u003d self.cache.get_or_create(failures_key, lambda: 0) + 1"},{"line_number":179,"context_line":"            self.cache.set(failures_key, failures)"},{"line_number":180,"context_line":""}],"source_content_type":"text/x-python","patch_set":33,"id":"5a2ca52d_b104fe49","line":177,"in_reply_to":"5a2ca52d_b1415eab","updated":"2015-10-16 14:53:55.000000000","message":"So it looks like an attacker could flood the system with simultaneous requests to get around the lockout_attempts protection.","commit_id":"bd106be9b7867bb42470c748b71dd12601361235"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"5cef3d4c92d15a10b854e2c6394c07212bd47de5","unresolved":false,"context_lines":[{"line_number":162,"context_line":""},{"line_number":163,"context_line":"    @webob.dec.wsgify(RequestClass\u003dwsgi.Request)"},{"line_number":164,"context_line":"    def __call__(self, req):"},{"line_number":165,"context_line":"        global _LOCK"},{"line_number":166,"context_line":"        access_key \u003d str(req.params[\u0027AWSAccessKeyId\u0027])"},{"line_number":167,"context_line":"        failures_key \u003d \"authfailures-%s\" % access_key"},{"line_number":168,"context_line":"        failures \u003d self.cache.get(failures_key)"}],"source_content_type":"text/x-python","patch_set":34,"id":"5a2ca52d_6cabe975","line":165,"updated":"2015-10-16 15:09:02.000000000","message":"_LOCK is not defined","commit_id":"30e14014f1baa0d7d64162c7d66d2c1fde3923f4"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b07e1672c833701118876678c167ab1f141f16c0","unresolved":false,"context_lines":[{"line_number":156,"context_line":""},{"line_number":157,"context_line":"    def __init__(self, application):"},{"line_number":158,"context_line":"        \"\"\"middleware can use fake for testing.\"\"\""},{"line_number":159,"context_line":"        self.cache \u003d utils.get_oslo_cache_client("},{"line_number":160,"context_line":"            expiration_time\u003dCONF.lockout_window * 60)"},{"line_number":161,"context_line":"        super(Lockout, self).__init__(application)"},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":37,"id":"3a29b11f_66227ebb","line":159,"updated":"2015-10-20 12:26:36.000000000","message":"cache should be _cache","commit_id":"7d85db61c95ca7696a5ddc99f92647fbe21f658c"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b07e1672c833701118876678c167ab1f141f16c0","unresolved":false,"context_lines":[{"line_number":176,"context_line":"            # and don\u0027t insist on atomic operation. The only result of the race"},{"line_number":177,"context_line":"            # condition here is that extra attempts will be allowed for"},{"line_number":178,"context_line":"            # authentication failures."},{"line_number":179,"context_line":"            failures \u003d self.cache.get_or_create(failures_key, lambda: 0) + 1"},{"line_number":180,"context_line":"            self.cache.set(failures_key, failures)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"            if failures \u003e\u003d CONF.lockout_attempts:"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a29b11f_4915153e","line":179,"updated":"2015-10-20 12:26:36.000000000","message":"will this ever return failures?","commit_id":"7d85db61c95ca7696a5ddc99f92647fbe21f658c"}],"nova/api/ec2/ec2utils.py":[{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"dba25454802fb47d123b7cf0c338718404d30f51","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import functools"},{"line_number":18,"context_line":"import re"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_cache.backends.dictionary import NO_VALUE"},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"from oslo_utils import timeutils"},{"line_number":23,"context_line":"from oslo_utils import uuidutils"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_368eac79","line":20,"updated":"2015-07-22 12:31:41.000000000","message":"this import will be improved to\n\n    from oslo_cache.core import NO_VALUE\n\nafter merging corresponding patch to oslo_cache lib","commit_id":"b00687d0cae806368c892e5d71f0da3fc72ffe98"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"bb11d8e1f3f7cfd2c198df18b5bb79c6ffa0f0b3","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import functools"},{"line_number":18,"context_line":"import re"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_cache.backends.dictionary import NO_VALUE"},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"from oslo_utils import timeutils"},{"line_number":23,"context_line":"from oslo_utils import uuidutils"}],"source_content_type":"text/x-python","patch_set":3,"id":"3a50d1a3_af6bfe1c","line":20,"in_reply_to":"3a50d1a3_368eac79","updated":"2015-07-23 13:13:17.000000000","message":"I suggest we put this on hold till oslo_cache improvement is released.","commit_id":"b00687d0cae806368c892e5d71f0da3fc72ffe98"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"96994f234cd3674059f80b430e537cd2ecd856c9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import functools"},{"line_number":18,"context_line":"import re"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"from oslo_utils import timeutils"},{"line_number":23,"context_line":"from oslo_utils import uuidutils"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_139f5b04","line":20,"updated":"2015-08-24 16:22:06.000000000","message":"ditto..","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"3202572ce94451a0a59f003110d9e50031e9eabd","unresolved":false,"context_lines":[{"line_number":17,"context_line":"import functools"},{"line_number":18,"context_line":"import re"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"from oslo_utils import timeutils"},{"line_number":23,"context_line":"from oslo_utils import uuidutils"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_737c9420","line":20,"in_reply_to":"fa1b9901_139f5b04","updated":"2015-08-24 17:10:45.000000000","message":"Done","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"903c03afdb53f59a9bf9cc3d8f3b93a612fdf541","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        value \u003d _CACHE.get(key)"},{"line_number":50,"context_line":"        if value is cache.NO_VALUE:"},{"line_number":51,"context_line":"            value \u003d func(context, reqid)"},{"line_number":52,"context_line":"            _CACHE.set(key, value)"},{"line_number":53,"context_line":"        return value"},{"line_number":54,"context_line":"    return memoizer"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9a1a9d01_2b4db599","line":52,"updated":"2015-09-30 18:58:11.000000000","message":"could use get_or_create here: http://dogpilecache.readthedocs.org/en/latest/api.html#dogpile.cache.region.CacheRegion.get_or_create","commit_id":"30f2b7e4cd2c737c94931736c444ed2c491f0d8d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"42b3153924e0713eba6f15bfe69b800177da04e7","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        value \u003d _CACHE.get(key)"},{"line_number":50,"context_line":"        if value is cache.NO_VALUE:"},{"line_number":51,"context_line":"            value \u003d func(context, reqid)"},{"line_number":52,"context_line":"            _CACHE.set(key, value)"},{"line_number":53,"context_line":"        return value"},{"line_number":54,"context_line":"    return memoizer"},{"line_number":55,"context_line":""}],"source_content_type":"text/x-python","patch_set":24,"id":"9a1a9d01_a3ca256d","line":52,"in_reply_to":"9a1a9d01_2b4db599","updated":"2015-10-01 14:49:52.000000000","message":"agree, thanks","commit_id":"30f2b7e4cd2c737c94931736c444ed2c491f0d8d"},{"author":{"_account_id":14358,"name":"Marian Horban","email":"m.horban@gmail.com","username":"mhorban"},"change_message_id":"140bfd802516766320da72907b346df960f45580","unresolved":false,"context_lines":[{"line_number":40,"context_line":"def memoize(func):"},{"line_number":41,"context_line":"    @functools.wraps(func)"},{"line_number":42,"context_line":"    def memoizer(context, reqid):"},{"line_number":43,"context_line":"        global _CACHE"},{"line_number":44,"context_line":"        if not _CACHE:"},{"line_number":45,"context_line":"            _CACHE \u003d utils.get_oslo_cache_client(expiration_time\u003d_CACHE_TIME)"},{"line_number":46,"context_line":"        key \u003d \"%s:%s\" % (func.__name__, reqid)"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a2fa921_ba955089","line":43,"updated":"2015-10-12 16:11:31.000000000","message":"Don\u0027t we need mutex here?\n...And in all places where you are using global _CACHE var","commit_id":"fbb498768e99b48fe4cdccb1e218cf1ad7b4a5e8"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"4e9c849716b979e46a07c442d1559f828fafa84c","unresolved":false,"context_lines":[{"line_number":40,"context_line":"def memoize(func):"},{"line_number":41,"context_line":"    @functools.wraps(func)"},{"line_number":42,"context_line":"    def memoizer(context, reqid):"},{"line_number":43,"context_line":"        global _CACHE"},{"line_number":44,"context_line":"        if not _CACHE:"},{"line_number":45,"context_line":"            _CACHE \u003d utils.get_oslo_cache_client(expiration_time\u003d_CACHE_TIME)"},{"line_number":46,"context_line":"        key \u003d \"%s:%s\" % (func.__name__, reqid)"}],"source_content_type":"text/x-python","patch_set":31,"id":"5a2ca52d_eb54c3fe","line":43,"in_reply_to":"7a2fa921_ba955089","updated":"2015-10-16 14:16:59.000000000","message":"We try to do only switch to oslo.cache but maybe locks are needed here","commit_id":"fbb498768e99b48fe4cdccb1e218cf1ad7b4a5e8"}],"nova/api/metadata/handler.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"96994f234cd3674059f80b430e537cd2ecd856c9","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import hmac"},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":"from oslo_log import log as logging"},{"line_number":25,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_7366d72a","line":22,"updated":"2015-08-24 16:22:06.000000000","message":"ditto","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"3202572ce94451a0a59f003110d9e50031e9eabd","unresolved":false,"context_lines":[{"line_number":19,"context_line":"import hmac"},{"line_number":20,"context_line":"import os"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":23,"context_line":"from oslo_config import cfg"},{"line_number":24,"context_line":"from oslo_log import log as logging"},{"line_number":25,"context_line":"import six"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_9377e83a","line":22,"in_reply_to":"fa1b9901_7366d72a","updated":"2015-08-24 17:10:45.000000000","message":"Done","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":782,"name":"John Garbutt","email":"john@johngarbutt.com","username":"johngarbutt"},"change_message_id":"f43fcaf7731858f7cbfacda663acd15f60edc3c5","unresolved":false,"context_lines":[{"line_number":67,"context_line":""},{"line_number":68,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":69,"context_line":""},{"line_number":70,"context_line":"NO_VALUE \u003d cache.NO_VALUE"},{"line_number":71,"context_line":""},{"line_number":72,"context_line":""},{"line_number":73,"context_line":"class MetadataRequestHandler(wsgi.Application):"}],"source_content_type":"text/x-python","patch_set":16,"id":"fa1b9901_cad568e5","line":70,"updated":"2015-08-25 16:55:58.000000000","message":"Nit: I prefer using cache.NO_VALUE but thats a personal preference thing.","commit_id":"ebc05ab17991da320e4755ac3d860ace95967dd9"}],"nova/availability_zones.py":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"b8a18c5a2fbf61dcb341c6b18b2c2ca35bf2420b","unresolved":false,"context_lines":[{"line_number":41,"context_line":"CONF.register_opts(availability_zone_opts)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def _get_cache():"},{"line_number":45,"context_line":"    global CACHE"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    if CACHE is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_8d424d0f","line":44,"updated":"2015-07-21 13:55:32.000000000","message":"I\u0027m not sure where this is used from, but it\u0027s most likely prone to concurrency errors.","commit_id":"2300fae0878f694ec9b588c4e422915bbaf068bf"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"871f1a50238e7a676207c36f55578d5928687c1c","unresolved":false,"context_lines":[{"line_number":41,"context_line":"CONF.register_opts(availability_zone_opts)"},{"line_number":42,"context_line":""},{"line_number":43,"context_line":""},{"line_number":44,"context_line":"def _get_cache():"},{"line_number":45,"context_line":"    global CACHE"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    if CACHE is None:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_50e02096","line":44,"in_reply_to":"3a50d1a3_8d424d0f","updated":"2015-07-22 12:21:52.000000000","message":"Maybe, but again it doesn\u0027t depend on using oslo_cache. Maybe we will think and improve it in another patch.","commit_id":"2300fae0878f694ec9b588c4e422915bbaf068bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6ec187501bb9062f1ae144f4e3dc5cef94ac1d6d","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nova import objects"},{"line_number":23,"context_line":"from nova import utils"},{"line_number":24,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# NOTE(vish): azs don\u0027t change that often, so cache them for an hour to"},{"line_number":27,"context_line":"#             avoid hitting the db multiple times on every request."}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_f16e6ac8","line":24,"updated":"2015-08-18 15:07:19.000000000","message":"Group this with 3rd party imports like oslo_config above.","commit_id":"58baf63285dc3484d9785f1dc12fd5e1cc0cf598"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"aeeffc36fe01a4cd0115d7e708804aec1bdf4970","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nova import objects"},{"line_number":23,"context_line":"from nova import utils"},{"line_number":24,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"# NOTE(vish): azs don\u0027t change that often, so cache them for an hour to"},{"line_number":27,"context_line":"#             avoid hitting the db multiple times on every request."}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_499c4ac0","line":24,"in_reply_to":"fa1b9901_f16e6ac8","updated":"2015-08-18 15:35:35.000000000","message":"Done","commit_id":"58baf63285dc3484d9785f1dc12fd5e1cc0cf598"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"96994f234cd3674059f80b430e537cd2ecd856c9","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import collections"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":21,"context_line":"from oslo_config import cfg"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from nova import objects"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_f372e7e2","line":20,"updated":"2015-08-24 16:22:06.000000000","message":"ditto.","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"3202572ce94451a0a59f003110d9e50031e9eabd","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import collections"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":21,"context_line":"from oslo_config import cfg"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from nova import objects"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_33761c3f","line":20,"in_reply_to":"fa1b9901_f372e7e2","updated":"2015-08-24 17:10:45.000000000","message":"Done","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":16839,"name":"Cale Rath","email":"ctrath@us.ibm.com","username":"ctrath"},"change_message_id":"49c2dcc3759dbdadcff9d399596a1e620a6440d3","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def _get_cache():"},{"line_number":46,"context_line":"    global CACHE"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    if CACHE is None:"},{"line_number":49,"context_line":"        CACHE \u003d utils.get_oslo_cache_client(expiration_time\u003dAZ_CACHE_SECONDS)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_ed048dc7","line":47,"updated":"2015-08-26 16:52:40.000000000","message":"Should you also check if the cache has expired?  The more I think about this, cacheing the cache is troublesome.  What happens if the cache timeout is about ready to expire and an entry is added?","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":44,"context_line":""},{"line_number":45,"context_line":"def _get_cache():"},{"line_number":46,"context_line":"    global CACHE"},{"line_number":47,"context_line":""},{"line_number":48,"context_line":"    if CACHE is None:"},{"line_number":49,"context_line":"        CACHE \u003d utils.get_oslo_cache_client(expiration_time\u003dAZ_CACHE_SECONDS)"},{"line_number":50,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_5037e9e2","line":47,"in_reply_to":"da20952f_ed048dc7","updated":"2015-08-28 12:09:47.000000000","message":"this method is only needed for getting singletone cache instance, oslo_cache itself works correctly with expired keys","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"b07e1672c833701118876678c167ab1f141f16c0","unresolved":false,"context_lines":[{"line_number":26,"context_line":"# NOTE(vish): azs don\u0027t change that often, so cache them for an hour to"},{"line_number":27,"context_line":"#             avoid hitting the db multiple times on every request."},{"line_number":28,"context_line":"AZ_CACHE_SECONDS \u003d 60 * 60"},{"line_number":29,"context_line":"CACHE \u003d None"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":"availability_zone_opts \u003d ["},{"line_number":32,"context_line":"    cfg.StrOpt(\u0027internal_service_availability_zone\u0027,"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a29b11f_a924e9ae","line":29,"updated":"2015-10-20 12:26:36.000000000","message":"this is local so please prefix with _","commit_id":"7d85db61c95ca7696a5ddc99f92647fbe21f658c"}],"nova/consoleauth/manager.py":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"b8a18c5a2fbf61dcb341c6b18b2c2ca35bf2420b","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                                                 *args, **kwargs)"},{"line_number":56,"context_line":"        self.token_cache \u003d utils.get_oslo_cache_client("},{"line_number":57,"context_line":"            expiration_time\u003dCONF.console_token_ttl)"},{"line_number":58,"context_line":"        self.instance_cache \u003d utils.get_oslo_cache_client()"},{"line_number":59,"context_line":"        self.compute_rpcapi \u003d compute_rpcapi.ComputeAPI()"},{"line_number":60,"context_line":"        self.cells_rpcapi \u003d cells_rpcapi.CellsAPI()"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_8d59ed00","line":58,"updated":"2015-07-21 13:55:32.000000000","message":"no ttl here?","commit_id":"2300fae0878f694ec9b588c4e422915bbaf068bf"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"871f1a50238e7a676207c36f55578d5928687c1c","unresolved":false,"context_lines":[{"line_number":55,"context_line":"                                                 *args, **kwargs)"},{"line_number":56,"context_line":"        self.token_cache \u003d utils.get_oslo_cache_client("},{"line_number":57,"context_line":"            expiration_time\u003dCONF.console_token_ttl)"},{"line_number":58,"context_line":"        self.instance_cache \u003d utils.get_oslo_cache_client()"},{"line_number":59,"context_line":"        self.compute_rpcapi \u003d compute_rpcapi.ComputeAPI()"},{"line_number":60,"context_line":"        self.cells_rpcapi \u003d cells_rpcapi.CellsAPI()"},{"line_number":61,"context_line":""}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_9340f235","line":58,"in_reply_to":"3a50d1a3_8d59ed00","updated":"2015-07-22 12:21:52.000000000","message":"Yes, the difference is in expiration_time.\n\nToken values has specific CONF.console_token_ttl life lime:\n\n    self.mc.set(token.encode(\u0027UTF-8\u0027), data, CONF.console_token_ttl):\n\nInstance tokens has no such value (that is infinite):\n\n    self.mc.set(instance_uuid.encode(\u0027UTF-8\u0027), jsonutils.dumps(tokens))\n\nThat\u0027s why we create here two different cache object instances.","commit_id":"2300fae0878f694ec9b588c4e422915bbaf068bf"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6ec187501bb9062f1ae144f4e3dc5cef94ac1d6d","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        tokens.append(token)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.instance_tokens_cache.set(instance_uuid.encode(\u0027UTF-8\u0027),"},{"line_number":94,"context_line":"                                jsonutils.dumps(tokens))"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        LOG.info(_LI(\"Received Token: %(token)s, %(token_dict)s\"),"},{"line_number":97,"context_line":"                  {\u0027token\u0027: token, \u0027token_dict\u0027: token_dict})"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_d1f566cb","line":94,"updated":"2015-08-18 15:07:19.000000000","message":"Please align this with the args above.","commit_id":"58baf63285dc3484d9785f1dc12fd5e1cc0cf598"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"aeeffc36fe01a4cd0115d7e708804aec1bdf4970","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        tokens.append(token)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        self.instance_tokens_cache.set(instance_uuid.encode(\u0027UTF-8\u0027),"},{"line_number":94,"context_line":"                                jsonutils.dumps(tokens))"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"        LOG.info(_LI(\"Received Token: %(token)s, %(token_dict)s\"),"},{"line_number":97,"context_line":"                  {\u0027token\u0027: token, \u0027token_dict\u0027: token_dict})"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_699fceb4","line":94,"in_reply_to":"fa1b9901_d1f566cb","updated":"2015-08-18 15:35:35.000000000","message":"Done","commit_id":"58baf63285dc3484d9785f1dc12fd5e1cc0cf598"},{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"96994f234cd3674059f80b430e537cd2ecd856c9","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import time"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":22,"context_line":"from oslo_config import cfg"},{"line_number":23,"context_line":"from oslo_log import log as logging"},{"line_number":24,"context_line":"import oslo_messaging as messaging"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_534ab384","line":21,"updated":"2015-08-24 16:22:06.000000000","message":"ditto","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"3202572ce94451a0a59f003110d9e50031e9eabd","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import time"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":22,"context_line":"from oslo_config import cfg"},{"line_number":23,"context_line":"from oslo_log import log as logging"},{"line_number":24,"context_line":"import oslo_messaging as messaging"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_f38e6426","line":21,"in_reply_to":"fa1b9901_534ab384","updated":"2015-08-24 17:10:45.000000000","message":"Done","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"89dfe347a1a429385e260d9d3a75b5cdc5619fe8","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                      \u0027last_activity_at\u0027: time.time()}"},{"line_number":85,"context_line":"        data \u003d jsonutils.dumps(token_dict)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        self.token_data_cache.set(token.encode(\u0027UTF-8\u0027), data)"},{"line_number":88,"context_line":"        tokens \u003d self._get_tokens_for_instance(instance_uuid)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        # Remove the expired tokens from cache."}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_9ca42909","line":87,"updated":"2015-08-26 16:08:08.000000000","message":"why were the warning logs removed? Seems dangerous.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":84,"context_line":"                      \u0027last_activity_at\u0027: time.time()}"},{"line_number":85,"context_line":"        data \u003d jsonutils.dumps(token_dict)"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"        self.token_data_cache.set(token.encode(\u0027UTF-8\u0027), data)"},{"line_number":88,"context_line":"        tokens \u003d self._get_tokens_for_instance(instance_uuid)"},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        # Remove the expired tokens from cache."}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_7021cd9e","line":87,"in_reply_to":"da20952f_9ca42909","updated":"2015-08-28 12:09:47.000000000","message":"previously memorycache returned true, memcache could return some result, but now oslo_cache.dict and dogpile.cache.memcached return None, so the warning is not needed","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"903c03afdb53f59a9bf9cc3d8f3b93a612fdf541","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        tokens \u003d self._get_tokens_for_instance(instance_uuid)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        # Remove the expired tokens from cache."},{"line_number":89,"context_line":"        token_values \u003d self.token_data_cache.get_multi("},{"line_number":90,"context_line":"            [tok.encode(\u0027UTF-8\u0027) for tok in tokens])"},{"line_number":91,"context_line":"        tokens \u003d [name for name, value in zip(tokens, token_values)"},{"line_number":92,"context_line":"                  if value is not cache.NO_VALUE]"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a1a9d01_8e8acf62","line":89,"updated":"2015-09-30 18:58:11.000000000","message":"this should also be done atomically but it wasn\u0027t before.","commit_id":"30f2b7e4cd2c737c94931736c444ed2c491f0d8d"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"42b3153924e0713eba6f15bfe69b800177da04e7","unresolved":false,"context_lines":[{"line_number":86,"context_line":"        tokens \u003d self._get_tokens_for_instance(instance_uuid)"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"        # Remove the expired tokens from cache."},{"line_number":89,"context_line":"        token_values \u003d self.token_data_cache.get_multi("},{"line_number":90,"context_line":"            [tok.encode(\u0027UTF-8\u0027) for tok in tokens])"},{"line_number":91,"context_line":"        tokens \u003d [name for name, value in zip(tokens, token_values)"},{"line_number":92,"context_line":"                  if value is not cache.NO_VALUE]"}],"source_content_type":"text/x-python","patch_set":24,"id":"9a1a9d01_4348e9cc","line":89,"in_reply_to":"9a1a9d01_8e8acf62","updated":"2015-10-01 14:49:52.000000000","message":"Yes, before was the same problem, now we leave it as it was.\n\nNow we have two different cache instances: \u0027token_name\u0027 -\u003e \u0027data\u0027, \u0027instance_uuid\u0027 -\u003e \u0027token_names_list\u0027. We can\u0027t simultaneously get the list from the second one and check all values in it from the first to make it atomic. Maybe you have some ideas?","commit_id":"30f2b7e4cd2c737c94931736c444ed2c491f0d8d"}],"nova/servicegroup/drivers/mc.py":[{"author":{"_account_id":7,"name":"Jay Pipes","email":"jaypipes@gmail.com","username":"jaypipes"},"change_message_id":"96994f234cd3674059f80b430e537cd2ecd856c9","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":18,"context_line":"# limitations under the License."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":21,"context_line":"from oslo_config import cfg"},{"line_number":22,"context_line":"from oslo_log import log as logging"},{"line_number":23,"context_line":"from oslo_utils import timeutils"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_53187384","line":20,"updated":"2015-08-24 16:22:06.000000000","message":"ditto","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"3202572ce94451a0a59f003110d9e50031e9eabd","unresolved":false,"context_lines":[{"line_number":17,"context_line":"# See the License for the specific language governing permissions and"},{"line_number":18,"context_line":"# limitations under the License."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from oslo_cache.core import NO_VALUE"},{"line_number":21,"context_line":"from oslo_config import cfg"},{"line_number":22,"context_line":"from oslo_log import log as logging"},{"line_number":23,"context_line":"from oslo_utils import timeutils"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_1392f84b","line":20,"in_reply_to":"fa1b9901_53187384","updated":"2015-08-24 17:10:45.000000000","message":"Done","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"01f4e85c6ebdeb1aa08ad72b452fc4aecea4cc07","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            raise RuntimeError(_(\u0027memcached_servers not defined\u0027))"},{"line_number":43,"context_line":"        self.cache \u003d utils.get_oslo_cache_client("},{"line_number":44,"context_line":"            \u0027dogpile.cache.memcached\u0027, expiration_time\u003dCONF.service_down_time,"},{"line_number":45,"context_line":"            url\u003dCONF.memcached_servers)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def join(self, member_id, group_id, service\u003dNone):"},{"line_number":48,"context_line":"        \"\"\"Join the given service with its group.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_7fad4087","line":45,"updated":"2015-08-24 15:06:24.000000000","message":"passing \"url\" here  is ok for L for backward compat, for M we should use oslo.cache\u0027s configuration section in nova.conf","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"3202572ce94451a0a59f003110d9e50031e9eabd","unresolved":false,"context_lines":[{"line_number":42,"context_line":"            raise RuntimeError(_(\u0027memcached_servers not defined\u0027))"},{"line_number":43,"context_line":"        self.cache \u003d utils.get_oslo_cache_client("},{"line_number":44,"context_line":"            \u0027dogpile.cache.memcached\u0027, expiration_time\u003dCONF.service_down_time,"},{"line_number":45,"context_line":"            url\u003dCONF.memcached_servers)"},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def join(self, member_id, group_id, service\u003dNone):"},{"line_number":48,"context_line":"        \"\"\"Join the given service with its group.\"\"\""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_d39b2065","line":45,"in_reply_to":"fa1b9901_7fad4087","updated":"2015-08-24 17:10:45.000000000","message":"add note","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8258dab4b310011ac9724093655eba0a31322f5","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        # configuration section in nova.conf"},{"line_number":48,"context_line":"        self.cache \u003d utils.get_oslo_cache_client("},{"line_number":49,"context_line":"            \u0027dogpile.cache.memcached\u0027, expiration_time\u003dCONF.service_down_time,"},{"line_number":50,"context_line":"            url\u003dCONF.memcached_servers)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def join(self, member_id, group_id, service\u003dNone):"},{"line_number":53,"context_line":"        \"\"\"Join the given service with its group.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_d9dcf31a","line":50,"updated":"2015-08-26 15:58:05.000000000","message":"Given the note above, should we mark this option as deprecated_for_removal then?","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        # configuration section in nova.conf"},{"line_number":48,"context_line":"        self.cache \u003d utils.get_oslo_cache_client("},{"line_number":49,"context_line":"            \u0027dogpile.cache.memcached\u0027, expiration_time\u003dCONF.service_down_time,"},{"line_number":50,"context_line":"            url\u003dCONF.memcached_servers)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def join(self, member_id, group_id, service\u003dNone):"},{"line_number":53,"context_line":"        \"\"\"Join the given service with its group.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_b0ef6586","line":50,"in_reply_to":"da20952f_3c487d5b","updated":"2015-08-28 12:09:47.000000000","message":"marked as deprecated_for_removal in utlis","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"959a94e3dbc8f5d7de7305c6defe983c73ffc520","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        # configuration section in nova.conf"},{"line_number":48,"context_line":"        self.cache \u003d utils.get_oslo_cache_client("},{"line_number":49,"context_line":"            \u0027dogpile.cache.memcached\u0027, expiration_time\u003dCONF.service_down_time,"},{"line_number":50,"context_line":"            url\u003dCONF.memcached_servers)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def join(self, member_id, group_id, service\u003dNone):"},{"line_number":53,"context_line":"        \"\"\"Join the given service with its group.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_3c487d5b","line":50,"in_reply_to":"da20952f_d9dcf31a","updated":"2015-08-26 16:15:11.000000000","message":"++","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"89dfe347a1a429385e260d9d3a75b5cdc5619fe8","unresolved":false,"context_lines":[{"line_number":47,"context_line":"        # configuration section in nova.conf"},{"line_number":48,"context_line":"        self.cache \u003d utils.get_oslo_cache_client("},{"line_number":49,"context_line":"            \u0027dogpile.cache.memcached\u0027, expiration_time\u003dCONF.service_down_time,"},{"line_number":50,"context_line":"            url\u003dCONF.memcached_servers)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def join(self, member_id, group_id, service\u003dNone):"},{"line_number":53,"context_line":"        \"\"\"Join the given service with its group.\"\"\""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_9cf2e905","line":50,"in_reply_to":"da20952f_d9dcf31a","updated":"2015-08-26 16:08:08.000000000","message":"good idea. Log a deprecated message so they can stop using it.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"68105c0834980ed8713a8bf5a25f802e2b8054f0","unresolved":false,"context_lines":[{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":41,"context_line":"        LOG.warn(_LW(\u0027\"memcached_servers\" opt is deprecated in Mitaka. In N \u0027"},{"line_number":42,"context_line":"                     \u0027release oslo.cache config options will control this\u0027))"},{"line_number":43,"context_line":"        if not CONF.memcached_servers:"},{"line_number":44,"context_line":"            raise RuntimeError(_(\u0027memcached_servers not defined\u0027))"},{"line_number":45,"context_line":"        # NOTE(pkholkin): passing \"url\" here is ok for Mitaka for"}],"source_content_type":"text/x-python","patch_set":36,"id":"3a29b11f_0357fcce","line":42,"updated":"2015-10-20 11:45:41.000000000","message":"ok, this was the bit that I was previously concerned we didn\u0027t have. \n\nHowever you need to specify what the better oslo.cache options are. Generically saying that oslo.cache will handle this isn\u0027t enough for someone to do this migration.","commit_id":"acbcd14563d658a5d11ae0f230072457050d2d58"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"64d322ef4510b253d750728027e7825f2b90d3a7","unresolved":false,"context_lines":[{"line_number":38,"context_line":"class MemcachedDriver(base.Driver):"},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"    def __init__(self, *args, **kwargs):"},{"line_number":41,"context_line":"        LOG.warn(_LW(\u0027\"memcached_servers\" opt is deprecated in Mitaka. In N \u0027"},{"line_number":42,"context_line":"                     \u0027release oslo.cache config options will control this. \u0027"},{"line_number":43,"context_line":"                     \u0027Instead of deprecated \"memcached_servers\" option \u0027"},{"line_number":44,"context_line":"                     \u0027will be used \"cache.memcache_servers\" option.\u0027))"}],"source_content_type":"text/x-python","patch_set":37,"id":"3a29b11f_693ed1b9","line":41,"updated":"2015-10-20 12:25:19.000000000","message":"How\u0027s this?\n\n    \u0027\"memcached_servers\" opt is deprecated in Mitaka. In N \u0027\n    \u0027release oslo.cache config options should be used. \u0027\n    \u0027Please add a [cache] group in your ini file and \u0027\n    \u0027add memcache_servers in that section.\u0027","commit_id":"7d85db61c95ca7696a5ddc99f92647fbe21f658c"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"b65761626f49f979d01643c2f62d5a0b7b69c833","unresolved":false,"context_lines":[{"line_number":49,"context_line":"        # configuration section in nova.conf"},{"line_number":50,"context_line":"        self.cache \u003d utils.get_oslo_cache_client("},{"line_number":51,"context_line":"            \u0027dogpile.cache.memcached\u0027, expiration_time\u003dCONF.service_down_time,"},{"line_number":52,"context_line":"            url\u003dCONF.memcached_servers)"},{"line_number":53,"context_line":""},{"line_number":54,"context_line":"    def join(self, member_id, group_id, service\u003dNone):"},{"line_number":55,"context_line":"        \"\"\"Join the given service with its group.\"\"\""}],"source_content_type":"text/x-python","patch_set":38,"id":"3a29b11f_2b02db3d","line":52,"updated":"2015-10-21 10:51:09.000000000","message":"This continues to not be deprecation. Once this patch lands the operator will get a warning. \n\nThey can\u0027t make the warning go away, because if they attempt to move to the new options, it will explode.","commit_id":"4f85aa97e97d6331b2016ddc3db0971dd56bb33d"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"43b315741f6a90538aeca2bd759d2f1af91ae618","unresolved":false,"context_lines":[{"line_number":44,"context_line":"                     \u0027add \"memcache_servers\" option in this section. If both \u0027"},{"line_number":45,"context_line":"                     \u0027options are set than \"memcached_servers\" opt will be \u0027"},{"line_number":46,"context_line":"                     \u0027used. If no options are set than default value \u0027"},{"line_number":47,"context_line":"                     \u0027\"localhost:11211\" from oslo.cache will be used.\u0027))"},{"line_number":48,"context_line":"        url \u003d CONF.memcached_servers or CONF.cache.memcache_servers"},{"line_number":49,"context_line":"        self.cache \u003d utils.get_oslo_cache_client("},{"line_number":50,"context_line":"            \u0027dogpile.cache.memcached\u0027, expiration_time\u003dCONF.service_down_time,"}],"source_content_type":"text/x-python","patch_set":40,"id":"3a29b11f_c2c301ec","line":47,"updated":"2015-10-21 13:08:56.000000000","message":"ok, I feel like this keeps kind of going in different directions that don\u0027t solve the issue.\n\nif CONF.memcached_servers:\n     LOG.warn(_LW(\u0027\"memcached_servers\" opt is deprecated in Mitaka. Please add a [cache] group in your nova.conf file and \u0027\n                     \u0027add \"memcache_servers\" option in this section.)\n\nif CONF.cache.memcached_servers and CONF.memcache_servers:\n     LOG.warn(_LW(\u0027\"both memcache_servers and [cache] memcache_servers defined. Using the value in [cache] memcache_servers\"\u0027))\n\nurl \u003d CONF.cache.memcache_servers or CONF.memcached_servers\n\nif not url:\n   raise RuntimeError(_(\u0027[cache] memcached_servers not defined\u0027))\n\nI guess my only question is how do we get this class instantiated in the first place? And if there is also logic there which is a problem.","commit_id":"ba3e99ac9ddf86766e973198d7db41fa8b42cf7e"}],"nova/tests/unit/consoleauth/test_consoleauth.py":[{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"b8a18c5a2fbf61dcb341c6b18b2c2ca35bf2420b","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                                      self.instance[\u0027uuid\u0027])"},{"line_number":53,"context_line":"        self.assertIsNotNone(manager_api.check_token(self.context, token))"},{"line_number":54,"context_line":"        timeutils.advance_time_seconds(1)"},{"line_number":55,"context_line":"        self.assertIsNone(manager_api.check_token(self.context, token))"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _stub_validate_console_port(self, result, manager_api\u003dNone):"},{"line_number":58,"context_line":"        def fake_validate_console_port(ctxt, instance, port, console_type):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_cda295ae","line":55,"updated":"2015-07-21 13:55:32.000000000","message":"shouldn\u0027t we use sentinel NO_VALUE here?","commit_id":"2300fae0878f694ec9b588c4e422915bbaf068bf"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"871f1a50238e7a676207c36f55578d5928687c1c","unresolved":false,"context_lines":[{"line_number":52,"context_line":"                                      self.instance[\u0027uuid\u0027])"},{"line_number":53,"context_line":"        self.assertIsNotNone(manager_api.check_token(self.context, token))"},{"line_number":54,"context_line":"        timeutils.advance_time_seconds(1)"},{"line_number":55,"context_line":"        self.assertIsNone(manager_api.check_token(self.context, token))"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def _stub_validate_console_port(self, result, manager_api\u003dNone):"},{"line_number":58,"context_line":"        def fake_validate_console_port(ctxt, instance, port, console_type):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_53e26a30","line":55,"in_reply_to":"3a50d1a3_cda295ae","updated":"2015-07-22 12:21:52.000000000","message":"No, this is correct.\n\nFunction check_token returns token if it is valid or None. So these asserts are ok.","commit_id":"2300fae0878f694ec9b588c4e422915bbaf068bf"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"b8a18c5a2fbf61dcb341c6b18b2c2ca35bf2420b","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.assertEqual(len(stored_tokens), 0)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        for token in tokens:"},{"line_number":94,"context_line":"            self.assertIsNone(self.manager_api.check_token("},{"line_number":95,"context_line":"                self.context, token))"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def test_wrong_token_has_port(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_4d976548","line":94,"updated":"2015-07-21 13:55:32.000000000","message":"ditto","commit_id":"2300fae0878f694ec9b588c4e422915bbaf068bf"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"871f1a50238e7a676207c36f55578d5928687c1c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.assertEqual(len(stored_tokens), 0)"},{"line_number":92,"context_line":""},{"line_number":93,"context_line":"        for token in tokens:"},{"line_number":94,"context_line":"            self.assertIsNone(self.manager_api.check_token("},{"line_number":95,"context_line":"                self.context, token))"},{"line_number":96,"context_line":""},{"line_number":97,"context_line":"    def test_wrong_token_has_port(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_b3c72e97","line":94,"in_reply_to":"3a50d1a3_4d976548","updated":"2015-07-22 12:21:52.000000000","message":"ditto","commit_id":"2300fae0878f694ec9b588c4e422915bbaf068bf"},{"author":{"_account_id":6849,"name":"Roman Podoliaka","email":"roman.podoliaka@gmail.com","username":"rpodolyaka"},"change_message_id":"b8a18c5a2fbf61dcb341c6b18b2c2ca35bf2420b","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                                      \u0027127.0.0.1\u0027, \u00278080\u0027, \u0027host\u0027,"},{"line_number":117,"context_line":"                                      self.instance[\u0027uuid\u0027])"},{"line_number":118,"context_line":"        timeutils.advance_time_seconds(1)"},{"line_number":119,"context_line":"        self.assertIsNone(manager_api.check_token(self.context, token))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        token1 \u003d u\u0027mytok2\u0027"},{"line_number":122,"context_line":"        manager_api.authorize_console(self.context, token1, \u0027novnc\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_ed8c3137","line":119,"updated":"2015-07-21 13:55:32.000000000","message":"ditto","commit_id":"2300fae0878f694ec9b588c4e422915bbaf068bf"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"871f1a50238e7a676207c36f55578d5928687c1c","unresolved":false,"context_lines":[{"line_number":116,"context_line":"                                      \u0027127.0.0.1\u0027, \u00278080\u0027, \u0027host\u0027,"},{"line_number":117,"context_line":"                                      self.instance[\u0027uuid\u0027])"},{"line_number":118,"context_line":"        timeutils.advance_time_seconds(1)"},{"line_number":119,"context_line":"        self.assertIsNone(manager_api.check_token(self.context, token))"},{"line_number":120,"context_line":""},{"line_number":121,"context_line":"        token1 \u003d u\u0027mytok2\u0027"},{"line_number":122,"context_line":"        manager_api.authorize_console(self.context, token1, \u0027novnc\u0027,"}],"source_content_type":"text/x-python","patch_set":2,"id":"3a50d1a3_d3cc3abd","line":119,"in_reply_to":"3a50d1a3_ed8c3137","updated":"2015-07-22 12:21:52.000000000","message":"ditto","commit_id":"2300fae0878f694ec9b588c4e422915bbaf068bf"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"959a94e3dbc8f5d7de7305c6defe983c73ffc520","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova import context"},{"line_number":27,"context_line":"from nova import db"},{"line_number":28,"context_line":"from nova import test"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"NO_VALUE \u003d cache.NO_VALUE"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_192fcba2","line":29,"updated":"2015-08-26 16:15:11.000000000","message":"(nit) newline","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from nova import context"},{"line_number":27,"context_line":"from nova import db"},{"line_number":28,"context_line":"from nova import test"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"NO_VALUE \u003d cache.NO_VALUE"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_d0c0d9e2","line":29,"in_reply_to":"da20952f_192fcba2","updated":"2015-08-28 12:09:47.000000000","message":"Done","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"}],"nova/tests/unit/servicegroup/test_mc_servicegroup.py":[{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"959a94e3dbc8f5d7de7305c6defe983c73ffc520","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import oslo_cache.core as cache"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nova import servicegroup"},{"line_number":23,"context_line":"from nova import test"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_d930730a","line":20,"updated":"2015-08-26 16:15:11.000000000","message":"Should this be in the section with mock since they are both third-party libs?","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import mock"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import oslo_cache.core as cache"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nova import servicegroup"},{"line_number":23,"context_line":"from nova import test"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_b04be586","line":20,"in_reply_to":"da20952f_d930730a","updated":"2015-08-28 12:09:47.000000000","message":"Done","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"959a94e3dbc8f5d7de7305c6defe983c73ffc520","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nova import servicegroup"},{"line_number":23,"context_line":"from nova import test"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"NO_VALUE \u003d cache.NO_VALUE"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_993afbe6","line":24,"updated":"2015-08-26 16:15:11.000000000","message":"(nit) newline","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from nova import servicegroup"},{"line_number":23,"context_line":"from nova import test"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"NO_VALUE \u003d cache.NO_VALUE"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_70454d6e","line":24,"in_reply_to":"da20952f_993afbe6","updated":"2015-08-28 12:09:47.000000000","message":"Done","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"89dfe347a1a429385e260d9d3a75b5cdc5619fe8","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova import servicegroup"},{"line_number":23,"context_line":"from nova import test"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"NO_VALUE \u003d cache.NO_VALUE"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class MemcachedServiceGroupTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_5cf9b1c7","line":25,"updated":"2015-08-26 16:08:08.000000000","message":"I agree with other commenters that defining this is not an improvement over using cache.NO_VALUE.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":22,"context_line":"from nova import servicegroup"},{"line_number":23,"context_line":"from nova import test"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":"NO_VALUE \u003d cache.NO_VALUE"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"class MemcachedServiceGroupTestCase(test.NoDBTestCase):"}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_90482189","line":25,"in_reply_to":"da20952f_5cf9b1c7","updated":"2015-08-28 12:09:47.000000000","message":"Done","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"}],"nova/utils.py":[{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6ec187501bb9062f1ae144f4e3dc5cef94ac1d6d","unresolved":false,"context_lines":[{"line_number":1369,"context_line":""},{"line_number":1370,"context_line":"def get_oslo_cache_client(backend\u003dNone, expiration_time\u003dNone):"},{"line_number":1371,"context_line":"    CONF.set_default(\u0027backend\u0027, \u0027oslo_cache.dict\u0027, group\u003d\u0027cache\u0027)"},{"line_number":1372,"context_line":"    CONF.set_default(\u0027expiration_time\u0027, 0, group\u003d\u0027cache\u0027)"},{"line_number":1373,"context_line":""},{"line_number":1374,"context_line":"    if not backend:"},{"line_number":1375,"context_line":"        backend \u003d CONF.cache.backend"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_5c308d9e","line":1372,"updated":"2015-08-18 15:07:19.000000000","message":"This defaults to 600 in oslo.cache:\n\nhttps://github.com/openstack/oslo.cache/blob/master/oslo_cache/_opts.py#L25\n\nWhy are we setting it to 0 here?  Backwards compatibility with memorycache in oslo-incubator?","commit_id":"58baf63285dc3484d9785f1dc12fd5e1cc0cf598"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"aeeffc36fe01a4cd0115d7e708804aec1bdf4970","unresolved":false,"context_lines":[{"line_number":1369,"context_line":""},{"line_number":1370,"context_line":"def get_oslo_cache_client(backend\u003dNone, expiration_time\u003dNone):"},{"line_number":1371,"context_line":"    CONF.set_default(\u0027backend\u0027, \u0027oslo_cache.dict\u0027, group\u003d\u0027cache\u0027)"},{"line_number":1372,"context_line":"    CONF.set_default(\u0027expiration_time\u0027, 0, group\u003d\u0027cache\u0027)"},{"line_number":1373,"context_line":""},{"line_number":1374,"context_line":"    if not backend:"},{"line_number":1375,"context_line":"        backend \u003d CONF.cache.backend"}],"source_content_type":"text/x-python","patch_set":6,"id":"fa1b9901_49ea0a11","line":1372,"in_reply_to":"fa1b9901_5c308d9e","updated":"2015-08-18 15:35:35.000000000","message":"Yes, it is backwards compatibility. Default expiration time for memorycache was 0","commit_id":"58baf63285dc3484d9785f1dc12fd5e1cc0cf598"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"214053b6e5d9a78ccf6b9b1a3ca57986aa9d705a","unresolved":false,"context_lines":[{"line_number":1399,"context_line":"    :param kwargs: backend initial parameters"},{"line_number":1400,"context_line":"    \"\"\""},{"line_number":1401,"context_line":""},{"line_number":1402,"context_line":"    CONF.set_default(\u0027backend\u0027, \u0027oslo_cache.dict\u0027, group\u003d\u0027cache\u0027)"},{"line_number":1403,"context_line":"    CONF.set_default(\u0027expiration_time\u0027, 0, group\u003d\u0027cache\u0027)"},{"line_number":1404,"context_line":""},{"line_number":1405,"context_line":"    if not backend:"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_7a6ac782","line":1402,"updated":"2015-08-20 11:53:25.000000000","message":"snikitin, not really happy about having to do the set_default, can you please ping the oslo.cache folks for a better way to do this?","commit_id":"58a06f24c02078b7f43ccbcb077ab2f93c7db031"},{"author":{"_account_id":2472,"name":"Doug Hellmann","email":"dhellmann@redhat.com","username":"doug-hellmann"},"change_message_id":"95bf14f24a7305fedf02ae0f949cd241a758cc70","unresolved":false,"context_lines":[{"line_number":1399,"context_line":"    :param kwargs: backend initial parameters"},{"line_number":1400,"context_line":"    \"\"\""},{"line_number":1401,"context_line":""},{"line_number":1402,"context_line":"    CONF.set_default(\u0027backend\u0027, \u0027oslo_cache.dict\u0027, group\u003d\u0027cache\u0027)"},{"line_number":1403,"context_line":"    CONF.set_default(\u0027expiration_time\u0027, 0, group\u003d\u0027cache\u0027)"},{"line_number":1404,"context_line":""},{"line_number":1405,"context_line":"    if not backend:"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_68db4f1c","line":1402,"in_reply_to":"fa1b9901_656cd89c","updated":"2015-08-24 12:44:55.000000000","message":"Isn\u0027t this what configure_cache_region() is for? I don\u0027t see that function being called here at all, but maybe some of the logic for setting the backend default should move there so it is possible for the app to pass a desired default backend.","commit_id":"58a06f24c02078b7f43ccbcb077ab2f93c7db031"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"99e016fc4f410e5b2c27698c14e67c0eb6808f64","unresolved":false,"context_lines":[{"line_number":1399,"context_line":"    :param kwargs: backend initial parameters"},{"line_number":1400,"context_line":"    \"\"\""},{"line_number":1401,"context_line":""},{"line_number":1402,"context_line":"    CONF.set_default(\u0027backend\u0027, \u0027oslo_cache.dict\u0027, group\u003d\u0027cache\u0027)"},{"line_number":1403,"context_line":"    CONF.set_default(\u0027expiration_time\u0027, 0, group\u003d\u0027cache\u0027)"},{"line_number":1404,"context_line":""},{"line_number":1405,"context_line":"    if not backend:"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_abb0818c","line":1402,"in_reply_to":"fa1b9901_68db4f1c","updated":"2015-08-24 13:11:44.000000000","message":"Sergey, how about you take a look at configure_cache_region and if that\u0027s not sufficent submit a change against oslo.cache for a better way to do what you need?\n\nthanks,\ndims","commit_id":"58a06f24c02078b7f43ccbcb077ab2f93c7db031"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"a768981dfe43703aa4f55cedb4ba069d568dc53b","unresolved":false,"context_lines":[{"line_number":1399,"context_line":"    :param kwargs: backend initial parameters"},{"line_number":1400,"context_line":"    \"\"\""},{"line_number":1401,"context_line":""},{"line_number":1402,"context_line":"    CONF.set_default(\u0027backend\u0027, \u0027oslo_cache.dict\u0027, group\u003d\u0027cache\u0027)"},{"line_number":1403,"context_line":"    CONF.set_default(\u0027expiration_time\u0027, 0, group\u003d\u0027cache\u0027)"},{"line_number":1404,"context_line":""},{"line_number":1405,"context_line":"    if not backend:"}],"source_content_type":"text/x-python","patch_set":11,"id":"fa1b9901_656cd89c","line":1402,"in_reply_to":"fa1b9901_7a6ac782","updated":"2015-08-24 12:16:24.000000000","message":"Ok. Pavel pinged guys, but they keep silence :(","commit_id":"58a06f24c02078b7f43ccbcb077ab2f93c7db031"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"01f4e85c6ebdeb1aa08ad72b452fc4aecea4cc07","unresolved":false,"context_lines":[{"line_number":86,"context_line":"]"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"memcache_opts \u003d ["},{"line_number":89,"context_line":"    cfg.ListOpt(\u0027memcached_servers\u0027,"},{"line_number":90,"context_line":"                help\u003d\u0027Memcached servers or None for in process cache.\u0027),"},{"line_number":91,"context_line":"]"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_5f3abc99","line":89,"updated":"2015-08-24 15:06:24.000000000","message":"We should mark this as deprecated in Liberty and let oslo.cache config options control this for Mitaka release","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"3202572ce94451a0a59f003110d9e50031e9eabd","unresolved":false,"context_lines":[{"line_number":86,"context_line":"]"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"memcache_opts \u003d ["},{"line_number":89,"context_line":"    cfg.ListOpt(\u0027memcached_servers\u0027,"},{"line_number":90,"context_line":"                help\u003d\u0027Memcached servers or None for in process cache.\u0027),"},{"line_number":91,"context_line":"]"},{"line_number":92,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_b0aa2284","line":89,"in_reply_to":"fa1b9901_5f3abc99","updated":"2015-08-24 17:10:45.000000000","message":"Done","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"87a0585087bebe6963b25d4f53545554eb574f79","unresolved":false,"context_lines":[{"line_number":156,"context_line":"CONF.register_opts(memcache_opts)"},{"line_number":157,"context_line":"CONF.register_opts(workarounds_opts, group\u003d\u0027workarounds\u0027)"},{"line_number":158,"context_line":""},{"line_number":159,"context_line":"cache.configure(CONF)"},{"line_number":160,"context_line":""},{"line_number":161,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":162,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_7fe78040","line":159,"updated":"2015-08-24 15:01:01.000000000","message":"This is still needed for registering oslo.cache backends","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":5638,"name":"Davanum Srinivas","email":"davanum@gmail.com","username":"dims-v"},"change_message_id":"01f4e85c6ebdeb1aa08ad72b452fc4aecea4cc07","unresolved":false,"context_lines":[{"line_number":1404,"context_line":"    region_params \u003d {}"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    if backend \u003d\u003d \u0027oslo_cache.dict\u0027:"},{"line_number":1407,"context_line":"        region_params[\u0027arguments\u0027] \u003d {\u0027expiration_time\u0027: expiration_time}"},{"line_number":1408,"context_line":"    elif backend \u003d\u003d \u0027dogpile.cache.memcached\u0027:"},{"line_number":1409,"context_line":"        region_params[\u0027expiration_time\u0027] \u003d expiration_time"},{"line_number":1410,"context_line":"        region_params[\u0027arguments\u0027] \u003d {\u0027url\u0027: kwargs[\u0027url\u0027]}"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_dff48cd0","line":1407,"updated":"2015-08-24 15:06:24.000000000","message":"Why is expiration_time in arguments dict here for this backend and is NOT in the arguments bag in the dogpile.cache.memcached backend? is this something to be fixed in oslo.cache?","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"3202572ce94451a0a59f003110d9e50031e9eabd","unresolved":false,"context_lines":[{"line_number":1404,"context_line":"    region_params \u003d {}"},{"line_number":1405,"context_line":""},{"line_number":1406,"context_line":"    if backend \u003d\u003d \u0027oslo_cache.dict\u0027:"},{"line_number":1407,"context_line":"        region_params[\u0027arguments\u0027] \u003d {\u0027expiration_time\u0027: expiration_time}"},{"line_number":1408,"context_line":"    elif backend \u003d\u003d \u0027dogpile.cache.memcached\u0027:"},{"line_number":1409,"context_line":"        region_params[\u0027expiration_time\u0027] \u003d expiration_time"},{"line_number":1410,"context_line":"        region_params[\u0027arguments\u0027] \u003d {\u0027url\u0027: kwargs[\u0027url\u0027]}"}],"source_content_type":"text/x-python","patch_set":13,"id":"fa1b9901_f0041ac7","line":1407,"in_reply_to":"fa1b9901_dff48cd0","updated":"2015-08-24 17:10:45.000000000","message":"expiration_time is in arguments dict because it is passed to init function of oslo_cache.dict backend\n\nhttps://github.com/openstack/oslo.cache/blob/master/oslo_cache/backends/dictionary.py#L40-L41","commit_id":"9125339ad68d36a7320af4276102a6c2c75bde5e"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"a8258dab4b310011ac9724093655eba0a31322f5","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    # \u0027memcached_servers\u0027 opt was taken from oslo_incubator and it can be used"},{"line_number":105,"context_line":"    # in other projects. So to escape collisions we shouldn\u0027t change \u0027help\u0027."},{"line_number":106,"context_line":"    # It should be fixed in next release."},{"line_number":107,"context_line":"    cfg.ListOpt(\u0027memcached_servers\u0027,"},{"line_number":108,"context_line":"                help\u003d\u0027Memcached servers or None for in process cache.\u0027),"},{"line_number":109,"context_line":"]"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_d9bb9374","line":107,"updated":"2015-08-26 15:58:05.000000000","message":"We can\u0027t marked this as deprecated using the deprecated_for_removal\u003dTrue kwarg?","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    # \u0027memcached_servers\u0027 opt was taken from oslo_incubator and it can be used"},{"line_number":105,"context_line":"    # in other projects. So to escape collisions we shouldn\u0027t change \u0027help\u0027."},{"line_number":106,"context_line":"    # It should be fixed in next release."},{"line_number":107,"context_line":"    cfg.ListOpt(\u0027memcached_servers\u0027,"},{"line_number":108,"context_line":"                help\u003d\u0027Memcached servers or None for in process cache.\u0027),"},{"line_number":109,"context_line":"]"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_903fc1d5","line":107,"in_reply_to":"da20952f_d9bb9374","updated":"2015-08-28 12:09:47.000000000","message":"Done","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"89dfe347a1a429385e260d9d3a75b5cdc5619fe8","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    # \u0027memcached_servers\u0027 opt was taken from oslo_incubator and it can be used"},{"line_number":105,"context_line":"    # in other projects. So to escape collisions we shouldn\u0027t change \u0027help\u0027."},{"line_number":106,"context_line":"    # It should be fixed in next release."},{"line_number":107,"context_line":"    cfg.ListOpt(\u0027memcached_servers\u0027,"},{"line_number":108,"context_line":"                help\u003d\u0027Memcached servers or None for in process cache.\u0027),"},{"line_number":109,"context_line":"]"},{"line_number":110,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_fc8c4537","line":107,"in_reply_to":"da20952f_d9bb9374","updated":"2015-08-26 16:08:08.000000000","message":"In several cases we\u0027ve added the deprecated names to the library (e.g., add it to oslo.cache instead of doing it here).","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"959a94e3dbc8f5d7de7305c6defe983c73ffc520","unresolved":false,"context_lines":[{"line_number":1536,"context_line":"        del _FILE_CACHE[filename]"},{"line_number":1537,"context_line":""},{"line_number":1538,"context_line":""},{"line_number":1539,"context_line":"def get_oslo_cache_client(backend\u003d\u0027oslo_cache.dict\u0027, expiration_time\u003d0,"},{"line_number":1540,"context_line":"                          **kwargs):"},{"line_number":1541,"context_line":"    \"\"\"Create instance of oslo_cache client."},{"line_number":1542,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_39172fef","line":1539,"updated":"2015-08-26 16:15:11.000000000","message":"default is to cache forever?","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"89dfe347a1a429385e260d9d3a75b5cdc5619fe8","unresolved":false,"context_lines":[{"line_number":1536,"context_line":"        del _FILE_CACHE[filename]"},{"line_number":1537,"context_line":""},{"line_number":1538,"context_line":""},{"line_number":1539,"context_line":"def get_oslo_cache_client(backend\u003d\u0027oslo_cache.dict\u0027, expiration_time\u003d0,"},{"line_number":1540,"context_line":"                          **kwargs):"},{"line_number":1541,"context_line":"    \"\"\"Create instance of oslo_cache client."},{"line_number":1542,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_fce1a5d1","line":1539,"updated":"2015-08-26 16:08:08.000000000","message":"suggest call this create to that it\u0027s obvious that it\u0027s more heavyweight than a simple getter.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"4bb029067b55371003f58e9afc7acca1ce35419a","unresolved":false,"context_lines":[{"line_number":1536,"context_line":"        del _FILE_CACHE[filename]"},{"line_number":1537,"context_line":""},{"line_number":1538,"context_line":""},{"line_number":1539,"context_line":"def get_oslo_cache_client(backend\u003d\u0027oslo_cache.dict\u0027, expiration_time\u003d0,"},{"line_number":1540,"context_line":"                          **kwargs):"},{"line_number":1541,"context_line":"    \"\"\"Create instance of oslo_cache client."},{"line_number":1542,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_40965bf1","line":1539,"in_reply_to":"da20952f_096d1e04","updated":"2015-08-27 19:22:29.000000000","message":"Hmm, so maybe we should set the default experation_time based on the backend used, so dict would be 0, memcached would be something else, etc.  The arg could be None or some sentinel which tells us to check our default map per the backend.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"d127a2f1dc517339e884fb58db429860c3c3672f","unresolved":false,"context_lines":[{"line_number":1536,"context_line":"        del _FILE_CACHE[filename]"},{"line_number":1537,"context_line":""},{"line_number":1538,"context_line":""},{"line_number":1539,"context_line":"def get_oslo_cache_client(backend\u003d\u0027oslo_cache.dict\u0027, expiration_time\u003d0,"},{"line_number":1540,"context_line":"                          **kwargs):"},{"line_number":1541,"context_line":"    \"\"\"Create instance of oslo_cache client."},{"line_number":1542,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_c2163855","line":1539,"in_reply_to":"da20952f_39172fef","updated":"2015-08-26 16:43:03.000000000","message":"That\u0027s probably because of the default in oslo-incubator with the dict cache is no timeout:\n\nhttp://git.openstack.org/cgit/openstack/oslo-incubator/tree/openstack/common/memorycache.py#n71\n\nSo to keep this backwards compatible with oslo-incubator I agree with expiration defaulting to 0.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":1536,"context_line":"        del _FILE_CACHE[filename]"},{"line_number":1537,"context_line":""},{"line_number":1538,"context_line":""},{"line_number":1539,"context_line":"def get_oslo_cache_client(backend\u003d\u0027oslo_cache.dict\u0027, expiration_time\u003d0,"},{"line_number":1540,"context_line":"                          **kwargs):"},{"line_number":1541,"context_line":"    \"\"\"Create instance of oslo_cache client."},{"line_number":1542,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_ab7a94ef","line":1539,"in_reply_to":"da20952f_40965bf1","updated":"2015-08-28 12:09:47.000000000","message":"We decided to set default expiration_time to WEEK to escape some memory limit excess.\n\nIn M release we will improve this method using oslo_cache opts (like backend and expiration_time)","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":7725,"name":"David Stanek","email":"dstanek@dstanek.com","username":"dstanek"},"change_message_id":"9f196f6bdf2506e7a46a86e8cc2fe80f1a61bb56","unresolved":false,"context_lines":[{"line_number":1536,"context_line":"        del _FILE_CACHE[filename]"},{"line_number":1537,"context_line":""},{"line_number":1538,"context_line":""},{"line_number":1539,"context_line":"def get_oslo_cache_client(backend\u003d\u0027oslo_cache.dict\u0027, expiration_time\u003d0,"},{"line_number":1540,"context_line":"                          **kwargs):"},{"line_number":1541,"context_line":"    \"\"\"Create instance of oslo_cache client."},{"line_number":1542,"context_line":""}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_096d1e04","line":1539,"in_reply_to":"da20952f_c2163855","updated":"2015-08-27 03:00:43.000000000","message":"That\u0027s fine as long as we are consciously making that decision. The danger is that if you are using memcached then you have to restart that to clear the cache instead of nova daemons.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":16839,"name":"Cale Rath","email":"ctrath@us.ibm.com","username":"ctrath"},"change_message_id":"49c2dcc3759dbdadcff9d399596a1e620a6440d3","unresolved":false,"context_lines":[{"line_number":1539,"context_line":"def get_oslo_cache_client(backend\u003d\u0027oslo_cache.dict\u0027, expiration_time\u003d0,"},{"line_number":1540,"context_line":"                          **kwargs):"},{"line_number":1541,"context_line":"    \"\"\"Create instance of oslo_cache client."},{"line_number":1542,"context_line":""},{"line_number":1543,"context_line":"    Every backend needs for specific parameters. If backend is not"},{"line_number":1544,"context_line":"    \u0027oslo_cache.dict\u0027 or \u0027dogpile.cache.memcached\u0027, you can pass initial"},{"line_number":1545,"context_line":"    parameters of backend by kwargs."}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_2d6285d9","line":1542,"updated":"2015-08-26 16:52:40.000000000","message":"Can you please fix this sentence?  The current wording doesn\u0027t make sense to me.","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"de96831ba8f3b7e8234ed0f8dd2b1cdd4dd31a96","unresolved":false,"context_lines":[{"line_number":1539,"context_line":"def get_oslo_cache_client(backend\u003d\u0027oslo_cache.dict\u0027, expiration_time\u003d0,"},{"line_number":1540,"context_line":"                          **kwargs):"},{"line_number":1541,"context_line":"    \"\"\"Create instance of oslo_cache client."},{"line_number":1542,"context_line":""},{"line_number":1543,"context_line":"    Every backend needs for specific parameters. If backend is not"},{"line_number":1544,"context_line":"    \u0027oslo_cache.dict\u0027 or \u0027dogpile.cache.memcached\u0027, you can pass initial"},{"line_number":1545,"context_line":"    parameters of backend by kwargs."}],"source_content_type":"text/x-python","patch_set":17,"id":"da20952f_ab19348a","line":1542,"in_reply_to":"da20952f_2d6285d9","updated":"2015-08-28 12:09:47.000000000","message":"Done","commit_id":"8b91b5160c9dbc7d5811fa492bb86e185a7e7e84"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"155cbc9f449fc3ad71e7a6a51c7af9fdbb4dfd1f","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    # corresponding option taken from oslo_incubator."},{"line_number":105,"context_line":"    # This collision will be fixed in N release."},{"line_number":106,"context_line":"    cfg.ListOpt(\u0027memcached_servers\u0027,"},{"line_number":107,"context_line":"                help\u003d\u0027Memcached servers or None for in process cache.\u0027),"},{"line_number":108,"context_line":"]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"workarounds_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":30,"id":"7a2fa921_d847b475","line":107,"updated":"2015-10-07 11:38:00.000000000","message":"this bit seems really problematic, because what you are saying is we have to deprecate this, except we can\u0027t until N, when it is going to be removed, which breaks deprecation cycle.\n\nI think we need a better story here before merging this.","commit_id":"c85b978c6ad28f18a99f9a5bc9e527082f85264f"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"6815c833d4c3b5e9cbf982bd04f6c1d5ff6e5570","unresolved":false,"context_lines":[{"line_number":94,"context_line":"]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"memcached_opts \u003d ["},{"line_number":97,"context_line":"    # TODO(snikitin): This opt was moved from openstack/common/memorycache.py."},{"line_number":98,"context_line":"    # This opt must be deprecated in Mitaka because in N release"},{"line_number":99,"context_line":"    # oslo.cache config options will control this. But we can\u0027t mark it"},{"line_number":100,"context_line":"    # as deprecated by changing \u0027help\u0027 argument or adding option"}],"source_content_type":"text/x-python","patch_set":31,"id":"5a2ca52d_1a8a22c0","line":97,"updated":"2015-10-16 06:27:12.000000000","message":"s/was moved/was removed/?","commit_id":"fbb498768e99b48fe4cdccb1e218cf1ad7b4a5e8"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"4e9c849716b979e46a07c442d1559f828fafa84c","unresolved":false,"context_lines":[{"line_number":94,"context_line":"]"},{"line_number":95,"context_line":""},{"line_number":96,"context_line":"memcached_opts \u003d ["},{"line_number":97,"context_line":"    # TODO(snikitin): This opt was moved from openstack/common/memorycache.py."},{"line_number":98,"context_line":"    # This opt must be deprecated in Mitaka because in N release"},{"line_number":99,"context_line":"    # oslo.cache config options will control this. But we can\u0027t mark it"},{"line_number":100,"context_line":"    # as deprecated by changing \u0027help\u0027 argument or adding option"}],"source_content_type":"text/x-python","patch_set":31,"id":"5a2ca52d_6b49935f","line":97,"in_reply_to":"5a2ca52d_1a8a22c0","updated":"2015-10-16 14:16:59.000000000","message":"moved is ok here (it is from other file)","commit_id":"fbb498768e99b48fe4cdccb1e218cf1ad7b4a5e8"},{"author":{"_account_id":5754,"name":"Alex Xu","email":"hejie.xu@intel.com","username":"xuhj"},"change_message_id":"6815c833d4c3b5e9cbf982bd04f6c1d5ff6e5570","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    # corresponding option taken from oslo_incubator."},{"line_number":105,"context_line":"    # This collision will be fixed in N release."},{"line_number":106,"context_line":"    cfg.ListOpt(\u0027memcached_servers\u0027,"},{"line_number":107,"context_line":"                help\u003d\u0027Memcached servers or None for in process cache.\u0027),"},{"line_number":108,"context_line":"]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"workarounds_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":31,"id":"5a2ca52d_09a83d8c","line":107,"updated":"2015-10-16 06:27:12.000000000","message":"Emm....maybe I asked stupid question. As my understand, \u0027deprecated\u0027 means this option still works, but will removed in next release. But looks like this option isn\u0027t used by anywhere anymore.","commit_id":"fbb498768e99b48fe4cdccb1e218cf1ad7b4a5e8"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"ec49728a4285bbe8b97c53332f132809f1076012","unresolved":false,"context_lines":[{"line_number":104,"context_line":"    # corresponding option taken from oslo_incubator."},{"line_number":105,"context_line":"    # This collision will be fixed in N release."},{"line_number":106,"context_line":"    cfg.ListOpt(\u0027memcached_servers\u0027,"},{"line_number":107,"context_line":"                help\u003d\u0027Memcached servers or None for in process cache.\u0027),"},{"line_number":108,"context_line":"]"},{"line_number":109,"context_line":""},{"line_number":110,"context_line":"workarounds_opts \u003d ["}],"source_content_type":"text/x-python","patch_set":31,"id":"5a2ca52d_8c677be8","line":107,"in_reply_to":"5a2ca52d_09a83d8c","updated":"2015-10-16 07:01:26.000000000","message":"Hi Alex! it used here https://review.openstack.org/#/c/203049/31/nova/servicegroup/drivers/mc.py","commit_id":"fbb498768e99b48fe4cdccb1e218cf1ad7b4a5e8"}],"requirements.txt":[{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"18bc948c2858b3b128a0834a4d3d500b8d437a42","unresolved":false,"context_lines":[{"line_number":34,"context_line":"stevedore\u003e\u003d1.5.0 # Apache-2.0"},{"line_number":35,"context_line":"setuptools"},{"line_number":36,"context_line":"websockify\u003e\u003d0.6.0"},{"line_number":37,"context_line":"oslo.cache\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":38,"context_line":"oslo.concurrency\u003e\u003d2.3.0 # Apache-2.0"},{"line_number":39,"context_line":"oslo.config\u003e\u003d1.11.0 # Apache-2.0"},{"line_number":40,"context_line":"oslo.context\u003e\u003d0.2.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":5,"id":"1a4dcd0f_444b24b1","line":37,"updated":"2015-08-03 14:30:14.000000000","message":"check out global requirements: https://review.openstack.org/#/c/203049/5/requirements.txt\nIt seems that you need to upgrade that","commit_id":"967df596885b8408061bd96436ab6458468b7d1d"},{"author":{"_account_id":10618,"name":"Pavel Kholkin","email":"p.v.holkin@mail.ru","username":"pkholkin"},"change_message_id":"8f323ec430425f1dd20f522eb261c05dc52d9a2c","unresolved":false,"context_lines":[{"line_number":34,"context_line":"stevedore\u003e\u003d1.5.0 # Apache-2.0"},{"line_number":35,"context_line":"setuptools"},{"line_number":36,"context_line":"websockify\u003e\u003d0.6.0"},{"line_number":37,"context_line":"oslo.cache\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":38,"context_line":"oslo.concurrency\u003e\u003d2.3.0 # Apache-2.0"},{"line_number":39,"context_line":"oslo.config\u003e\u003d1.11.0 # Apache-2.0"},{"line_number":40,"context_line":"oslo.context\u003e\u003d0.2.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":5,"id":"1a4dcd0f_84092c34","line":37,"in_reply_to":"1a4dcd0f_04c19ce4","updated":"2015-08-03 14:32:30.000000000","message":"corresponding patch is already on review https://review.openstack.org/#/c/206509/","commit_id":"967df596885b8408061bd96436ab6458468b7d1d"},{"author":{"_account_id":14819,"name":"Timofey Durakov","email":"timofei.nd@gmail.com","username":"tdurakov"},"change_message_id":"062420e2da561a20e40a43ce5c22afe430c5844d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"stevedore\u003e\u003d1.5.0 # Apache-2.0"},{"line_number":35,"context_line":"setuptools"},{"line_number":36,"context_line":"websockify\u003e\u003d0.6.0"},{"line_number":37,"context_line":"oslo.cache\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":38,"context_line":"oslo.concurrency\u003e\u003d2.3.0 # Apache-2.0"},{"line_number":39,"context_line":"oslo.config\u003e\u003d1.11.0 # Apache-2.0"},{"line_number":40,"context_line":"oslo.context\u003e\u003d0.2.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":5,"id":"1a4dcd0f_04c19ce4","line":37,"in_reply_to":"1a4dcd0f_444b24b1","updated":"2015-08-03 14:31:22.000000000","message":"sorry, wrong link https://github.com/openstack/requirements/blob/master/global-requirements.txt#L75","commit_id":"967df596885b8408061bd96436ab6458468b7d1d"},{"author":{"_account_id":6873,"name":"Matt Riedemann","email":"mriedem.os@gmail.com","username":"mriedem"},"change_message_id":"6ec187501bb9062f1ae144f4e3dc5cef94ac1d6d","unresolved":false,"context_lines":[{"line_number":34,"context_line":"stevedore\u003e\u003d1.5.0 # Apache-2.0"},{"line_number":35,"context_line":"setuptools"},{"line_number":36,"context_line":"websockify\u003e\u003d0.6.0"},{"line_number":37,"context_line":"oslo.cache\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":38,"context_line":"oslo.concurrency\u003e\u003d2.3.0 # Apache-2.0"},{"line_number":39,"context_line":"oslo.config\u003e\u003d1.11.0 # Apache-2.0"},{"line_number":40,"context_line":"oslo.context\u003e\u003d0.2.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":6,"id":"fa1b9901_bc6e892d","line":37,"updated":"2015-08-18 15:07:19.000000000","message":"Since oslo.cache requires oslo.config, oslo.i18n, oslo.utils and oslo.log:\n\nhttps://github.com/openstack/oslo.cache/blob/master/requirements.txt\n\nThe paranoid side of me that\u0027s dealt with too many gate wedges due to uncapped library issues, I feel like the oslo.cache entry here should come after it\u0027s transitive deps (config, i18n, utils, log) so those are processed first in case they are capped here in nova but not in oslo.cache.","commit_id":"58baf63285dc3484d9785f1dc12fd5e1cc0cf598"},{"author":{"_account_id":9569,"name":"Sergey Nikitin","email":"nikitinserv@gmail.com","username":"snikitin"},"change_message_id":"aeeffc36fe01a4cd0115d7e708804aec1bdf4970","unresolved":false,"context_lines":[{"line_number":34,"context_line":"stevedore\u003e\u003d1.5.0 # Apache-2.0"},{"line_number":35,"context_line":"setuptools"},{"line_number":36,"context_line":"websockify\u003e\u003d0.6.0"},{"line_number":37,"context_line":"oslo.cache\u003e\u003d0.4.0 # Apache-2.0"},{"line_number":38,"context_line":"oslo.concurrency\u003e\u003d2.3.0 # Apache-2.0"},{"line_number":39,"context_line":"oslo.config\u003e\u003d1.11.0 # Apache-2.0"},{"line_number":40,"context_line":"oslo.context\u003e\u003d0.2.0 # Apache-2.0"}],"source_content_type":"text/plain","patch_set":6,"id":"fa1b9901_09f412f0","line":37,"in_reply_to":"fa1b9901_bc6e892d","updated":"2015-08-18 15:35:35.000000000","message":"ok","commit_id":"58baf63285dc3484d9785f1dc12fd5e1cc0cf598"}]}
