)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":34,"context_line":"the entire plugin machinery, need some tweaking to avoid stumbling"},{"line_number":35,"context_line":"into plugin loading failures."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Due to the massive use of the manager, deprecation warnings are"},{"line_number":38,"context_line":"considered impractical as they cause logs to bloat out of proportion."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Follow-up patches that show how to adopt the directory in neutron"},{"line_number":41,"context_line":"subprojects are tagged with topic:plugin-directory."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"7a77a97e_d783ba02","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":69},"updated":"2016-11-16 16:39:00.000000000","message":"if that\u0027s the only reason, just make it log once.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":34,"context_line":"the entire plugin machinery, need some tweaking to avoid stumbling"},{"line_number":35,"context_line":"into plugin loading failures."},{"line_number":36,"context_line":""},{"line_number":37,"context_line":"Due to the massive use of the manager, deprecation warnings are"},{"line_number":38,"context_line":"considered impractical as they cause logs to bloat out of proportion."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Follow-up patches that show how to adopt the directory in neutron"},{"line_number":41,"context_line":"subprojects are tagged with topic:plugin-directory."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"7a77a97e_2e1c9011","line":38,"range":{"start_line":37,"start_character":0,"end_line":38,"end_character":69},"in_reply_to":"7a77a97e_d783ba02","updated":"2016-11-16 17:44:18.000000000","message":"yet another reason why it would go even more ignored.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Due to the massive use of the manager, deprecation warnings are"},{"line_number":38,"context_line":"considered impractical as they cause logs to bloat out of proportion."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Follow-up patches that show how to adopt the directory in neutron"},{"line_number":41,"context_line":"subprojects are tagged with topic:plugin-directory."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Partially-implements: blueprint neutron-lib"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"7a77a97e_57f40a85","line":41,"range":{"start_line":40,"start_character":0,"end_line":41,"end_character":51},"updated":"2016-11-16 16:39:00.000000000","message":"I don\u0027t think the way you handle the chains of patches for the reviews in the topic makes sense. Can\u0027t we land them independent of this neutron patch? Or am I missing something that requires neutron patch to land first? If so, maybe we are doing something wrong, because neutron-lib feature should be usable independently from neutron change.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Due to the massive use of the manager, deprecation warnings are"},{"line_number":38,"context_line":"considered impractical as they cause logs to bloat out of proportion."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Follow-up patches that show how to adopt the directory in neutron"},{"line_number":41,"context_line":"subprojects are tagged with topic:plugin-directory."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Partially-implements: blueprint neutron-lib"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"7a77a97e_ceaf9c92","line":41,"range":{"start_line":40,"start_character":0,"end_line":41,"end_character":51},"in_reply_to":"7a77a97e_57f40a85","updated":"2016-11-16 17:44:18.000000000","message":"Not quite. The directory must be filled up first and that happens at neutron startup. If this patch doesn\u0027t land first, consumers of the directory will have access to an empty one.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"56e4b5e3daef0903d1d611812c101be2082311bd","unresolved":false,"context_lines":[{"line_number":37,"context_line":"Due to the massive use of the manager, deprecation warnings are"},{"line_number":38,"context_line":"considered impractical as they cause logs to bloat out of proportion."},{"line_number":39,"context_line":""},{"line_number":40,"context_line":"Follow-up patches that show how to adopt the directory in neutron"},{"line_number":41,"context_line":"subprojects are tagged with topic:plugin-directory."},{"line_number":42,"context_line":""},{"line_number":43,"context_line":"Partially-implements: blueprint neutron-lib"},{"line_number":44,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":31,"id":"7a77a97e_13929c9e","line":41,"range":{"start_line":40,"start_character":0,"end_line":41,"end_character":51},"in_reply_to":"7a77a97e_ceaf9c92","updated":"2016-11-16 18:13:40.000000000","message":"Gotcha. I guess we can\u0027t do much with it then.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/api/extensions.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d12c56dbce154e51b0596492e51755b93aa8b086","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib.plugins import directory"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import abc"},{"line_number":19,"context_line":"import collections"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_82081b93","line":16,"updated":"2016-11-16 17:18:06.000000000","message":"nit: should be down on L22, unless there\u0027s some import issue?","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib.plugins import directory"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"import abc"},{"line_number":19,"context_line":"import collections"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_ee96184b","line":16,"in_reply_to":"7a77a97e_82081b93","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/api/rpc/agentnotifiers/l3_rpc_agent_api.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron_lib import constants"},{"line_number":19,"context_line":"from neutron_lib.plugins import directory"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"import oslo_messaging"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_69276ab6","line":20,"updated":"2016-11-16 16:39:00.000000000","message":"(nit) is it some new rule that we insert a newline between neutron-lib and other 3party imports? because it\u0027s the first time I see it applied.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d12c56dbce154e51b0596492e51755b93aa8b086","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron_lib import constants"},{"line_number":19,"context_line":"from neutron_lib.plugins import directory"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"import oslo_messaging"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_22af4782","line":20,"updated":"2016-11-16 17:18:06.000000000","message":"I don\u0027t think the blank line is necessary either","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron_lib import constants"},{"line_number":19,"context_line":"from neutron_lib.plugins import directory"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo_log import log as logging"},{"line_number":22,"context_line":"import oslo_messaging"},{"line_number":23,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_4e738c4d","line":20,"in_reply_to":"7a77a97e_69276ab6","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/api/v2/resource_helper.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib import constants"},{"line_number":17,"context_line":"from neutron_lib.plugins import directory"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_09da7678","line":18,"updated":"2016-11-16 16:39:00.000000000","message":"(nit) newline not needed?","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib import constants"},{"line_number":17,"context_line":"from neutron_lib.plugins import directory"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from oslo_config import cfg"},{"line_number":20,"context_line":"from oslo_log import log as logging"},{"line_number":21,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_8e93e44e","line":18,"in_reply_to":"7a77a97e_09da7678","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/cmd/eventlet/usage_audit.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d12c56dbce154e51b0596492e51755b93aa8b086","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import sys"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from neutron_lib import constants"},{"line_number":23,"context_line":"from neutron_lib.plugins import directory"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_c2e13300","line":21,"updated":"2016-11-16 17:18:06.000000000","message":"nit: blank line not necessary","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":18,"context_line":"\"\"\""},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"import sys"},{"line_number":21,"context_line":""},{"line_number":22,"context_line":"from neutron_lib import constants"},{"line_number":23,"context_line":"from neutron_lib.plugins import directory"},{"line_number":24,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_ae9a6061","line":21,"in_reply_to":"7a77a97e_c2e13300","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/core_extensions/qos.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f3c6ca4dfba555c0405cffb968325b158a52bb81","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def plugin_loaded(self):"},{"line_number":30,"context_line":"        if not hasattr(self, \u0027_plugin_loaded\u0027):"},{"line_number":31,"context_line":"            self._plugin_loaded \u003d ("},{"line_number":32,"context_line":"                plugin_constants.QOS in directory.get_plugins())"},{"line_number":33,"context_line":"        return self._plugin_loaded"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _get_policy_obj(self, context, policy_id):"}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_28034fb9","line":32,"updated":"2016-11-18 10:43:29.000000000","message":"probably a matter of taste, but i prefer:\n\nbool(directory.get_plugin(plugin_constans.QOS))","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d482b6f7523858797e0ef4d333853a93a6ce696a","unresolved":false,"context_lines":[{"line_number":29,"context_line":"    def plugin_loaded(self):"},{"line_number":30,"context_line":"        if not hasattr(self, \u0027_plugin_loaded\u0027):"},{"line_number":31,"context_line":"            self._plugin_loaded \u003d ("},{"line_number":32,"context_line":"                plugin_constants.QOS in directory.get_plugins())"},{"line_number":33,"context_line":"        return self._plugin_loaded"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":"    def _get_policy_obj(self, context, policy_id):"}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_f29e8f61","line":32,"in_reply_to":"7a77a97e_28034fb9","updated":"2016-11-18 17:42:11.000000000","message":"that\u0027s how it was though, is it not?","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"}],"neutron/db/external_net_db.py":[{"author":{"_account_id":16934,"name":"Martin Roy","email":"lindycoder@gmail.com","username":"lindycoder"},"change_message_id":"b55420b221992df504d8cdce5512c21e19c6e38e","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib.api import validators"},{"line_number":17,"context_line":"from neutron_lib import constants as lib_constants"},{"line_number":18,"context_line":"from neutron_lib import exceptions as n_exc"},{"line_number":19,"context_line":"from neutron_lib.plugins import directory"},{"line_number":20,"context_line":"from sqlalchemy.orm import exc"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_60ac3bee","line":17,"range":{"start_line":17,"start_character":37,"end_line":17,"end_character":50},"updated":"2016-11-14 22:58:59.000000000","message":"Removing service contants removes the need to have 2 different imports with the same name, so you could drop this \"as\" and use contants directly at lines 40 and 182","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a16e4c4ace17a43d7ae5645633a5768d5b560d5b","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib.api import validators"},{"line_number":17,"context_line":"from neutron_lib import constants as lib_constants"},{"line_number":18,"context_line":"from neutron_lib import exceptions as n_exc"},{"line_number":19,"context_line":"from neutron_lib.plugins import directory"},{"line_number":20,"context_line":"from sqlalchemy.orm import exc"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_312537ab","line":17,"range":{"start_line":17,"start_character":37,"end_line":17,"end_character":50},"in_reply_to":"7a77a97e_60ac3bee","updated":"2016-11-15 00:05:21.000000000","message":"Done","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"}],"neutron/db/l3_db.py":[{"author":{"_account_id":16934,"name":"Martin Roy","email":"lindycoder@gmail.com","username":"lindycoder"},"change_message_id":"b55420b221992df504d8cdce5512c21e19c6e38e","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from debtcollector import removals"},{"line_number":19,"context_line":"import netaddr"},{"line_number":20,"context_line":"from neutron_lib.api import validators"},{"line_number":21,"context_line":"from neutron_lib import constants as lib_constants"},{"line_number":22,"context_line":"from neutron_lib import exceptions as n_exc"},{"line_number":23,"context_line":"from neutron_lib.plugins import directory"},{"line_number":24,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_20f883e5","line":21,"range":{"start_line":21,"start_character":37,"end_line":21,"end_character":50},"updated":"2016-11-14 22:58:59.000000000","message":"Same thing here, the \"as\" is not required anymore","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a16e4c4ace17a43d7ae5645633a5768d5b560d5b","unresolved":false,"context_lines":[{"line_number":18,"context_line":"from debtcollector import removals"},{"line_number":19,"context_line":"import netaddr"},{"line_number":20,"context_line":"from neutron_lib.api import validators"},{"line_number":21,"context_line":"from neutron_lib import constants as lib_constants"},{"line_number":22,"context_line":"from neutron_lib import exceptions as n_exc"},{"line_number":23,"context_line":"from neutron_lib.plugins import directory"},{"line_number":24,"context_line":"from oslo_log import log as logging"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_d17323b3","line":21,"range":{"start_line":21,"start_character":37,"end_line":21,"end_character":50},"in_reply_to":"7a77a97e_20f883e5","updated":"2016-11-15 00:05:21.000000000","message":"Done","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"c3207eb7019fbb078b376be309e500453fff16e1","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":221,"context_line":"    def update_router(self, context, id, router):"},{"line_number":222,"context_line":"        r \u003d router[\u0027router\u0027]"},{"line_number":223,"context_line":"        gw_info \u003d r.pop(EXTERNAL_GW_INFO, lib_constants.ATTR_NOT_SPECIFIED)"},{"line_number":224,"context_line":"        # check whether router needs and can be rescheduled to the proper"},{"line_number":225,"context_line":"        # l3 agent (associated with given external network);"},{"line_number":226,"context_line":"        # do check before update in DB as an exception will be raised"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_a5ab85d5","side":"PARENT","line":223,"updated":"2016-11-16 03:38:19.000000000","message":"changing lib_constants to constants just seems like a way to make this change even bigger :)","commit_id":"0d841d2d60c069744475a0e48d53b7b87d9aa123"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c0551dca8cec2969328dd4128154ee0eab61c61","unresolved":false,"context_lines":[{"line_number":220,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":221,"context_line":"    def update_router(self, context, id, router):"},{"line_number":222,"context_line":"        r \u003d router[\u0027router\u0027]"},{"line_number":223,"context_line":"        gw_info \u003d r.pop(EXTERNAL_GW_INFO, lib_constants.ATTR_NOT_SPECIFIED)"},{"line_number":224,"context_line":"        # check whether router needs and can be rescheduled to the proper"},{"line_number":225,"context_line":"        # l3 agent (associated with given external network);"},{"line_number":226,"context_line":"        # do check before update in DB as an exception will be raised"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_a8f43c87","side":"PARENT","line":223,"in_reply_to":"7a77a97e_a5ab85d5","updated":"2016-11-16 04:43:23.000000000","message":"true, I was told by another reviewer that the alias was no longer necessary and since the name is smaller I thought it was a good thing.","commit_id":"0d841d2d60c069744475a0e48d53b7b87d9aa123"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d12c56dbce154e51b0596492e51755b93aa8b086","unresolved":false,"context_lines":[{"line_number":60,"context_line":"DEVICE_OWNER_HA_REPLICATED_INT \u003d constants.DEVICE_OWNER_HA_REPLICATED_INT"},{"line_number":61,"context_line":"DEVICE_OWNER_ROUTER_INTF \u003d constants.DEVICE_OWNER_ROUTER_INTF"},{"line_number":62,"context_line":"DEVICE_OWNER_ROUTER_GW \u003d constants.DEVICE_OWNER_ROUTER_GW"},{"line_number":63,"context_line":"DEVICE_OWNER_FLOATINGIP \u003d constants.DEVICE_OWNER_FLOATINGIP"},{"line_number":64,"context_line":"EXTERNAL_GW_INFO \u003d l3.EXTERNAL_GW_INFO"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"# Maps API field to DB column"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_229587dd","line":63,"updated":"2016-11-16 17:18:06.000000000","message":"I guess I would have done all the constant changes in another patch since they\u0027re different than the directory change.  But I wouldn\u0027t rip this out now.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":60,"context_line":"DEVICE_OWNER_HA_REPLICATED_INT \u003d constants.DEVICE_OWNER_HA_REPLICATED_INT"},{"line_number":61,"context_line":"DEVICE_OWNER_ROUTER_INTF \u003d constants.DEVICE_OWNER_ROUTER_INTF"},{"line_number":62,"context_line":"DEVICE_OWNER_ROUTER_GW \u003d constants.DEVICE_OWNER_ROUTER_GW"},{"line_number":63,"context_line":"DEVICE_OWNER_FLOATINGIP \u003d constants.DEVICE_OWNER_FLOATINGIP"},{"line_number":64,"context_line":"EXTERNAL_GW_INFO \u003d l3.EXTERNAL_GW_INFO"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"# Maps API field to DB column"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_ceb4fcd2","line":63,"in_reply_to":"7a77a97e_229587dd","updated":"2016-11-16 17:44:18.000000000","message":"I can revert this. I did it based on another reviewer\u0027s comment that I felt valid: the alias is no longer justified.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a8334ee0946f2b4e290f010f8abed3a760b201fd","unresolved":false,"context_lines":[{"line_number":60,"context_line":"DEVICE_OWNER_HA_REPLICATED_INT \u003d constants.DEVICE_OWNER_HA_REPLICATED_INT"},{"line_number":61,"context_line":"DEVICE_OWNER_ROUTER_INTF \u003d constants.DEVICE_OWNER_ROUTER_INTF"},{"line_number":62,"context_line":"DEVICE_OWNER_ROUTER_GW \u003d constants.DEVICE_OWNER_ROUTER_GW"},{"line_number":63,"context_line":"DEVICE_OWNER_FLOATINGIP \u003d constants.DEVICE_OWNER_FLOATINGIP"},{"line_number":64,"context_line":"EXTERNAL_GW_INFO \u003d l3.EXTERNAL_GW_INFO"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"# Maps API field to DB column"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_2b61d439","line":63,"in_reply_to":"7a77a97e_9336ac50","updated":"2016-11-16 22:52:01.000000000","message":"the other ones shrunk the use of the import hence I left them as is.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"80ea7c1df50b5805fd83127e13d595622fb6900c","unresolved":false,"context_lines":[{"line_number":60,"context_line":"DEVICE_OWNER_HA_REPLICATED_INT \u003d constants.DEVICE_OWNER_HA_REPLICATED_INT"},{"line_number":61,"context_line":"DEVICE_OWNER_ROUTER_INTF \u003d constants.DEVICE_OWNER_ROUTER_INTF"},{"line_number":62,"context_line":"DEVICE_OWNER_ROUTER_GW \u003d constants.DEVICE_OWNER_ROUTER_GW"},{"line_number":63,"context_line":"DEVICE_OWNER_FLOATINGIP \u003d constants.DEVICE_OWNER_FLOATINGIP"},{"line_number":64,"context_line":"EXTERNAL_GW_INFO \u003d l3.EXTERNAL_GW_INFO"},{"line_number":65,"context_line":""},{"line_number":66,"context_line":"# Maps API field to DB column"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_9336ac50","line":63,"in_reply_to":"7a77a97e_ceb4fcd2","updated":"2016-11-16 18:20:44.000000000","message":"There were others elsewhere if I\u0027m remembering correctly, eyes were glazing over after a while... :)","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/db/l3_dvrscheduler_db.py":[{"author":{"_account_id":16934,"name":"Martin Roy","email":"lindycoder@gmail.com","username":"lindycoder"},"change_message_id":"b55420b221992df504d8cdce5512c21e19c6e38e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib import constants as n_const"},{"line_number":17,"context_line":"from neutron_lib.plugins import directory"},{"line_number":18,"context_line":"from oslo_log import log as logging"},{"line_number":19,"context_line":"from sqlalchemy import or_"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_20cfa3b1","line":16,"range":{"start_line":16,"start_character":37,"end_line":16,"end_character":44},"updated":"2016-11-14 22:58:59.000000000","message":"same here, \"as\" not required anymore","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a16e4c4ace17a43d7ae5645633a5768d5b560d5b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib import constants as n_const"},{"line_number":17,"context_line":"from neutron_lib.plugins import directory"},{"line_number":18,"context_line":"from oslo_log import log as logging"},{"line_number":19,"context_line":"from sqlalchemy import or_"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_b15f870d","line":16,"range":{"start_line":16,"start_character":37,"end_line":16,"end_character":44},"in_reply_to":"7a77a97e_20cfa3b1","updated":"2016-11-15 00:05:21.000000000","message":"this is convenient because it shortens the import.","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"}],"neutron/db/metering/metering_rpc.py":[{"author":{"_account_id":16934,"name":"Martin Roy","email":"lindycoder@gmail.com","username":"lindycoder"},"change_message_id":"b55420b221992df504d8cdce5512c21e19c6e38e","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutron_lib import constants as consts"},{"line_number":16,"context_line":"from neutron_lib.plugins import directory"},{"line_number":17,"context_line":"from oslo_log import log as logging"},{"line_number":18,"context_line":"import oslo_messaging"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_80beb7fd","line":15,"range":{"start_line":15,"start_character":34,"end_line":15,"end_character":43},"updated":"2016-11-14 22:58:59.000000000","message":"same here, \"as\" no longer required","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a16e4c4ace17a43d7ae5645633a5768d5b560d5b","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutron_lib import constants as consts"},{"line_number":16,"context_line":"from neutron_lib.plugins import directory"},{"line_number":17,"context_line":"from oslo_log import log as logging"},{"line_number":18,"context_line":"import oslo_messaging"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_b1b6a73b","line":15,"range":{"start_line":15,"start_character":34,"end_line":15,"end_character":43},"in_reply_to":"7a77a97e_80beb7fd","updated":"2016-11-15 00:05:21.000000000","message":"since it shortens the import, I\u0027d rather leave it as is.","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"}],"neutron/extensions/flavors.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f3c6ca4dfba555c0405cffb968325b158a52bb81","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def _validate_flavor_service_type(validate_type, valid_values\u003dNone):"},{"line_number":76,"context_line":"    \"\"\"Ensure requested flavor service type plugin is loaded.\"\"\""},{"line_number":77,"context_line":"    if validate_type not in directory.get_plugins():"},{"line_number":78,"context_line":"        raise InvalidFlavorServiceType(service_type\u003dvalidate_type)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"validators.add_validator(\u0027validate_flavor_service_type\u0027,"}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_e898777a","line":77,"updated":"2016-11-18 10:43:29.000000000","message":"if not directory.get_plugin(validate_type):","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d482b6f7523858797e0ef4d333853a93a6ce696a","unresolved":false,"context_lines":[{"line_number":74,"context_line":""},{"line_number":75,"context_line":"def _validate_flavor_service_type(validate_type, valid_values\u003dNone):"},{"line_number":76,"context_line":"    \"\"\"Ensure requested flavor service type plugin is loaded.\"\"\""},{"line_number":77,"context_line":"    if validate_type not in directory.get_plugins():"},{"line_number":78,"context_line":"        raise InvalidFlavorServiceType(service_type\u003dvalidate_type)"},{"line_number":79,"context_line":""},{"line_number":80,"context_line":"validators.add_validator(\u0027validate_flavor_service_type\u0027,"}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_d27a7323","line":77,"in_reply_to":"7a77a97e_e898777a","updated":"2016-11-18 17:42:11.000000000","message":"Done","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"}],"neutron/manager.py":[{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"8888044f4490826164fc444c363f50698f51657d","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    @classmethod"},{"line_number":242,"context_line":"    @moves.moved_method("},{"line_number":243,"context_line":"        \u0027get_plugin\u0027,"},{"line_number":244,"context_line":"        \u0027NeutronManager.get_plugin() moved to neutron_lib.plugins.directory\u0027,"},{"line_number":245,"context_line":"        removal_version\u003d\u0027Pike\u0027)"},{"line_number":246,"context_line":"    def get_plugin(cls):"},{"line_number":247,"context_line":"        if cls.get_instance():"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5da102_dad7a1bd","line":244,"updated":"2016-11-04 23:39:26.000000000","message":"The moved_method() decorator only works correctly on instance methods. On classmethods the deprecation message is all messed up. I suggest to put the following in the method body instead:\n\n    debtcollector.deprecate(\n        \"\u0027neutron.manager.NeutronManager.get_plugin()\u0027 \"\n        \"has moved to \u0027neutron_lib.plugins.directory.get_plugin()\u0027\")","commit_id":"831d96c1888a7ab512a3d57bbedf02b96b85fae5"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"e245776029f7d5c1b3136a2f77280d6967b2acc8","unresolved":false,"context_lines":[{"line_number":241,"context_line":"    @classmethod"},{"line_number":242,"context_line":"    @moves.moved_method("},{"line_number":243,"context_line":"        \u0027get_plugin\u0027,"},{"line_number":244,"context_line":"        \u0027NeutronManager.get_plugin() moved to neutron_lib.plugins.directory\u0027,"},{"line_number":245,"context_line":"        removal_version\u003d\u0027Pike\u0027)"},{"line_number":246,"context_line":"    def get_plugin(cls):"},{"line_number":247,"context_line":"        if cls.get_instance():"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5da102_fd57ff23","line":244,"in_reply_to":"ba5da102_dad7a1bd","updated":"2016-11-05 01:17:10.000000000","message":"Done","commit_id":"831d96c1888a7ab512a3d57bbedf02b96b85fae5"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"8888044f4490826164fc444c363f50698f51657d","unresolved":false,"context_lines":[{"line_number":242,"context_line":"    @moves.moved_method("},{"line_number":243,"context_line":"        \u0027get_plugin\u0027,"},{"line_number":244,"context_line":"        \u0027NeutronManager.get_plugin() moved to neutron_lib.plugins.directory\u0027,"},{"line_number":245,"context_line":"        removal_version\u003d\u0027Pike\u0027)"},{"line_number":246,"context_line":"    def get_plugin(cls):"},{"line_number":247,"context_line":"        if cls.get_instance():"},{"line_number":248,"context_line":"            return directory.get_plugin()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5da102_badcad75","line":245,"range":{"start_line":245,"start_character":8,"end_line":245,"end_character":30},"updated":"2016-11-04 23:39:26.000000000","message":"Leave the removal version unspecified so that we can remove it in a month.","commit_id":"831d96c1888a7ab512a3d57bbedf02b96b85fae5"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"e245776029f7d5c1b3136a2f77280d6967b2acc8","unresolved":false,"context_lines":[{"line_number":242,"context_line":"    @moves.moved_method("},{"line_number":243,"context_line":"        \u0027get_plugin\u0027,"},{"line_number":244,"context_line":"        \u0027NeutronManager.get_plugin() moved to neutron_lib.plugins.directory\u0027,"},{"line_number":245,"context_line":"        removal_version\u003d\u0027Pike\u0027)"},{"line_number":246,"context_line":"    def get_plugin(cls):"},{"line_number":247,"context_line":"        if cls.get_instance():"},{"line_number":248,"context_line":"            return directory.get_plugin()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5da102_1d2cb3aa","line":245,"range":{"start_line":245,"start_character":8,"end_line":245,"end_character":30},"in_reply_to":"ba5da102_badcad75","updated":"2016-11-05 01:17:10.000000000","message":"Done","commit_id":"831d96c1888a7ab512a3d57bbedf02b96b85fae5"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"8888044f4490826164fc444c363f50698f51657d","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        \u0027NeutronManager.get_plugin() moved to neutron_lib.plugins.directory\u0027,"},{"line_number":245,"context_line":"        removal_version\u003d\u0027Pike\u0027)"},{"line_number":246,"context_line":"    def get_plugin(cls):"},{"line_number":247,"context_line":"        if cls.get_instance():"},{"line_number":248,"context_line":"            return directory.get_plugin()"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5da102_3acfbdb4","line":247,"updated":"2016-11-04 23:39:26.000000000","message":"Why do you care about this?","commit_id":"831d96c1888a7ab512a3d57bbedf02b96b85fae5"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"e245776029f7d5c1b3136a2f77280d6967b2acc8","unresolved":false,"context_lines":[{"line_number":244,"context_line":"        \u0027NeutronManager.get_plugin() moved to neutron_lib.plugins.directory\u0027,"},{"line_number":245,"context_line":"        removal_version\u003d\u0027Pike\u0027)"},{"line_number":246,"context_line":"    def get_plugin(cls):"},{"line_number":247,"context_line":"        if cls.get_instance():"},{"line_number":248,"context_line":"            return directory.get_plugin()"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5da102_dd087b30","line":247,"in_reply_to":"ba5da102_3acfbdb4","updated":"2016-11-05 01:17:10.000000000","message":"We\u0027d need to make sure the manager instance has been loaded at least once. We\u0027ll revisit when this goes away.","commit_id":"831d96c1888a7ab512a3d57bbedf02b96b85fae5"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"8888044f4490826164fc444c363f50698f51657d","unresolved":false,"context_lines":[{"line_number":248,"context_line":"            return directory.get_plugin()"},{"line_number":249,"context_line":""},{"line_number":250,"context_line":"    @classmethod"},{"line_number":251,"context_line":"    @moves.moved_method("},{"line_number":252,"context_line":"        \u0027get_plugins\u0027,"},{"line_number":253,"context_line":"        \u0027NeutronManager.get_service_plugins() moved to \u0027"},{"line_number":254,"context_line":"        \u0027neutron_lib.plugins.directory\u0027,"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5da102_5af2b170","line":251,"updated":"2016-11-04 23:39:26.000000000","message":"ditto","commit_id":"831d96c1888a7ab512a3d57bbedf02b96b85fae5"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"8888044f4490826164fc444c363f50698f51657d","unresolved":false,"context_lines":[{"line_number":252,"context_line":"        \u0027get_plugins\u0027,"},{"line_number":253,"context_line":"        \u0027NeutronManager.get_service_plugins() moved to \u0027"},{"line_number":254,"context_line":"        \u0027neutron_lib.plugins.directory\u0027,"},{"line_number":255,"context_line":"        removal_version\u003d\u0027Pike\u0027)"},{"line_number":256,"context_line":"    def get_service_plugins(cls):"},{"line_number":257,"context_line":"        if cls.get_instance():"},{"line_number":258,"context_line":"            return directory.get_plugins()"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5da102_7ae775ac","line":255,"updated":"2016-11-04 23:39:26.000000000","message":"ditto","commit_id":"831d96c1888a7ab512a3d57bbedf02b96b85fae5"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"8888044f4490826164fc444c363f50698f51657d","unresolved":false,"context_lines":[{"line_number":254,"context_line":"        \u0027neutron_lib.plugins.directory\u0027,"},{"line_number":255,"context_line":"        removal_version\u003d\u0027Pike\u0027)"},{"line_number":256,"context_line":"    def get_service_plugins(cls):"},{"line_number":257,"context_line":"        if cls.get_instance():"},{"line_number":258,"context_line":"            return directory.get_plugins()"},{"line_number":259,"context_line":""},{"line_number":260,"context_line":"    @classmethod"}],"source_content_type":"text/x-python","patch_set":6,"id":"ba5da102_ba010d3c","line":257,"updated":"2016-11-04 23:39:26.000000000","message":"ditto","commit_id":"831d96c1888a7ab512a3d57bbedf02b96b85fae5"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c9c4e2ec1452048a963a6384db11ea282a5abb34","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    @classmethod"},{"line_number":242,"context_line":"    def get_plugin(cls):"},{"line_number":243,"context_line":"        debtcollector.deprecate("},{"line_number":244,"context_line":"            \"\u0027neutron.manager.NeutronManager.get_plugin()\u0027 \""},{"line_number":245,"context_line":"            \"has moved to \u0027neutron_lib.plugins.directory.get_plugin()\u0027\")"},{"line_number":246,"context_line":"        if cls.get_instance():"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_80695c8e","line":243,"updated":"2016-11-07 09:59:57.000000000","message":"why are you not using the decorator?\nthis kill the log files - called n times per test...","commit_id":"7a58a3b83a508ff8a65332b57592506c5ac5af30"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"185a36c005ab4872d8b7940cc1bcb74e3da34451","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    @classmethod"},{"line_number":242,"context_line":"    def get_plugin(cls):"},{"line_number":243,"context_line":"        debtcollector.deprecate("},{"line_number":244,"context_line":"            \"\u0027neutron.manager.NeutronManager.get_plugin()\u0027 \""},{"line_number":245,"context_line":"            \"has moved to \u0027neutron_lib.plugins.directory.get_plugin()\u0027\")"},{"line_number":246,"context_line":"        if cls.get_instance():"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_22056613","line":243,"in_reply_to":"9a629dbe_255cf44a","updated":"2016-11-09 23:49:58.000000000","message":"@Gary: I am okay with this. I don\u0027t need you to take over.","commit_id":"7a58a3b83a508ff8a65332b57592506c5ac5af30"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"185a36c005ab4872d8b7940cc1bcb74e3da34451","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    @classmethod"},{"line_number":242,"context_line":"    def get_plugin(cls):"},{"line_number":243,"context_line":"        debtcollector.deprecate("},{"line_number":244,"context_line":"            \"\u0027neutron.manager.NeutronManager.get_plugin()\u0027 \""},{"line_number":245,"context_line":"            \"has moved to \u0027neutron_lib.plugins.directory.get_plugin()\u0027\")"},{"line_number":246,"context_line":"        if cls.get_instance():"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_a210965a","line":243,"in_reply_to":"9a629dbe_3cab3e8b","updated":"2016-11-09 23:49:58.000000000","message":"@Henry: WIP is not sticky and I need to iterate on this a few times until I am happy to open it up for review.","commit_id":"7a58a3b83a508ff8a65332b57592506c5ac5af30"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"040b046a3a265548e64af41293bd7845d343ceac","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    @classmethod"},{"line_number":242,"context_line":"    def get_plugin(cls):"},{"line_number":243,"context_line":"        debtcollector.deprecate("},{"line_number":244,"context_line":"            \"\u0027neutron.manager.NeutronManager.get_plugin()\u0027 \""},{"line_number":245,"context_line":"            \"has moved to \u0027neutron_lib.plugins.directory.get_plugin()\u0027\")"},{"line_number":246,"context_line":"        if cls.get_instance():"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_255cf44a","line":243,"in_reply_to":"9a629dbe_3cab3e8b","updated":"2016-11-08 07:30:18.000000000","message":"i ma looking at these and will clean up.","commit_id":"7a58a3b83a508ff8a65332b57592506c5ac5af30"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"6e14e0eed3f0725dbf00e04fa3efac7684740585","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    @classmethod"},{"line_number":242,"context_line":"    def get_plugin(cls):"},{"line_number":243,"context_line":"        debtcollector.deprecate("},{"line_number":244,"context_line":"            \"\u0027neutron.manager.NeutronManager.get_plugin()\u0027 \""},{"line_number":245,"context_line":"            \"has moved to \u0027neutron_lib.plugins.directory.get_plugin()\u0027\")"},{"line_number":246,"context_line":"        if cls.get_instance():"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_3cab3e8b","line":243,"in_reply_to":"9a629dbe_5c5c7225","updated":"2016-11-07 20:10:42.000000000","message":"to silence the logs, this patch must replace all uses of the NeutronManager get_plugin() in the core codebase. I assumed that is why this is still in WIP. (Using -2 for WIP is an abuse of privilege though.)","commit_id":"7a58a3b83a508ff8a65332b57592506c5ac5af30"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a02aa6f790e43338e949a06a9a6cf9f461a6dac2","unresolved":false,"context_lines":[{"line_number":240,"context_line":""},{"line_number":241,"context_line":"    @classmethod"},{"line_number":242,"context_line":"    def get_plugin(cls):"},{"line_number":243,"context_line":"        debtcollector.deprecate("},{"line_number":244,"context_line":"            \"\u0027neutron.manager.NeutronManager.get_plugin()\u0027 \""},{"line_number":245,"context_line":"            \"has moved to \u0027neutron_lib.plugins.directory.get_plugin()\u0027\")"},{"line_number":246,"context_line":"        if cls.get_instance():"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_5c5c7225","line":243,"in_reply_to":"9a629dbe_80695c8e","updated":"2016-11-07 18:44:29.000000000","message":"Henry said the decorator does not render well with class methods. I\u0027ll double check. I have a -2 on this patch because I am not quite finished and happy with everything I got here.","commit_id":"7a58a3b83a508ff8a65332b57592506c5ac5af30"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"aca3096e263b0123baef599a38e2002515d993ba","unresolved":false,"context_lines":[{"line_number":242,"context_line":"    def get_plugin(cls):"},{"line_number":243,"context_line":"        debtcollector.deprecate("},{"line_number":244,"context_line":"            \"\u0027neutron.manager.NeutronManager.get_plugin()\u0027 \""},{"line_number":245,"context_line":"            \"has moved to \u0027neutron_lib.plugins.directory.get_plugin()\u0027\")"},{"line_number":246,"context_line":"        if cls.get_instance():"},{"line_number":247,"context_line":"            return directory.get_plugin()"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_16749633","line":245,"updated":"2016-11-07 20:16:10.000000000","message":"You need to add the argument \"stacklevel\u003d4\" to this deprecator for the warning to correctly point to the offending line.","commit_id":"7a58a3b83a508ff8a65332b57592506c5ac5af30"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"040b046a3a265548e64af41293bd7845d343ceac","unresolved":false,"context_lines":[{"line_number":242,"context_line":"    def get_plugin(cls):"},{"line_number":243,"context_line":"        debtcollector.deprecate("},{"line_number":244,"context_line":"            \"\u0027neutron.manager.NeutronManager.get_plugin()\u0027 \""},{"line_number":245,"context_line":"            \"has moved to \u0027neutron_lib.plugins.directory.get_plugin()\u0027\")"},{"line_number":246,"context_line":"        if cls.get_instance():"},{"line_number":247,"context_line":"            return directory.get_plugin()"},{"line_number":248,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_6556ec2a","line":245,"in_reply_to":"9a629dbe_16749633","updated":"2016-11-08 07:30:18.000000000","message":"Done","commit_id":"7a58a3b83a508ff8a65332b57592506c5ac5af30"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"c9c4e2ec1452048a963a6384db11ea282a5abb34","unresolved":false,"context_lines":[{"line_number":248,"context_line":""},{"line_number":249,"context_line":"    @classmethod"},{"line_number":250,"context_line":"    def get_service_plugins(cls):"},{"line_number":251,"context_line":"        debtcollector.deprecate("},{"line_number":252,"context_line":"            \"\u0027neutron.manager.NeutronManager.get_plugin()\u0027 \""},{"line_number":253,"context_line":"            \"has moved to \u0027neutron_lib.plugins.directory.get_plugin()\u0027\")"},{"line_number":254,"context_line":"        if cls.get_instance():"}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_a004a0c6","line":251,"updated":"2016-11-07 09:59:57.000000000","message":"ditto","commit_id":"7a58a3b83a508ff8a65332b57592506c5ac5af30"},{"author":{"_account_id":6524,"name":"Henry Gessau","email":"HenryG@gessau.net","username":"gessau"},"change_message_id":"aca3096e263b0123baef599a38e2002515d993ba","unresolved":false,"context_lines":[{"line_number":250,"context_line":"    def get_service_plugins(cls):"},{"line_number":251,"context_line":"        debtcollector.deprecate("},{"line_number":252,"context_line":"            \"\u0027neutron.manager.NeutronManager.get_plugin()\u0027 \""},{"line_number":253,"context_line":"            \"has moved to \u0027neutron_lib.plugins.directory.get_plugin()\u0027\")"},{"line_number":254,"context_line":"        if cls.get_instance():"},{"line_number":255,"context_line":"            return directory.get_plugins()"},{"line_number":256,"context_line":""}],"source_content_type":"text/x-python","patch_set":10,"id":"9a629dbe_56944e36","line":253,"updated":"2016-11-07 20:16:10.000000000","message":"Add stacklevel\u003d4","commit_id":"7a58a3b83a508ff8a65332b57592506c5ac5af30"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        #                for performance metrics."},{"line_number":124,"context_line":"        plugin_provider \u003d cfg.CONF.core_plugin"},{"line_number":125,"context_line":"        LOG.info(_LI(\"Loading core plugin: %s\"), plugin_provider)"},{"line_number":126,"context_line":"        self.plugin \u003d self._get_plugin_instance(CORE_PLUGINS_NAMESPACE,"},{"line_number":127,"context_line":"                                                plugin_provider)"},{"line_number":128,"context_line":"        msg \u003d validate_post_plugin_load()"},{"line_number":129,"context_line":"        if msg:"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_89992622","side":"PARENT","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":13},"updated":"2016-11-16 16:39:00.000000000","message":"I guess you assume no one relies on manager.plugin? Is it safe?","commit_id":"0d841d2d60c069744475a0e48d53b7b87d9aa123"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":123,"context_line":"        #                for performance metrics."},{"line_number":124,"context_line":"        plugin_provider \u003d cfg.CONF.core_plugin"},{"line_number":125,"context_line":"        LOG.info(_LI(\"Loading core plugin: %s\"), plugin_provider)"},{"line_number":126,"context_line":"        self.plugin \u003d self._get_plugin_instance(CORE_PLUGINS_NAMESPACE,"},{"line_number":127,"context_line":"                                                plugin_provider)"},{"line_number":128,"context_line":"        msg \u003d validate_post_plugin_load()"},{"line_number":129,"context_line":"        if msg:"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_4ed8ec1d","side":"PARENT","line":126,"range":{"start_line":126,"start_character":8,"end_line":126,"end_character":13},"in_reply_to":"7a77a97e_89992622","updated":"2016-11-16 17:44:18.000000000","message":"I think the only uses I found was in the tests","commit_id":"0d841d2d60c069744475a0e48d53b7b87d9aa123"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        # checking extensions"},{"line_number":135,"context_line":"        # TODO(enikanorov): make core plugin the same as"},{"line_number":136,"context_line":"        # the rest of service plugins"},{"line_number":137,"context_line":"        self.service_plugins \u003d {constants.CORE: self.plugin}"},{"line_number":138,"context_line":"        self._load_service_plugins()"},{"line_number":139,"context_line":"        # Used by pecan WSGI"},{"line_number":140,"context_line":"        self.resource_plugin_mappings \u003d {}"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_894e8694","side":"PARENT","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":28},"updated":"2016-11-16 16:39:00.000000000","message":"same question about that attribute. I guess we believe no one accesses it?","commit_id":"0d841d2d60c069744475a0e48d53b7b87d9aa123"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        # checking extensions"},{"line_number":135,"context_line":"        # TODO(enikanorov): make core plugin the same as"},{"line_number":136,"context_line":"        # the rest of service plugins"},{"line_number":137,"context_line":"        self.service_plugins \u003d {constants.CORE: self.plugin}"},{"line_number":138,"context_line":"        self._load_service_plugins()"},{"line_number":139,"context_line":"        # Used by pecan WSGI"},{"line_number":140,"context_line":"        self.resource_plugin_mappings \u003d {}"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_0ef51482","side":"PARENT","line":137,"range":{"start_line":137,"start_character":8,"end_line":137,"end_character":28},"in_reply_to":"7a77a97e_894e8694","updated":"2016-11-16 17:44:18.000000000","message":"in the tests and in probably one other place.","commit_id":"0d841d2d60c069744475a0e48d53b7b87d9aa123"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            cls._create_instance()"},{"line_number":241,"context_line":"        return cls._instance"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @classmethod"},{"line_number":244,"context_line":"    def get_plugin(cls):"},{"line_number":245,"context_line":"        # Return a weakref to minimize gc-preventing references."},{"line_number":246,"context_line":"        return weakref.proxy(cls.get_instance().plugin)"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_ac7d1070","side":"PARENT","line":243,"updated":"2016-11-16 16:39:00.000000000","message":"I actually share concern of @garyk that we rip it off completely here. I think having a set of deprecated methods here would not be hard to maintain, and the benefit for stadium participants would be enormous.\n\nI understand that we now don\u0027t require deprecation warnings, but that case is so invasive.","commit_id":"0d841d2d60c069744475a0e48d53b7b87d9aa123"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"56e4b5e3daef0903d1d611812c101be2082311bd","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            cls._create_instance()"},{"line_number":241,"context_line":"        return cls._instance"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @classmethod"},{"line_number":244,"context_line":"    def get_plugin(cls):"},{"line_number":245,"context_line":"        # Return a weakref to minimize gc-preventing references."},{"line_number":246,"context_line":"        return weakref.proxy(cls.get_instance().plugin)"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_b3456818","side":"PARENT","line":243,"in_reply_to":"7a77a97e_8ef2046e","updated":"2016-11-16 18:13:40.000000000","message":"As long as we give some more time to bake subproject patches, I am fine. Some people are just under (wrong) impression the patch lands now without waiting a bit.","commit_id":"0d841d2d60c069744475a0e48d53b7b87d9aa123"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            cls._create_instance()"},{"line_number":241,"context_line":"        return cls._instance"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @classmethod"},{"line_number":244,"context_line":"    def get_plugin(cls):"},{"line_number":245,"context_line":"        # Return a weakref to minimize gc-preventing references."},{"line_number":246,"context_line":"        return weakref.proxy(cls.get_instance().plugin)"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_8ef2046e","side":"PARENT","line":243,"in_reply_to":"7a77a97e_ac7d1070","updated":"2016-11-16 17:44:18.000000000","message":"Understood, so are you saying we\u0027ll keep these methods for ever? Then no-one will ever have the incentive of breaking the coupling with neutron. This isn\u0027t so much an argument of leaving the methods in or out. It\u0027s about acknowledging that we have a chronic situation we need to resolve. By keeping things in, without proactively/aggressively addressing them we\u0027re simply procrastinate and I am tired of seeing things dragging for releases on end.","commit_id":"0d841d2d60c069744475a0e48d53b7b87d9aa123"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"be8649674e32a0cbb2c4e872505931244fa3361e","unresolved":false,"context_lines":[{"line_number":240,"context_line":"            cls._create_instance()"},{"line_number":241,"context_line":"        return cls._instance"},{"line_number":242,"context_line":""},{"line_number":243,"context_line":"    @classmethod"},{"line_number":244,"context_line":"    def get_plugin(cls):"},{"line_number":245,"context_line":"        # Return a weakref to minimize gc-preventing references."},{"line_number":246,"context_line":"        return weakref.proxy(cls.get_instance().plugin)"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_56b7a2d7","side":"PARENT","line":243,"in_reply_to":"7a77a97e_b3456818","updated":"2016-11-16 18:40:48.000000000","message":"That was never my intention, that\u0027s why I am proactively fixing things and communicating the presence of this patch on ML and team meetings.","commit_id":"0d841d2d60c069744475a0e48d53b7b87d9aa123"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d12c56dbce154e51b0596492e51755b93aa8b086","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from collections import defaultdict"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron_lib import constants as lib_const"},{"line_number":19,"context_line":"from neutron_lib.plugins import directory"},{"line_number":20,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_dd5bd82c","line":17,"updated":"2016-11-16 17:18:06.000000000","message":"nit: blank line not necessary","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from collections import defaultdict"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron_lib import constants as lib_const"},{"line_number":19,"context_line":"from neutron_lib.plugins import directory"},{"line_number":20,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_0ec7d445","line":17,"in_reply_to":"7a77a97e_dd5bd82c","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            plugin_inst \u003d self._get_plugin_instance(\u0027neutron.service_plugins\u0027,"},{"line_number":198,"context_line":"                                                    provider)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"            # only one implementation of svc_type allowed"},{"line_number":201,"context_line":"            # specifying more than one plugin"},{"line_number":202,"context_line":"            # for the same type is a fatal exception"},{"line_number":203,"context_line":"            plugin_type \u003d plugin_inst.get_plugin_type()"},{"line_number":204,"context_line":"            if directory.get_plugin(plugin_type):"},{"line_number":205,"context_line":"                raise ValueError(_(\"Multiple plugins for service \""},{"line_number":206,"context_line":"                                   \"%s were configured\") % plugin_type)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"            directory.add_plugin(plugin_type, plugin_inst)"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_69192a88","line":206,"range":{"start_line":200,"start_character":12,"end_line":206,"end_character":71},"updated":"2016-11-16 16:39:00.000000000","message":"(No action required) That logic could probably belong to directory module itself.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            plugin_inst \u003d self._get_plugin_instance(\u0027neutron.service_plugins\u0027,"},{"line_number":198,"context_line":"                                                    provider)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"            # only one implementation of svc_type allowed"},{"line_number":201,"context_line":"            # specifying more than one plugin"},{"line_number":202,"context_line":"            # for the same type is a fatal exception"},{"line_number":203,"context_line":"            plugin_type \u003d plugin_inst.get_plugin_type()"},{"line_number":204,"context_line":"            if directory.get_plugin(plugin_type):"},{"line_number":205,"context_line":"                raise ValueError(_(\"Multiple plugins for service \""},{"line_number":206,"context_line":"                                   \"%s were configured\") % plugin_type)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"            directory.add_plugin(plugin_type, plugin_inst)"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_6e2cc802","line":206,"range":{"start_line":200,"start_character":12,"end_line":206,"end_character":71},"in_reply_to":"7a77a97e_69192a88","updated":"2016-11-16 17:44:18.000000000","message":"Ack. I can add that in.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"b5bf0a4f7e8d05ff014026eea301681fac435a0f","unresolved":false,"context_lines":[{"line_number":197,"context_line":"            plugin_inst \u003d self._get_plugin_instance(\u0027neutron.service_plugins\u0027,"},{"line_number":198,"context_line":"                                                    provider)"},{"line_number":199,"context_line":""},{"line_number":200,"context_line":"            # only one implementation of svc_type allowed"},{"line_number":201,"context_line":"            # specifying more than one plugin"},{"line_number":202,"context_line":"            # for the same type is a fatal exception"},{"line_number":203,"context_line":"            plugin_type \u003d plugin_inst.get_plugin_type()"},{"line_number":204,"context_line":"            if directory.get_plugin(plugin_type):"},{"line_number":205,"context_line":"                raise ValueError(_(\"Multiple plugins for service \""},{"line_number":206,"context_line":"                                   \"%s were configured\") % plugin_type)"},{"line_number":207,"context_line":""},{"line_number":208,"context_line":"            directory.add_plugin(plugin_type, plugin_inst)"},{"line_number":209,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_c70f4537","line":206,"range":{"start_line":200,"start_character":12,"end_line":206,"end_character":71},"in_reply_to":"7a77a97e_6e2cc802","updated":"2016-11-17 18:08:10.000000000","message":"Actually thinking about this again, I remember now why I chose not to: especially in tests, we may want to \u0027redefine\u0027 a plugin and by making it fatal in the add_plugin() itself things may blow up. But I\u0027ll give it a go once this lands.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            # (needed by agent management extension)"},{"line_number":212,"context_line":"            if (hasattr(directory.get_plugin(), \u0027agent_notifiers\u0027) and"},{"line_number":213,"context_line":"                    hasattr(plugin_inst, \u0027agent_notifiers\u0027)):"},{"line_number":214,"context_line":"                (directory.get_plugin()."},{"line_number":215,"context_line":"                 agent_notifiers.update(plugin_inst.agent_notifiers))"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            LOG.debug(\"Successfully loaded %(type)s plugin. \""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_ac2190a1","line":214,"range":{"start_line":214,"start_character":17,"end_line":214,"end_character":39},"updated":"2016-11-16 16:39:00.000000000","message":"(nit) it\u0027s second time you do it. Maybe it\u0027s better to extract it in line 211. At least the code will be a tad cleaner.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":211,"context_line":"            # (needed by agent management extension)"},{"line_number":212,"context_line":"            if (hasattr(directory.get_plugin(), \u0027agent_notifiers\u0027) and"},{"line_number":213,"context_line":"                    hasattr(plugin_inst, \u0027agent_notifiers\u0027)):"},{"line_number":214,"context_line":"                (directory.get_plugin()."},{"line_number":215,"context_line":"                 agent_notifiers.update(plugin_inst.agent_notifiers))"},{"line_number":216,"context_line":""},{"line_number":217,"context_line":"            LOG.debug(\"Successfully loaded %(type)s plugin. \""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_ce395c43","line":214,"range":{"start_line":214,"start_character":17,"end_line":214,"end_character":39},"in_reply_to":"7a77a97e_ac2190a1","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f3c6ca4dfba555c0405cffb968325b158a52bb81","unresolved":false,"context_lines":[{"line_number":286,"context_line":""},{"line_number":287,"context_line":"def init():"},{"line_number":288,"context_line":"    \"\"\"Call to load the plugins (core+services) machinery.\"\"\""},{"line_number":289,"context_line":"    if not directory.get_plugins():"},{"line_number":290,"context_line":"        NeutronManager.get_instance()"}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_a8d03fca","line":289,"updated":"2016-11-18 10:43:29.000000000","message":"directory.is_loaded?","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d482b6f7523858797e0ef4d333853a93a6ce696a","unresolved":false,"context_lines":[{"line_number":286,"context_line":""},{"line_number":287,"context_line":"def init():"},{"line_number":288,"context_line":"    \"\"\"Call to load the plugins (core+services) machinery.\"\"\""},{"line_number":289,"context_line":"    if not directory.get_plugins():"},{"line_number":290,"context_line":"        NeutronManager.get_instance()"}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_7298bf6a","line":289,"in_reply_to":"7a77a97e_a8d03fca","updated":"2016-11-18 17:42:11.000000000","message":"agreed...I forgot to add it, so I need a new lib release :/\n\n[1] https://review.openstack.org/#/c/396390/","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"},{"author":{"_account_id":1653,"name":"garyk","email":"gkotton@vmware.com","username":"garyk"},"change_message_id":"8a9740fe3b8519a565b81f972e48f2bbf035b509","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            plugin \u003d directory.get_plugin()"},{"line_number":214,"context_line":"            if (hasattr(plugin, \u0027agent_notifiers\u0027) and"},{"line_number":215,"context_line":"                    hasattr(plugin_inst, \u0027agent_notifiers\u0027)):"},{"line_number":216,"context_line":"                (plugin.agent_notifiers.update(plugin_inst.agent_notifiers))"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"            LOG.debug(\"Successfully loaded %(type)s plugin. \""},{"line_number":219,"context_line":"                      \"Description: %(desc)s\","}],"source_content_type":"text/x-python","patch_set":35,"id":"7a77a97e_6970bf72","line":216,"updated":"2016-11-20 06:34:55.000000000","message":"not sure why there are the extra brackets here. This should just be:\nplugin.agent_notifiers.update(plugin_inst.agent_notifiers)","commit_id":"f541712f0a638d2727e35682d718d627bc181036"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"638e6e73f25436891780df56b0b0dc70867418bd","unresolved":false,"context_lines":[{"line_number":213,"context_line":"            plugin \u003d directory.get_plugin()"},{"line_number":214,"context_line":"            if (hasattr(plugin, \u0027agent_notifiers\u0027) and"},{"line_number":215,"context_line":"                    hasattr(plugin_inst, \u0027agent_notifiers\u0027)):"},{"line_number":216,"context_line":"                (plugin.agent_notifiers.update(plugin_inst.agent_notifiers))"},{"line_number":217,"context_line":""},{"line_number":218,"context_line":"            LOG.debug(\"Successfully loaded %(type)s plugin. \""},{"line_number":219,"context_line":"                      \"Description: %(desc)s\","}],"source_content_type":"text/x-python","patch_set":35,"id":"7a77a97e_a153996b","line":216,"in_reply_to":"7a77a97e_6970bf72","updated":"2016-11-21 22:41:18.000000000","message":"Done","commit_id":"f541712f0a638d2727e35682d718d627bc181036"}],"neutron/notifiers/nova.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @property"},{"line_number":106,"context_line":"    def _plugin(self):"},{"line_number":107,"context_line":"        # NOTE(arosen): this cannot be set in __init__ currently since"},{"line_number":108,"context_line":"        # this class is initialized at the same time as NeutronManager()"},{"line_number":109,"context_line":"        # which is decorated with synchronized()"},{"line_number":110,"context_line":"        if not hasattr(self, \u0027_plugin_ref\u0027):"},{"line_number":111,"context_line":"            self._plugin_ref \u003d directory.get_plugin()"},{"line_number":112,"context_line":"        return self._plugin_ref"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_acb510ef","line":109,"range":{"start_line":107,"start_character":8,"end_line":109,"end_character":48},"updated":"2016-11-16 16:39:00.000000000","message":"/me wonders if it\u0027s still a valid comment","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":104,"context_line":""},{"line_number":105,"context_line":"    @property"},{"line_number":106,"context_line":"    def _plugin(self):"},{"line_number":107,"context_line":"        # NOTE(arosen): this cannot be set in __init__ currently since"},{"line_number":108,"context_line":"        # this class is initialized at the same time as NeutronManager()"},{"line_number":109,"context_line":"        # which is decorated with synchronized()"},{"line_number":110,"context_line":"        if not hasattr(self, \u0027_plugin_ref\u0027):"},{"line_number":111,"context_line":"            self._plugin_ref \u003d directory.get_plugin()"},{"line_number":112,"context_line":"        return self._plugin_ref"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_4ef9cc4c","line":109,"range":{"start_line":107,"start_character":8,"end_line":109,"end_character":48},"in_reply_to":"7a77a97e_acb510ef","updated":"2016-11-16 17:44:18.000000000","message":"I\u0027ll look into it.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f3c6ca4dfba555c0405cffb968325b158a52bb81","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        return cls._instance"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __init__(self):"},{"line_number":57,"context_line":"        self._plugin \u003d directory.get_plugin()"},{"line_number":58,"context_line":"        auth \u003d ks_loading.load_auth_from_conf_options(cfg.CONF, \u0027nova\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        session \u003d ks_loading.load_session_from_conf_options("}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_c370fca6","line":57,"updated":"2016-11-18 10:43:29.000000000","message":"chicken-and-egg with NeutronDbPluginV2?","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d482b6f7523858797e0ef4d333853a93a6ce696a","unresolved":false,"context_lines":[{"line_number":54,"context_line":"        return cls._instance"},{"line_number":55,"context_line":""},{"line_number":56,"context_line":"    def __init__(self):"},{"line_number":57,"context_line":"        self._plugin \u003d directory.get_plugin()"},{"line_number":58,"context_line":"        auth \u003d ks_loading.load_auth_from_conf_options(cfg.CONF, \u0027nova\u0027)"},{"line_number":59,"context_line":""},{"line_number":60,"context_line":"        session \u003d ks_loading.load_session_from_conf_options("}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_52e3c3d8","line":57,"in_reply_to":"7a77a97e_c370fca6","updated":"2016-11-18 17:42:11.000000000","message":"I can\u0027t see any do you? As a matter of fact I was able to solve arosen\u0027s note below. I could get rid of the variable entirely I think","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"}],"neutron/objects/qos/rule_type.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from neutron_lib.plugins import directory"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_versionedobjects import base as obj_base"},{"line_number":16,"context_line":"from oslo_versionedobjects import fields as obj_fields"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_0c928457","line":14,"updated":"2016-11-16 16:39:00.000000000","message":"(nit) newline?","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":11,"context_line":"#    under the License."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"from neutron_lib.plugins import directory"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from oslo_versionedobjects import base as obj_base"},{"line_number":16,"context_line":"from oslo_versionedobjects import fields as obj_fields"},{"line_number":17,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_8e992422","line":14,"in_reply_to":"7a77a97e_0c928457","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/pecan_wsgi/hooks/ownership_validation.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib.plugins import directory"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from pecan import hooks"},{"line_number":19,"context_line":"import webob"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_ec7d481d","line":17,"updated":"2016-11-16 16:39:00.000000000","message":"(nit) newline?","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib.plugins import directory"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from pecan import hooks"},{"line_number":19,"context_line":"import webob"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_cea31c4e","line":17,"in_reply_to":"7a77a97e_ec7d481d","updated":"2016-11-16 17:44:18.000000000","message":"sorry","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/plugins/ml2/drivers/l2pop/mech_driver.py":[{"author":{"_account_id":16934,"name":"Martin Roy","email":"lindycoder@gmail.com","username":"lindycoder"},"change_message_id":"b55420b221992df504d8cdce5512c21e19c6e38e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib import constants as const"},{"line_number":17,"context_line":"from neutron_lib import exceptions"},{"line_number":18,"context_line":"from neutron_lib.plugins import directory"},{"line_number":19,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_e093eb4d","line":16,"range":{"start_line":16,"start_character":34,"end_line":16,"end_character":42},"updated":"2016-11-14 22:58:59.000000000","message":"here also, \"as\" not required anymore","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a16e4c4ace17a43d7ae5645633a5768d5b560d5b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"#    License for the specific language governing permissions and limitations"},{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"from neutron_lib import constants as const"},{"line_number":17,"context_line":"from neutron_lib import exceptions"},{"line_number":18,"context_line":"from neutron_lib.plugins import directory"},{"line_number":19,"context_line":"from oslo_config import cfg"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_31aa97d5","line":16,"range":{"start_line":16,"start_character":34,"end_line":16,"end_character":42},"in_reply_to":"7a77a97e_e093eb4d","updated":"2016-11-15 00:05:21.000000000","message":"as said before","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"}],"neutron/policy.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"c3207eb7019fbb078b376be309e500453fff16e1","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            # having a way to map resources to plugins so to make this"},{"line_number":253,"context_line":"            # check more general"},{"line_number":254,"context_line":"            # NOTE(ihrachys): if import is put in global, circular"},{"line_number":255,"context_line":"            # import failure occurs"},{"line_number":256,"context_line":"            manager \u003d importutils.import_module(\u0027neutron.manager\u0027)"},{"line_number":257,"context_line":"            f \u003d getattr(manager.NeutronManager.get_instance().plugin,"},{"line_number":258,"context_line":"                        \u0027get_%s\u0027 % parent_res)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_85b04945","side":"PARENT","line":255,"updated":"2016-11-16 03:38:19.000000000","message":"yay!","commit_id":"0d841d2d60c069744475a0e48d53b7b87d9aa123"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c0551dca8cec2969328dd4128154ee0eab61c61","unresolved":false,"context_lines":[{"line_number":252,"context_line":"            # having a way to map resources to plugins so to make this"},{"line_number":253,"context_line":"            # check more general"},{"line_number":254,"context_line":"            # NOTE(ihrachys): if import is put in global, circular"},{"line_number":255,"context_line":"            # import failure occurs"},{"line_number":256,"context_line":"            manager \u003d importutils.import_module(\u0027neutron.manager\u0027)"},{"line_number":257,"context_line":"            f \u003d getattr(manager.NeutronManager.get_instance().plugin,"},{"line_number":258,"context_line":"                        \u0027get_%s\u0027 % parent_res)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_884060a7","side":"PARENT","line":255,"in_reply_to":"7a77a97e_85b04945","updated":"2016-11-16 04:43:23.000000000","message":"yay indeed!! STOP ALL THE NONSENSE!","commit_id":"0d841d2d60c069744475a0e48d53b7b87d9aa123"}],"neutron/service.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"def _get_plugins_workers():"},{"line_number":187,"context_line":"    # NOTE(twilson) get_service_plugins also returns the core plugin"},{"line_number":188,"context_line":"    plugins \u003d directory.get_unique_plugins()"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    # TODO(twilson) Instead of defaulting here, come up with a good way to"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_0c3c442e","line":187,"range":{"start_line":187,"start_character":20,"end_line":187,"end_character":39},"updated":"2016-11-16 16:39:00.000000000","message":"should it say get_unique_plugins?","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":184,"context_line":""},{"line_number":185,"context_line":""},{"line_number":186,"context_line":"def _get_plugins_workers():"},{"line_number":187,"context_line":"    # NOTE(twilson) get_service_plugins also returns the core plugin"},{"line_number":188,"context_line":"    plugins \u003d directory.get_unique_plugins()"},{"line_number":189,"context_line":""},{"line_number":190,"context_line":"    # TODO(twilson) Instead of defaulting here, come up with a good way to"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_2e9570dd","line":187,"range":{"start_line":187,"start_character":20,"end_line":187,"end_character":39},"in_reply_to":"7a77a97e_0c3c442e","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/tests/base.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":376,"context_line":"    def setup_test_directory_instance(self):"},{"line_number":377,"context_line":"        \"\"\"Give a private copy of the directory to each test.\"\"\""},{"line_number":378,"context_line":"        self._plugin_directory \u003d directory._PluginDirectory()"},{"line_number":379,"context_line":"        mock.patch.object(directory, \u0027_get_plugin_directory\u0027,"},{"line_number":380,"context_line":"                          return_value\u003dself._plugin_directory).start()"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def setup_config(self, args\u003dNone):"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_acd270d0","line":379,"updated":"2016-11-16 16:39:00.000000000","message":"(No action required) looks like we override a private method and a private class in the library. Since subprojects may need to do the same, I guess we want to ship a fixture with neutron-lib to mock it properly.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":376,"context_line":"    def setup_test_directory_instance(self):"},{"line_number":377,"context_line":"        \"\"\"Give a private copy of the directory to each test.\"\"\""},{"line_number":378,"context_line":"        self._plugin_directory \u003d directory._PluginDirectory()"},{"line_number":379,"context_line":"        mock.patch.object(directory, \u0027_get_plugin_directory\u0027,"},{"line_number":380,"context_line":"                          return_value\u003dself._plugin_directory).start()"},{"line_number":381,"context_line":""},{"line_number":382,"context_line":"    def setup_config(self, args\u003dNone):"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_6e64c821","line":379,"in_reply_to":"7a77a97e_acd270d0","updated":"2016-11-16 17:44:18.000000000","message":"good point.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/tests/functional/pecan_wsgi/test_controllers.py":[{"author":{"_account_id":16934,"name":"Martin Roy","email":"lindycoder@gmail.com","username":"lindycoder"},"change_message_id":"b55420b221992df504d8cdce5512c21e19c6e38e","unresolved":false,"context_lines":[{"line_number":13,"context_line":"import uuid"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":"from neutron_lib import constants as n_const"},{"line_number":17,"context_line":"from neutron_lib.plugins import directory"},{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":"from oslo_db import exception as db_exc"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_606a7b1c","line":16,"range":{"start_line":16,"start_character":37,"end_line":16,"end_character":44},"updated":"2016-11-14 22:58:59.000000000","message":"Here too, \"as\" not required anymore","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a16e4c4ace17a43d7ae5645633a5768d5b560d5b","unresolved":false,"context_lines":[{"line_number":13,"context_line":"import uuid"},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"import mock"},{"line_number":16,"context_line":"from neutron_lib import constants as n_const"},{"line_number":17,"context_line":"from neutron_lib.plugins import directory"},{"line_number":18,"context_line":"from oslo_config import cfg"},{"line_number":19,"context_line":"from oslo_db import exception as db_exc"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_51af13e3","line":16,"range":{"start_line":16,"start_character":37,"end_line":16,"end_character":44},"in_reply_to":"7a77a97e_606a7b1c","updated":"2016-11-15 00:05:21.000000000","message":"ditto","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"}],"neutron/tests/functional/pecan_wsgi/test_functional.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"c3207eb7019fbb078b376be309e500453fff16e1","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class PecanFunctionalTest(testlib_api.SqlTestCase):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def setUp(self, service_plugins\u003dNone, extensions\u003dNone):"},{"line_number":34,"context_line":"        self.setup_coreplugin(\u0027ml2\u0027, False)"},{"line_number":35,"context_line":"        super(PecanFunctionalTest, self).setUp()"},{"line_number":36,"context_line":"        self.addCleanup(exts.PluginAwareExtensionManager.clear_instance)"},{"line_number":37,"context_line":"        self.addCleanup(set_config, {}, overwrite\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_457d516d","line":34,"updated":"2016-11-16 03:38:19.000000000","message":"can you please use the load_plugins\u003dFalse version of this just so it\u0027s apparent what False is doing?","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c0551dca8cec2969328dd4128154ee0eab61c61","unresolved":false,"context_lines":[{"line_number":31,"context_line":"class PecanFunctionalTest(testlib_api.SqlTestCase):"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"    def setUp(self, service_plugins\u003dNone, extensions\u003dNone):"},{"line_number":34,"context_line":"        self.setup_coreplugin(\u0027ml2\u0027, False)"},{"line_number":35,"context_line":"        super(PecanFunctionalTest, self).setUp()"},{"line_number":36,"context_line":"        self.addCleanup(exts.PluginAwareExtensionManager.clear_instance)"},{"line_number":37,"context_line":"        self.addCleanup(set_config, {}, overwrite\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_a83b5c37","line":34,"in_reply_to":"7a77a97e_457d516d","updated":"2016-11-16 04:43:23.000000000","message":"for you anything!","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"}],"neutron/tests/functional/test_server.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"c3207eb7019fbb078b376be309e500453fff16e1","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def setUp(self):"},{"line_number":226,"context_line":"        super(TestRPCServer, self).setUp()"},{"line_number":227,"context_line":"        self.setup_coreplugin(\u0027ml2\u0027, False)"},{"line_number":228,"context_line":"        self._plugin_patcher \u003d mock.patch(TARGET_PLUGIN, autospec\u003dTrue)"},{"line_number":229,"context_line":"        self.plugin \u003d self._plugin_patcher.start()"},{"line_number":230,"context_line":"        self.plugin.return_value.rpc_workers_supported \u003d True"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_65808d47","line":227,"updated":"2016-11-16 03:38:19.000000000","message":"ditto","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c0551dca8cec2969328dd4128154ee0eab61c61","unresolved":false,"context_lines":[{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def setUp(self):"},{"line_number":226,"context_line":"        super(TestRPCServer, self).setUp()"},{"line_number":227,"context_line":"        self.setup_coreplugin(\u0027ml2\u0027, False)"},{"line_number":228,"context_line":"        self._plugin_patcher \u003d mock.patch(TARGET_PLUGIN, autospec\u003dTrue)"},{"line_number":229,"context_line":"        self.plugin \u003d self._plugin_patcher.start()"},{"line_number":230,"context_line":"        self.plugin.return_value.rpc_workers_supported \u003d True"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_28166ca7","line":227,"in_reply_to":"7a77a97e_65808d47","updated":"2016-11-16 04:43:23.000000000","message":"certainly","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"}],"neutron/tests/unit/api/rpc/handlers/test_dhcp_rpc.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def setUp(self):"},{"line_number":35,"context_line":"        super(TestDhcpRpcCallback, self).setUp()"},{"line_number":36,"context_line":"        self.plugin \u003d mock.MagicMock()"},{"line_number":37,"context_line":"        directory.add_plugin(\u0027CORE\u0027, self.plugin)"},{"line_number":38,"context_line":"        self.callbacks \u003d dhcp_rpc.DhcpRpcCallback()"},{"line_number":39,"context_line":"        self.log_p \u003d mock.patch(\u0027neutron.api.rpc.handlers.dhcp_rpc.LOG\u0027)"},{"line_number":40,"context_line":"        self.log \u003d self.log_p.start()"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_7f51dc0d","line":37,"range":{"start_line":37,"start_character":29,"end_line":37,"end_character":35},"updated":"2016-11-16 16:39:00.000000000","message":"nit: it would probably better to extract it from neutron-lib","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":34,"context_line":"    def setUp(self):"},{"line_number":35,"context_line":"        super(TestDhcpRpcCallback, self).setUp()"},{"line_number":36,"context_line":"        self.plugin \u003d mock.MagicMock()"},{"line_number":37,"context_line":"        directory.add_plugin(\u0027CORE\u0027, self.plugin)"},{"line_number":38,"context_line":"        self.callbacks \u003d dhcp_rpc.DhcpRpcCallback()"},{"line_number":39,"context_line":"        self.log_p \u003d mock.patch(\u0027neutron.api.rpc.handlers.dhcp_rpc.LOG\u0027)"},{"line_number":40,"context_line":"        self.log \u003d self.log_p.start()"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_0e7434cd","line":37,"range":{"start_line":37,"start_character":29,"end_line":37,"end_character":35},"in_reply_to":"7a77a97e_7f51dc0d","updated":"2016-11-16 17:44:18.000000000","message":"I have the constant, I was lazy not to use it.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/tests/unit/api/v2/test_base.py":[{"author":{"_account_id":16934,"name":"Martin Roy","email":"lindycoder@gmail.com","username":"lindycoder"},"change_message_id":"b55420b221992df504d8cdce5512c21e19c6e38e","unresolved":false,"context_lines":[{"line_number":1500,"context_line":"        directory.add_plugin(constants.CORE, self.plugin)"},{"line_number":1501,"context_line":""},{"line_number":1502,"context_line":"        # Instantiate mock plugin and enable the V2attributes extension"},{"line_number":1503,"context_line":"        directory.get_plugin().supported_extension_aliases \u003d ("},{"line_number":1504,"context_line":"            [\"v2attrs\"])"},{"line_number":1505,"context_line":""},{"line_number":1506,"context_line":"        api \u003d router.APIRouter()"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_c0626f16","line":1503,"range":{"start_line":1503,"start_character":8,"end_line":1503,"end_character":30},"updated":"2016-11-14 22:58:59.000000000","message":"line 1500 you set the CORE plugin, knowing that get_plugin() without params return the CORE plugin it kinda make sense... wouldn\u0027t it be more forward to simply use \"self.plugin\" here?","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"a16e4c4ace17a43d7ae5645633a5768d5b560d5b","unresolved":false,"context_lines":[{"line_number":1500,"context_line":"        directory.add_plugin(constants.CORE, self.plugin)"},{"line_number":1501,"context_line":""},{"line_number":1502,"context_line":"        # Instantiate mock plugin and enable the V2attributes extension"},{"line_number":1503,"context_line":"        directory.get_plugin().supported_extension_aliases \u003d ("},{"line_number":1504,"context_line":"            [\"v2attrs\"])"},{"line_number":1505,"context_line":""},{"line_number":1506,"context_line":"        api \u003d router.APIRouter()"}],"source_content_type":"text/x-python","patch_set":25,"id":"7a77a97e_71ac0fee","line":1503,"range":{"start_line":1503,"start_character":8,"end_line":1503,"end_character":30},"in_reply_to":"7a77a97e_c0626f16","updated":"2016-11-15 00:05:21.000000000","message":"I am tweaking this actually","commit_id":"cf1b3d58dee767e64f4f5ef7766aa0e99abc5f33"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"c3207eb7019fbb078b376be309e500453fff16e1","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        # Create the default configurations"},{"line_number":102,"context_line":"        self.config_parse()"},{"line_number":103,"context_line":"        # Update the plugin"},{"line_number":104,"context_line":"        self.setup_coreplugin(plugin, False)"},{"line_number":105,"context_line":"        cfg.CONF.set_override(\u0027allow_pagination\u0027, True)"},{"line_number":106,"context_line":"        cfg.CONF.set_override(\u0027allow_sorting\u0027, True)"},{"line_number":107,"context_line":"        self._plugin_patcher \u003d mock.patch(plugin, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_e5b57d31","line":104,"updated":"2016-11-16 03:38:19.000000000","message":":)","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c0551dca8cec2969328dd4128154ee0eab61c61","unresolved":false,"context_lines":[{"line_number":101,"context_line":"        # Create the default configurations"},{"line_number":102,"context_line":"        self.config_parse()"},{"line_number":103,"context_line":"        # Update the plugin"},{"line_number":104,"context_line":"        self.setup_coreplugin(plugin, False)"},{"line_number":105,"context_line":"        cfg.CONF.set_override(\u0027allow_pagination\u0027, True)"},{"line_number":106,"context_line":"        cfg.CONF.set_override(\u0027allow_sorting\u0027, True)"},{"line_number":107,"context_line":"        self._plugin_patcher \u003d mock.patch(plugin, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_88278011","line":104,"in_reply_to":"7a77a97e_e5b57d31","updated":"2016-11-16 04:43:23.000000000","message":"I got your message.","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"c3207eb7019fbb078b376be309e500453fff16e1","unresolved":false,"context_lines":[{"line_number":1160,"context_line":"        self.useFixture(tools.AttributeMapMemento())"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"        self.config_parse()"},{"line_number":1163,"context_line":"        self.setup_coreplugin(plugin, False)"},{"line_number":1164,"context_line":""},{"line_number":1165,"context_line":"        self._plugin_patcher \u003d mock.patch(plugin, autospec\u003dTrue)"},{"line_number":1166,"context_line":"        self.plugin \u003d self._plugin_patcher.start()"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_05835957","line":1163,"updated":"2016-11-16 03:38:19.000000000","message":":(","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c0551dca8cec2969328dd4128154ee0eab61c61","unresolved":false,"context_lines":[{"line_number":1160,"context_line":"        self.useFixture(tools.AttributeMapMemento())"},{"line_number":1161,"context_line":""},{"line_number":1162,"context_line":"        self.config_parse()"},{"line_number":1163,"context_line":"        self.setup_coreplugin(plugin, False)"},{"line_number":1164,"context_line":""},{"line_number":1165,"context_line":"        self._plugin_patcher \u003d mock.patch(plugin, autospec\u003dTrue)"},{"line_number":1166,"context_line":"        self.plugin \u003d self._plugin_patcher.start()"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_e81c74c3","line":1163,"in_reply_to":"7a77a97e_05835957","updated":"2016-11-16 04:43:23.000000000","message":"cheer up!","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"},{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"c3207eb7019fbb078b376be309e500453fff16e1","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"        self.config_parse()"},{"line_number":1493,"context_line":""},{"line_number":1494,"context_line":"        # Update the plugin and extensions path"},{"line_number":1495,"context_line":"        self.setup_coreplugin(plugin, False)"},{"line_number":1496,"context_line":"        cfg.CONF.set_override(\u0027api_extensions_path\u0027, EXTDIR)"},{"line_number":1497,"context_line":""},{"line_number":1498,"context_line":"        self._plugin_patcher \u003d mock.patch(plugin, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_25869565","line":1495,"updated":"2016-11-16 03:38:19.000000000","message":":)","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c0551dca8cec2969328dd4128154ee0eab61c61","unresolved":false,"context_lines":[{"line_number":1492,"context_line":"        self.config_parse()"},{"line_number":1493,"context_line":""},{"line_number":1494,"context_line":"        # Update the plugin and extensions path"},{"line_number":1495,"context_line":"        self.setup_coreplugin(plugin, False)"},{"line_number":1496,"context_line":"        cfg.CONF.set_override(\u0027api_extensions_path\u0027, EXTDIR)"},{"line_number":1497,"context_line":""},{"line_number":1498,"context_line":"        self._plugin_patcher \u003d mock.patch(plugin, autospec\u003dTrue)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_287d8ce7","line":1495,"in_reply_to":"7a77a97e_25869565","updated":"2016-11-16 04:43:23.000000000","message":"better!","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"}],"neutron/tests/unit/core_extensions/test_qos.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f3c6ca4dfba555c0405cffb968325b158a52bb81","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    def _mock_plugin_loaded(self, plugin_loaded):"},{"line_number":48,"context_line":"        plugins \u003d {}"},{"line_number":49,"context_line":"        if plugin_loaded:"},{"line_number":50,"context_line":"            plugins[plugin_constants.QOS] \u003d None"},{"line_number":51,"context_line":"        return mock.patch(\u0027neutron_lib.plugins.directory.get_plugins\u0027,"},{"line_number":52,"context_line":"                          return_value\u003dplugins)"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_0324b4c2","line":50,"range":{"start_line":50,"start_character":44,"end_line":50,"end_character":48},"updated":"2016-11-18 10:43:29.000000000","message":"i guess it\u0027s better to use something not None?  eg. object()","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d482b6f7523858797e0ef4d333853a93a6ce696a","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    def _mock_plugin_loaded(self, plugin_loaded):"},{"line_number":48,"context_line":"        plugins \u003d {}"},{"line_number":49,"context_line":"        if plugin_loaded:"},{"line_number":50,"context_line":"            plugins[plugin_constants.QOS] \u003d None"},{"line_number":51,"context_line":"        return mock.patch(\u0027neutron_lib.plugins.directory.get_plugins\u0027,"},{"line_number":52,"context_line":"                          return_value\u003dplugins)"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_b2d417ec","line":50,"range":{"start_line":50,"start_character":44,"end_line":50,"end_character":48},"in_reply_to":"7a77a97e_0324b4c2","updated":"2016-11-18 17:42:11.000000000","message":"I haven\u0027t touched this code, I don\u0027t feel like I have to change it.","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"f7fb8ccdffdb1e39b3f2d692ef94590bbf423e96","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    def _mock_plugin_loaded(self, plugin_loaded):"},{"line_number":48,"context_line":"        plugins \u003d {}"},{"line_number":49,"context_line":"        if plugin_loaded:"},{"line_number":50,"context_line":"            plugins[plugin_constants.QOS] \u003d None"},{"line_number":51,"context_line":"        return mock.patch(\u0027neutron_lib.plugins.directory.get_plugins\u0027,"},{"line_number":52,"context_line":"                          return_value\u003dplugins)"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_1cf66bd7","line":50,"range":{"start_line":50,"start_character":44,"end_line":50,"end_character":48},"in_reply_to":"7a77a97e_1cdaeb78","updated":"2016-11-22 06:20:19.000000000","message":"I can see your concern, but I\u0027d rather have this handled as a separate patch.","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"9bc03ff70ecc9729d6092a2a7af1e54fbd2063ef","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    def _mock_plugin_loaded(self, plugin_loaded):"},{"line_number":48,"context_line":"        plugins \u003d {}"},{"line_number":49,"context_line":"        if plugin_loaded:"},{"line_number":50,"context_line":"            plugins[plugin_constants.QOS] \u003d None"},{"line_number":51,"context_line":"        return mock.patch(\u0027neutron_lib.plugins.directory.get_plugins\u0027,"},{"line_number":52,"context_line":"                          return_value\u003dplugins)"},{"line_number":53,"context_line":""}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_1cdaeb78","line":50,"range":{"start_line":50,"start_character":44,"end_line":50,"end_character":48},"in_reply_to":"7a77a97e_b2d417ec","updated":"2016-11-22 06:17:17.000000000","message":"if we allow None,\n\"type in directory.get_plugins()\" and \"bool(directory.get_plugin(type))\" behaves differently.\ni concern it can bite us later.","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"}],"neutron/tests/unit/db/test_db_base_plugin_v2.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"c3207eb7019fbb078b376be309e500453fff16e1","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            plugin \u003d DB_PLUGIN_KLASS"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        # Update the plugin"},{"line_number":123,"context_line":"        self.setup_coreplugin(plugin, False)"},{"line_number":124,"context_line":"        cfg.CONF.set_override("},{"line_number":125,"context_line":"            \u0027service_plugins\u0027,"},{"line_number":126,"context_line":"            [test_lib.test_config.get(key, default)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_c5ba4123","line":123,"updated":"2016-11-16 03:38:19.000000000","message":":D","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c0551dca8cec2969328dd4128154ee0eab61c61","unresolved":false,"context_lines":[{"line_number":120,"context_line":"            plugin \u003d DB_PLUGIN_KLASS"},{"line_number":121,"context_line":""},{"line_number":122,"context_line":"        # Update the plugin"},{"line_number":123,"context_line":"        self.setup_coreplugin(plugin, False)"},{"line_number":124,"context_line":"        cfg.CONF.set_override("},{"line_number":125,"context_line":"            \u0027service_plugins\u0027,"},{"line_number":126,"context_line":"            [test_lib.test_config.get(key, default)"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_c87898f5","line":123,"in_reply_to":"7a77a97e_c5ba4123","updated":"2016-11-16 04:43:23.000000000","message":"That\u0027s how I like you!","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"}],"neutron/tests/unit/db/test_l3_dvr_db.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":"from neutron_lib import constants as l3_const"},{"line_number":18,"context_line":"from neutron_lib import exceptions"},{"line_number":19,"context_line":"from neutron_lib.plugins import directory"},{"line_number":20,"context_line":"from oslo_utils import uuidutils"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_bf2a942a","line":17,"range":{"start_line":17,"start_character":37,"end_line":17,"end_character":45},"updated":"2016-11-16 16:39:00.000000000","message":"(No action required) /me wonders what\u0027s so L3 about it... :-x","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":"from neutron_lib import constants as l3_const"},{"line_number":18,"context_line":"from neutron_lib import exceptions"},{"line_number":19,"context_line":"from neutron_lib.plugins import directory"},{"line_number":20,"context_line":"from oslo_utils import uuidutils"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_6e4be887","line":17,"range":{"start_line":17,"start_character":37,"end_line":17,"end_character":45},"in_reply_to":"7a77a97e_bf2a942a","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/tests/unit/extensions/base.py":[{"author":{"_account_id":7787,"name":"Kevin Benton","email":"kevin@benton.pub","username":"blak111"},"change_message_id":"c3207eb7019fbb078b376be309e500453fff16e1","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        self.config_parse()"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # just stubbing core plugin with plugin"},{"line_number":60,"context_line":"        self.setup_coreplugin(plugin, False)"},{"line_number":61,"context_line":"        cfg.CONF.set_override(\u0027core_plugin\u0027, plugin)"},{"line_number":62,"context_line":"        if service_type:"},{"line_number":63,"context_line":"            cfg.CONF.set_override(\u0027service_plugins\u0027, [plugin])"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_8597698f","line":60,"updated":"2016-11-16 03:38:19.000000000","message":":/","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"8c0551dca8cec2969328dd4128154ee0eab61c61","unresolved":false,"context_lines":[{"line_number":57,"context_line":"        self.config_parse()"},{"line_number":58,"context_line":""},{"line_number":59,"context_line":"        # just stubbing core plugin with plugin"},{"line_number":60,"context_line":"        self.setup_coreplugin(plugin, False)"},{"line_number":61,"context_line":"        cfg.CONF.set_override(\u0027core_plugin\u0027, plugin)"},{"line_number":62,"context_line":"        if service_type:"},{"line_number":63,"context_line":"            cfg.CONF.set_override(\u0027service_plugins\u0027, [plugin])"}],"source_content_type":"text/x-python","patch_set":30,"id":"7a77a97e_e8739413","line":60,"in_reply_to":"7a77a97e_8597698f","updated":"2016-11-16 04:43:23.000000000","message":"there there","commit_id":"8581f043630fc1a43418fce7e089c3fab6a2526a"}],"neutron/tests/unit/extensions/extensionattribute.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d12c56dbce154e51b0596492e51755b93aa8b086","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import abc"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron_lib.plugins import directory"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron.api import extensions"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_fd26d4cc","line":17,"updated":"2016-11-16 17:18:06.000000000","message":"nit: blank line","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import abc"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron_lib.plugins import directory"},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from neutron.api import extensions"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_ee5ff83e","line":17,"in_reply_to":"7a77a97e_fd26d4cc","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"2b9657366c5df8cd3804965412479b02ff13566c","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import abc"},{"line_number":17,"context_line":"from neutron_lib.plugins import directory"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron.api import extensions"},{"line_number":20,"context_line":"from neutron.api.v2 import base"}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_24d0d3f5","line":17,"updated":"2016-11-18 11:45:38.000000000","message":"well actually, abc is a stdlib and hence should have its own section...","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d482b6f7523858797e0ef4d333853a93a6ce696a","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#    under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import abc"},{"line_number":17,"context_line":"from neutron_lib.plugins import directory"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"from neutron.api import extensions"},{"line_number":20,"context_line":"from neutron.api.v2 import base"}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_12d6abf0","line":17,"in_reply_to":"7a77a97e_24d0d3f5","updated":"2016-11-18 17:42:11.000000000","message":"Ok, ok.","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"}],"neutron/tests/unit/extensions/test_providernet.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        instance.get_networks_count.return_value \u003d 1"},{"line_number":71,"context_line":"        # Instantiate mock plugin and enable the \u0027provider\u0027 extension"},{"line_number":72,"context_line":"        instance.supported_extension_aliases \u003d [\"provider\"]"},{"line_number":73,"context_line":"        directory.add_plugin(\u0027CORE\u0027, instance)"},{"line_number":74,"context_line":"        ext_mgr \u003d ProviderExtensionManager()"},{"line_number":75,"context_line":"        self.ext_mdw \u003d test_extensions.setup_extensions_middleware(ext_mgr)"},{"line_number":76,"context_line":"        self.addCleanup(self._plugin_patcher.stop)"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_7f08fc91","line":73,"range":{"start_line":73,"start_character":29,"end_line":73,"end_character":35},"updated":"2016-11-16 16:39:00.000000000","message":"(nit) we could use a constant here","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        instance.get_networks_count.return_value \u003d 1"},{"line_number":71,"context_line":"        # Instantiate mock plugin and enable the \u0027provider\u0027 extension"},{"line_number":72,"context_line":"        instance.supported_extension_aliases \u003d [\"provider\"]"},{"line_number":73,"context_line":"        directory.add_plugin(\u0027CORE\u0027, instance)"},{"line_number":74,"context_line":"        ext_mgr \u003d ProviderExtensionManager()"},{"line_number":75,"context_line":"        self.ext_mdw \u003d test_extensions.setup_extensions_middleware(ext_mgr)"},{"line_number":76,"context_line":"        self.addCleanup(self._plugin_patcher.stop)"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_2e5ad04f","line":73,"range":{"start_line":73,"start_character":29,"end_line":73,"end_character":35},"in_reply_to":"7a77a97e_7f08fc91","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f3c6ca4dfba555c0405cffb968325b158a52bb81","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        # Ensure Quota checks never fail because of mock"},{"line_number":70,"context_line":"        instance \u003d self.plugin.return_value"},{"line_number":71,"context_line":"        instance.get_networks_count.return_value \u003d 1"},{"line_number":72,"context_line":"        # Instantiate mock plugin and enable the \u0027provider\u0027 extension"},{"line_number":73,"context_line":"        instance.supported_extension_aliases \u003d [\"provider\"]"},{"line_number":74,"context_line":"        directory.add_plugin(constants.CORE, instance)"},{"line_number":75,"context_line":"        ext_mgr \u003d ProviderExtensionManager()"}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_f5992fc5","line":72,"range":{"start_line":72,"start_character":10,"end_line":72,"end_character":21},"updated":"2016-11-18 10:43:29.000000000","message":"Register?","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d482b6f7523858797e0ef4d333853a93a6ce696a","unresolved":false,"context_lines":[{"line_number":69,"context_line":"        # Ensure Quota checks never fail because of mock"},{"line_number":70,"context_line":"        instance \u003d self.plugin.return_value"},{"line_number":71,"context_line":"        instance.get_networks_count.return_value \u003d 1"},{"line_number":72,"context_line":"        # Instantiate mock plugin and enable the \u0027provider\u0027 extension"},{"line_number":73,"context_line":"        instance.supported_extension_aliases \u003d [\"provider\"]"},{"line_number":74,"context_line":"        directory.add_plugin(constants.CORE, instance)"},{"line_number":75,"context_line":"        ext_mgr \u003d ProviderExtensionManager()"}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_d2f6f38d","line":72,"range":{"start_line":72,"start_character":10,"end_line":72,"end_character":21},"in_reply_to":"7a77a97e_f5992fc5","updated":"2016-11-18 17:42:11.000000000","message":"Done","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"}],"neutron/tests/unit/extensions/test_timestamp.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def setup_coreplugin(self, core_plugin\u003dNone, load_plugins\u003dTrue):"},{"line_number":64,"context_line":"        super(TimeStampChangedsinceTestCase, self).setup_coreplugin("},{"line_number":65,"context_line":"            self.plugin, False)"},{"line_number":66,"context_line":"        self.patched_default_svc_plugins.return_value \u003d [\u0027timestamp\u0027]"},{"line_number":67,"context_line":"        manager.init()"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_5f1340b8","line":65,"updated":"2016-11-16 16:39:00.000000000","message":"(nit) you could probably pass the argument with a keyword to make it clear what it means","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":62,"context_line":""},{"line_number":63,"context_line":"    def setup_coreplugin(self, core_plugin\u003dNone, load_plugins\u003dTrue):"},{"line_number":64,"context_line":"        super(TimeStampChangedsinceTestCase, self).setup_coreplugin("},{"line_number":65,"context_line":"            self.plugin, False)"},{"line_number":66,"context_line":"        self.patched_default_svc_plugins.return_value \u003d [\u0027timestamp\u0027]"},{"line_number":67,"context_line":"        manager.init()"},{"line_number":68,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_6e320812","line":65,"in_reply_to":"7a77a97e_5f1340b8","updated":"2016-11-16 17:44:18.000000000","message":"I missed this one. Good catch.","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/tests/unit/plugins/ml2/drivers/l2pop/test_mech_driver.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        # HOST4 should get flood entries for HOST1 and HOST2"},{"line_number":278,"context_line":"        router \u003d self._create_ha_router()"},{"line_number":279,"context_line":"        service_plugins \u003d directory.get_plugins()"},{"line_number":280,"context_line":"        service_plugins[constants.L3] \u003d self.plugin"},{"line_number":281,"context_line":"        with self.subnet(network\u003dself._network, enable_dhcp\u003dFalse) as snet, \\"},{"line_number":282,"context_line":"            mock.patch(\u0027neutron_lib.plugins.directory.get_plugins\u0027,"},{"line_number":283,"context_line":"                       return_value\u003dservice_plugins):"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_7fcb9c1e","line":280,"range":{"start_line":280,"start_character":8,"end_line":280,"end_character":51},"updated":"2016-11-16 16:39:00.000000000","message":"shouldn\u0027t we register plugins using add_plugin API now?","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":277,"context_line":"        # HOST4 should get flood entries for HOST1 and HOST2"},{"line_number":278,"context_line":"        router \u003d self._create_ha_router()"},{"line_number":279,"context_line":"        service_plugins \u003d directory.get_plugins()"},{"line_number":280,"context_line":"        service_plugins[constants.L3] \u003d self.plugin"},{"line_number":281,"context_line":"        with self.subnet(network\u003dself._network, enable_dhcp\u003dFalse) as snet, \\"},{"line_number":282,"context_line":"            mock.patch(\u0027neutron_lib.plugins.directory.get_plugins\u0027,"},{"line_number":283,"context_line":"                       return_value\u003dservice_plugins):"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_ee2618cd","line":280,"range":{"start_line":280,"start_character":8,"end_line":280,"end_character":51},"in_reply_to":"7a77a97e_7fcb9c1e","updated":"2016-11-16 17:44:18.000000000","message":"let me revise","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":313,"context_line":"        router \u003d self._create_ha_router()"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        service_plugins \u003d directory.get_plugins()"},{"line_number":316,"context_line":"        service_plugins[constants.L3] \u003d self.plugin"},{"line_number":317,"context_line":"        with self.subnet(network\u003dself._network, enable_dhcp\u003dFalse) as snet, \\"},{"line_number":318,"context_line":"            mock.patch(\u0027neutron_lib.plugins.directory.get_plugins\u0027,"},{"line_number":319,"context_line":"                       return_value\u003dservice_plugins):"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_5fefc086","line":316,"range":{"start_line":316,"start_character":8,"end_line":316,"end_character":51},"updated":"2016-11-16 16:39:00.000000000","message":"ditto","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":313,"context_line":"        router \u003d self._create_ha_router()"},{"line_number":314,"context_line":""},{"line_number":315,"context_line":"        service_plugins \u003d directory.get_plugins()"},{"line_number":316,"context_line":"        service_plugins[constants.L3] \u003d self.plugin"},{"line_number":317,"context_line":"        with self.subnet(network\u003dself._network, enable_dhcp\u003dFalse) as snet, \\"},{"line_number":318,"context_line":"            mock.patch(\u0027neutron_lib.plugins.directory.get_plugins\u0027,"},{"line_number":319,"context_line":"                       return_value\u003dservice_plugins):"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_2e31f005","line":316,"range":{"start_line":316,"start_character":8,"end_line":316,"end_character":51},"in_reply_to":"7a77a97e_5fefc086","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        router \u003d self._create_ha_router()"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        service_plugins \u003d directory.get_plugins()"},{"line_number":352,"context_line":"        service_plugins[constants.L3] \u003d self.plugin"},{"line_number":353,"context_line":"        with self.subnet(network\u003dself._network, enable_dhcp\u003dFalse) as snet, \\"},{"line_number":354,"context_line":"            mock.patch(\u0027neutron_lib.plugins.directory.get_plugins\u0027,"},{"line_number":355,"context_line":"                       return_value\u003dservice_plugins):"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_df03d040","line":352,"range":{"start_line":352,"start_character":8,"end_line":352,"end_character":51},"updated":"2016-11-16 16:39:00.000000000","message":"ditto","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":349,"context_line":"        router \u003d self._create_ha_router()"},{"line_number":350,"context_line":""},{"line_number":351,"context_line":"        service_plugins \u003d directory.get_plugins()"},{"line_number":352,"context_line":"        service_plugins[constants.L3] \u003d self.plugin"},{"line_number":353,"context_line":"        with self.subnet(network\u003dself._network, enable_dhcp\u003dFalse) as snet, \\"},{"line_number":354,"context_line":"            mock.patch(\u0027neutron_lib.plugins.directory.get_plugins\u0027,"},{"line_number":355,"context_line":"                       return_value\u003dservice_plugins):"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_6e192888","line":352,"range":{"start_line":352,"start_character":8,"end_line":352,"end_character":51},"in_reply_to":"7a77a97e_df03d040","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/tests/unit/plugins/ml2/test_plugin.py":[{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"f3c6ca4dfba555c0405cffb968325b158a52bb81","unresolved":false,"context_lines":[{"line_number":1395,"context_line":"            notify.assert_has_calls(expected)"},{"line_number":1396,"context_line":""},{"line_number":1397,"context_line":"    def test_delete_port_with_floatingip_notifies_l3_plugin(self):"},{"line_number":1398,"context_line":"        directory.add_plugin(constants.L3, self.l3plugin)"},{"line_number":1399,"context_line":"        self.test_delete_port_notifies_l3_plugin(floating_ip\u003dTrue)"},{"line_number":1400,"context_line":""},{"line_number":1401,"context_line":"    def test_concurrent_csnat_port_delete(self):"}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_f5fccfb9","line":1398,"updated":"2016-11-18 10:43:29.000000000","message":"this should be in test_delete_port_notifies_l3_plugin, shouldn\u0027t it?","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"d482b6f7523858797e0ef4d333853a93a6ce696a","unresolved":false,"context_lines":[{"line_number":1395,"context_line":"            notify.assert_has_calls(expected)"},{"line_number":1396,"context_line":""},{"line_number":1397,"context_line":"    def test_delete_port_with_floatingip_notifies_l3_plugin(self):"},{"line_number":1398,"context_line":"        directory.add_plugin(constants.L3, self.l3plugin)"},{"line_number":1399,"context_line":"        self.test_delete_port_notifies_l3_plugin(floating_ip\u003dTrue)"},{"line_number":1400,"context_line":""},{"line_number":1401,"context_line":"    def test_concurrent_csnat_port_delete(self):"}],"source_content_type":"text/x-python","patch_set":34,"id":"7a77a97e_f2484fce","line":1398,"in_reply_to":"7a77a97e_f5fccfb9","updated":"2016-11-18 17:42:11.000000000","message":"let me confirm, if it\u0027s here, there\u0027s probably a reason :)","commit_id":"8b68480de6065debcae726045f1e38e8309b59f2"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"708a3aff12e9ddfc2b34a2d2575276bc26fd3b6b","unresolved":false,"context_lines":[{"line_number":1368,"context_line":"        type(self.l3plugin).supported_extension_aliases \u003d ("},{"line_number":1369,"context_line":"            mock.PropertyMock(return_value\u003dextensions))"},{"line_number":1370,"context_line":""},{"line_number":1371,"context_line":"    def _test_delete_port_notifies_l3_plugin(self, floating_ip\u003dFalse):"},{"line_number":1372,"context_line":"        directory.add_plugin(constants.L3, self.l3plugin)"},{"line_number":1373,"context_line":"        ns_to_delete \u003d {\u0027host\u0027: \u0027myhost\u0027, \u0027agent_id\u0027: \u0027vm_l3_agent\u0027,"},{"line_number":1374,"context_line":"                        \u0027router_id\u0027: \u0027my_router\u0027}"}],"source_content_type":"text/x-python","patch_set":37,"id":"7a77a97e_7c811f4d","line":1371,"range":{"start_line":1371,"start_character":8,"end_line":1371,"end_character":9},"updated":"2016-11-22 06:23:43.000000000","message":"why you added _ prefix?\ni thought the intention here was test with both of floating_ip\u003dTrue and False.","commit_id":"1c2541adbb45607d893e6c4f6d6a5e62f0319580"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"075b103033abe44986dc967d8090a9fd4bca0558","unresolved":false,"context_lines":[{"line_number":1368,"context_line":"        type(self.l3plugin).supported_extension_aliases \u003d ("},{"line_number":1369,"context_line":"            mock.PropertyMock(return_value\u003dextensions))"},{"line_number":1370,"context_line":""},{"line_number":1371,"context_line":"    def _test_delete_port_notifies_l3_plugin(self, floating_ip\u003dFalse):"},{"line_number":1372,"context_line":"        directory.add_plugin(constants.L3, self.l3plugin)"},{"line_number":1373,"context_line":"        ns_to_delete \u003d {\u0027host\u0027: \u0027myhost\u0027, \u0027agent_id\u0027: \u0027vm_l3_agent\u0027,"},{"line_number":1374,"context_line":"                        \u0027router_id\u0027: \u0027my_router\u0027}"}],"source_content_type":"text/x-python","patch_set":37,"id":"7a77a97e_bce657e6","line":1371,"range":{"start_line":1371,"start_character":8,"end_line":1371,"end_character":9},"in_reply_to":"7a77a97e_7c811f4d","updated":"2016-11-22 06:26:32.000000000","message":"this might have accidentally slipped in somehow. Good catch.","commit_id":"1c2541adbb45607d893e6c4f6d6a5e62f0319580"},{"author":{"_account_id":6854,"name":"YAMAMOTO Takashi","email":"yamamoto@midokura.com","username":"yamamoto"},"change_message_id":"cbc4d74344a3a8d93e5a8b4f59e4a86c050f8853","unresolved":false,"context_lines":[{"line_number":1396,"context_line":"            notify.assert_has_calls(expected)"},{"line_number":1397,"context_line":""},{"line_number":1398,"context_line":"    def test_delete_port_with_floatingip_notifies_l3_plugin(self):"},{"line_number":1399,"context_line":"        self._test_delete_port_notifies_l3_plugin(floating_ip\u003dTrue)"},{"line_number":1400,"context_line":""},{"line_number":1401,"context_line":"    def test_concurrent_csnat_port_delete(self):"},{"line_number":1402,"context_line":"        plugin \u003d directory.get_plugin(constants.L3)"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a77a97e_7ced9f8d","line":1399,"range":{"start_line":1399,"start_character":13,"end_line":1399,"end_character":14},"updated":"2016-11-22 06:33:33.000000000","message":"remove this _","commit_id":"f070ef6f53f716fbec1607d1e6b74de02abda0e5"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"7cf113fb7cfaa729f2db3c0ccfbfe87764eefdac","unresolved":false,"context_lines":[{"line_number":1396,"context_line":"            notify.assert_has_calls(expected)"},{"line_number":1397,"context_line":""},{"line_number":1398,"context_line":"    def test_delete_port_with_floatingip_notifies_l3_plugin(self):"},{"line_number":1399,"context_line":"        self._test_delete_port_notifies_l3_plugin(floating_ip\u003dTrue)"},{"line_number":1400,"context_line":""},{"line_number":1401,"context_line":"    def test_concurrent_csnat_port_delete(self):"},{"line_number":1402,"context_line":"        plugin \u003d directory.get_plugin(constants.L3)"}],"source_content_type":"text/x-python","patch_set":38,"id":"7a77a97e_d72a0c2c","line":1399,"range":{"start_line":1399,"start_character":13,"end_line":1399,"end_character":14},"in_reply_to":"7a77a97e_7ced9f8d","updated":"2016-11-22 06:57:56.000000000","message":"damn it, I should not respin patches at 11pm!","commit_id":"f070ef6f53f716fbec1607d1e6b74de02abda0e5"}],"neutron/tests/unit/services/metering/test_metering_plugin.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutron_lib.plugins import directory"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"from oslo_utils import uuidutils"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_42bb630e","line":15,"updated":"2016-11-16 16:39:00.000000000","message":"(nit) shouldn\u0027t it go one line below?","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":12,"context_line":"# License for the specific language governing permissions and limitations"},{"line_number":13,"context_line":"# under the License."},{"line_number":14,"context_line":""},{"line_number":15,"context_line":"from neutron_lib.plugins import directory"},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"import mock"},{"line_number":18,"context_line":"from oslo_utils import uuidutils"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_ee0d383f","line":15,"in_reply_to":"7a77a97e_42bb630e","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/tests/unit/services/revisions/test_revision_plugin.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import netaddr"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron_lib import constants"},{"line_number":19,"context_line":"from neutron_lib.plugins import directory"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_622dbf45","line":17,"updated":"2016-11-16 16:39:00.000000000","message":"(nit) newline not needed","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":14,"context_line":"#"},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import netaddr"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron_lib import constants"},{"line_number":19,"context_line":"from neutron_lib.plugins import directory"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_0e099431","line":17,"in_reply_to":"7a77a97e_622dbf45","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/tests/unit/services/trunk/test_plugin.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d12c56dbce154e51b0596492e51755b93aa8b086","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron_lib.plugins import directory"},{"line_number":19,"context_line":"import testtools"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_98beced2","line":17,"updated":"2016-11-16 17:18:06.000000000","message":"nit: blank line","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":14,"context_line":"# limitations under the License."},{"line_number":15,"context_line":""},{"line_number":16,"context_line":"import mock"},{"line_number":17,"context_line":""},{"line_number":18,"context_line":"from neutron_lib.plugins import directory"},{"line_number":19,"context_line":"import testtools"},{"line_number":20,"context_line":""}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_7003c60d","line":17,"in_reply_to":"7a77a97e_98beced2","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/tests/unit/services/trunk/test_rules.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"d12c56dbce154e51b0596492e51755b93aa8b086","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        # need to trigger a driver registration"},{"line_number":259,"context_line":"        fakes.FakeDriverCanTrunkBoundPort.create()"},{"line_number":260,"context_line":"        self.trunk_plugin \u003d trunk_plugin.TrunkPlugin()"},{"line_number":261,"context_line":"        directory.add_plugin(\u0027trunk\u0027, self.trunk_plugin)"},{"line_number":262,"context_line":"        with self.port() as port:"},{"line_number":263,"context_line":"            core_plugin \u003d directory.get_plugin()"},{"line_number":264,"context_line":"            port[\u0027port\u0027][\u0027binding:host_id\u0027] \u003d \u0027host\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_f8a422a7","line":261,"updated":"2016-11-16 17:18:06.000000000","message":"Another possible constants addition for \u0027trunk\u0027 here and below","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":258,"context_line":"        # need to trigger a driver registration"},{"line_number":259,"context_line":"        fakes.FakeDriverCanTrunkBoundPort.create()"},{"line_number":260,"context_line":"        self.trunk_plugin \u003d trunk_plugin.TrunkPlugin()"},{"line_number":261,"context_line":"        directory.add_plugin(\u0027trunk\u0027, self.trunk_plugin)"},{"line_number":262,"context_line":"        with self.port() as port:"},{"line_number":263,"context_line":"            core_plugin \u003d directory.get_plugin()"},{"line_number":264,"context_line":"            port[\u0027port\u0027][\u0027binding:host_id\u0027] \u003d \u0027host\u0027"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_d0149a45","line":261,"in_reply_to":"7a77a97e_f8a422a7","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}],"neutron/tests/unit/test_policy.py":[{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"db880b6974e6a24e3436b78e67226b6452a41d06","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        self.context \u003d context.Context(\u0027fake\u0027, \u0027fake\u0027, roles\u003d[\u0027user\u0027])"},{"line_number":221,"context_line":"        plugin_klass \u003d importutils.import_class("},{"line_number":222,"context_line":"            \"neutron.db.db_base_plugin_v2.NeutronDbPluginV2\")"},{"line_number":223,"context_line":"        directory.add_plugin(\u0027CORE\u0027, plugin_klass())"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _set_rules(self, **kwargs):"},{"line_number":226,"context_line":"        rules_dict \u003d {"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_a2835703","line":223,"range":{"start_line":223,"start_character":29,"end_line":223,"end_character":36},"updated":"2016-11-16 16:39:00.000000000","message":"(nit) could use constant","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"},{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"6d6ca0e58a900ce19ab6e4e5ca1a1e3744512452","unresolved":false,"context_lines":[{"line_number":220,"context_line":"        self.context \u003d context.Context(\u0027fake\u0027, \u0027fake\u0027, roles\u003d[\u0027user\u0027])"},{"line_number":221,"context_line":"        plugin_klass \u003d importutils.import_class("},{"line_number":222,"context_line":"            \"neutron.db.db_base_plugin_v2.NeutronDbPluginV2\")"},{"line_number":223,"context_line":"        directory.add_plugin(\u0027CORE\u0027, plugin_klass())"},{"line_number":224,"context_line":""},{"line_number":225,"context_line":"    def _set_rules(self, **kwargs):"},{"line_number":226,"context_line":"        rules_dict \u003d {"}],"source_content_type":"text/x-python","patch_set":31,"id":"7a77a97e_5027aab5","line":223,"range":{"start_line":223,"start_character":29,"end_line":223,"end_character":36},"in_reply_to":"7a77a97e_a2835703","updated":"2016-11-16 17:44:18.000000000","message":"Done","commit_id":"907947ffc5b3f8211a0be408df767fe70f8779c7"}]}
