)]}'
{"quantum/common/topics.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"AGENT \u003d \u0027q-agent-notifier\u0027"},{"line_number":26,"context_line":"PLUGIN \u003d \u0027q-plugin\u0027"},{"line_number":27,"context_line":"DHCP \u003d \u0027q-dhcp-notifer\u0027"},{"line_number":28,"context_line":"LOADBALANCER_PLUGIN \u003d \u0027q-loadbalancer-plugin\u0027"},{"line_number":29,"context_line":""},{"line_number":30,"context_line":"L3_AGENT \u003d \u0027l3_agent\u0027"},{"line_number":31,"context_line":"DHCP_AGENT \u003d \u0027dhcp_agent\u0027"}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F25E%3D","side":"PARENT","line":28,"updated":"2013-06-07 12:21:30.000000000","message":"seems like each plugin-driver may have it\u0027s own queues - hence removing their names from common","commit_id":"f83931af80d8166c53622ce5e6248205a4d7afaa"}],"quantum/db/loadbalancer/loadbalancer_db.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            context.session.delete(vip)"},{"line_number":416,"context_line":"            if vip.port:  # this is a Quantum port"},{"line_number":417,"context_line":"                self._core_plugin.delete_port(context, vip.port.id)"},{"line_number":418,"context_line":"            #context.session.flush()"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def get_vip(self, context, id, fields\u003dNone):"},{"line_number":421,"context_line":"        vip \u003d self._get_resource(context, Vip, id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F5hs%3D","line":418,"updated":"2013-06-06 14:25:34.000000000","message":"remove","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":415,"context_line":"            context.session.delete(vip)"},{"line_number":416,"context_line":"            if vip.port:  # this is a Quantum port"},{"line_number":417,"context_line":"                self._core_plugin.delete_port(context, vip.port.id)"},{"line_number":418,"context_line":"            #context.session.flush()"},{"line_number":419,"context_line":""},{"line_number":420,"context_line":"    def get_vip(self, context, id, fields\u003dNone):"},{"line_number":421,"context_line":"        vip \u003d self._get_resource(context, Vip, id)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F298%3D","line":418,"in_reply_to":"AAAAPX%2F%2F5hs%3D","updated":"2013-06-07 11:29:02.000000000","message":"Done","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"}],"quantum/plugins/services/agent_loadbalancer/agent/__init__.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":26,"context_line":"from quantum.plugins.services.agent_loadbalancer.agent import manager"},{"line_number":27,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("},{"line_number":28,"context_line":"    plugin_driver"},{"line_number":29,"context_line":")"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPX%2F%2FwFI%3D","line":29,"updated":"2013-06-11 12:35:02.000000000","message":"I think this file is not specific to haproxy agent, so it is better to avoid importing LOADBALANCER_AGENT constant from haproxy specific file. If LOADBALANCER_AGENT constant is common across agent-based implementation, agent_loadbalancer/agent/constants.py looks rather a better place to me.","commit_id":"9e67cf1f241477549d2e7f793c4ea7f5b7df6ce4"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":26,"context_line":"from quantum.plugins.services.agent_loadbalancer.agent import manager"},{"line_number":27,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("},{"line_number":28,"context_line":"    plugin_driver"},{"line_number":29,"context_line":")"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPX%2F%2FtYY%3D","line":29,"in_reply_to":"AAAAPX%2F%2FwBg%3D","updated":"2013-06-12 09:20:49.000000000","message":"I agree it is good to address this later. haproxy implementation is the only one using the lbaas-agent at the moment and it cannot be avoided the implementation is not generic enough to some extent.","commit_id":"9e67cf1f241477549d2e7f793c4ea7f5b7df6ce4"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":26,"context_line":"from quantum.plugins.services.agent_loadbalancer.agent import manager"},{"line_number":27,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("},{"line_number":28,"context_line":"    plugin_driver"},{"line_number":29,"context_line":")"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"OPTS \u003d ["}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPX%2F%2FwBg%3D","line":29,"in_reply_to":"AAAAPX%2F%2FwFI%3D","updated":"2013-06-11 12:47:44.000000000","message":"in fact this agent relates to \u0027reference implementation\u0027 so it is not a generic one. I agree this should be named differently or placed in another file.\nI was planning to address it with follow up patch, if you don\u0027t mind.\n\nI could make it in the scope of this patch if you think it is necessary.","commit_id":"9e67cf1f241477549d2e7f793c4ea7f5b7df6ce4"}],"quantum/plugins/services/agent_loadbalancer/agent/manager.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":28,"context_line":"from quantum.plugins.services.agent_loadbalancer.agent import api"},{"line_number":29,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("},{"line_number":30,"context_line":"    plugin_driver"},{"line_number":31,"context_line":")"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":"NS_PREFIX \u003d \u0027qlbaas-\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPX%2F%2FwCk%3D","line":31,"updated":"2013-06-11 12:35:02.000000000","message":"Same comments for agent_loadbalanacer/agent/__init__","commit_id":"9e67cf1f241477549d2e7f793c4ea7f5b7df6ce4"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":28,"context_line":"from quantum.plugins.services.agent_loadbalancer.agent import api"},{"line_number":29,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("},{"line_number":30,"context_line":"    plugin_driver"},{"line_number":31,"context_line":")"},{"line_number":32,"context_line":""},{"line_number":33,"context_line":"LOG \u003d logging.getLogger(__name__)"},{"line_number":34,"context_line":"NS_PREFIX \u003d \u0027qlbaas-\u0027"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPX%2F%2FwBM%3D","line":31,"in_reply_to":"AAAAPX%2F%2FwCk%3D","updated":"2013-06-11 12:47:44.000000000","message":"see reply to comment in __init__.py","commit_id":"9e67cf1f241477549d2e7f793c4ea7f5b7df6ce4"}],"quantum/plugins/services/agent_loadbalancer/drivers/haproxy/agent.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":26,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("},{"line_number":27,"context_line":"    manager"},{"line_number":28,"context_line":")"},{"line_number":29,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("},{"line_number":30,"context_line":"    plugin_driver"},{"line_number":31,"context_line":")"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPX%2F%2FtXI%3D","line":29,"updated":"2013-06-12 09:22:09.000000000","message":"Oh... import becomes too long... I think we cannot have deeper subdirectory.\n\nIMO, there is no strong reason \u0027services\u0027 directory should be under plugins directory now. The only reason looks a naming of \"service plugin\".  It may be good to consider moving quantum/plugins/services to quantum/services (not a part of this patch).","commit_id":"375a874b82edfb99e49862278fcc701a0e732edf"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"unresolved":false,"context_lines":[{"line_number":26,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("},{"line_number":27,"context_line":"    manager"},{"line_number":28,"context_line":")"},{"line_number":29,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("},{"line_number":30,"context_line":"    plugin_driver"},{"line_number":31,"context_line":")"},{"line_number":32,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPX%2F%2FtV8%3D","line":29,"in_reply_to":"AAAAPX%2F%2FtXI%3D","updated":"2013-06-12 10:19:47.000000000","message":"Right. There was a discussion about this and it was an agreement that it needs to be done.\nRegarding lbaas, \"agent_loadbalancer\" will be renamed to \"loadbalancer\", which will shorten imports a little bit.","commit_id":"375a874b82edfb99e49862278fcc701a0e732edf"}],"quantum/plugins/services/agent_loadbalancer/drivers/haproxy/agent_manager.py":[{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"461b21be253c6d7dbb430a81db89748d578a340c","unresolved":false,"context_lines":[{"line_number":25,"context_line":"from quantum.openstack.common import importutils"},{"line_number":26,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":27,"context_line":"from quantum.openstack.common import periodic_task"},{"line_number":28,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("},{"line_number":29,"context_line":"    agent_api"},{"line_number":30,"context_line":")"},{"line_number":31,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPX%2F%2Fqow%3D","line":28,"updated":"2013-06-13 06:56:28.000000000","message":"Question: Wouldnt it be \"cleaner\" to use the code below?\nfrom quantum.plugins.services.agent_loadbalancer.drivers.haproxy import (\n    agent_api\n    plugin_driver\n)\nSee https://dev.launchpad.net/PythonStyleGuide#Multiline_imports","commit_id":"ffb757d1afbd1a27c87b15fcafb2202c2cbb1b00"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":"from quantum.openstack.common import importutils"},{"line_number":26,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":27,"context_line":"from quantum.openstack.common import periodic_task"},{"line_number":28,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("},{"line_number":29,"context_line":"    agent_api"},{"line_number":30,"context_line":")"},{"line_number":31,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("}],"source_content_type":"text/x-python","patch_set":10,"id":"AAAAPX%2F%2FqnQ%3D","line":28,"in_reply_to":"AAAAPX%2F%2Fqow%3D","updated":"2013-06-13 07:03:53.000000000","message":"yep, i missed that while was changing imports after moving agent to drivers/haproxy directory","commit_id":"ffb757d1afbd1a27c87b15fcafb2202c2cbb1b00"}],"quantum/plugins/services/agent_loadbalancer/drivers/haproxy/manager.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# @author: Mark McClain, DreamHost"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import weakref"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo.config import cfg"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPX%2F%2Fq1c%3D","line":18,"updated":"2013-06-13 04:49:26.000000000","message":"It is better to rename it to agent_manager.py. I think you want to avoid using agent/ sub directory to shorten the path.","commit_id":"9207c43d0589859e22be2cf22ddfa37280e0671a"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"unresolved":false,"context_lines":[{"line_number":15,"context_line":"#    under the License."},{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# @author: Mark McClain, DreamHost"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import weakref"},{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from oslo.config import cfg"}],"source_content_type":"text/x-python","patch_set":9,"id":"AAAAPX%2F%2Fqyw%3D","line":18,"in_reply_to":"AAAAPX%2F%2Fq1c%3D","updated":"2013-06-13 05:16:11.000000000","message":"ok, good point.","commit_id":"9207c43d0589859e22be2cf22ddfa37280e0671a"}],"quantum/plugins/services/agent_loadbalancer/drivers/haproxy/plugin_driver.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        self.conn \u003d rpc.create_connection(new\u003dTrue)"},{"line_number":225,"context_line":"        self.conn.create_consumer("},{"line_number":226,"context_line":"            topics.LOADBALANCER_PLUGIN,"},{"line_number":227,"context_line":"            self.callbacks.create_rpc_dispatcher(),"},{"line_number":228,"context_line":"            fanout\u003dFalse)"},{"line_number":229,"context_line":"        self.conn.consume_in_thread()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F5h4%3D","line":226,"updated":"2013-06-06 14:25:34.000000000","message":"make topic name specific for this driver, move out of topics","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":223,"context_line":""},{"line_number":224,"context_line":"        self.conn \u003d rpc.create_connection(new\u003dTrue)"},{"line_number":225,"context_line":"        self.conn.create_consumer("},{"line_number":226,"context_line":"            topics.LOADBALANCER_PLUGIN,"},{"line_number":227,"context_line":"            self.callbacks.create_rpc_dispatcher(),"},{"line_number":228,"context_line":"            fanout\u003dFalse)"},{"line_number":229,"context_line":"        self.conn.consume_in_thread()"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F29s%3D","line":226,"in_reply_to":"AAAAPX%2F%2F5h4%3D","updated":"2013-06-07 11:29:02.000000000","message":"Done","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            self.callbacks.create_rpc_dispatcher(),"},{"line_number":228,"context_line":"            fanout\u003dFalse)"},{"line_number":229,"context_line":"        self.conn.consume_in_thread()"},{"line_number":230,"context_line":"        self.plugin\u003d plugin"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def create_vip(self, context, vip):"},{"line_number":233,"context_line":"        self.agent_rpc.reload_pool(context, vip[\u0027pool_id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F5h0%3D","line":230,"updated":"2013-06-06 14:25:34.000000000","message":"pep8","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":227,"context_line":"            self.callbacks.create_rpc_dispatcher(),"},{"line_number":228,"context_line":"            fanout\u003dFalse)"},{"line_number":229,"context_line":"        self.conn.consume_in_thread()"},{"line_number":230,"context_line":"        self.plugin\u003d plugin"},{"line_number":231,"context_line":""},{"line_number":232,"context_line":"    def create_vip(self, context, vip):"},{"line_number":233,"context_line":"        self.agent_rpc.reload_pool(context, vip[\u0027pool_id\u0027])"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F29o%3D","line":230,"in_reply_to":"AAAAPX%2F%2F5h0%3D","updated":"2013-06-07 11:29:02.000000000","message":"Done","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":40,"context_line":")"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# topic name for this particular agent implementation"},{"line_number":43,"context_line":"PROCESS_ON_HOST_TOPIC \u003d \u0027q-lbaas-process-on-host\u0027"},{"line_number":44,"context_line":"LOADBALANCER_AGENT \u003d \u0027lbaas_process_on_host_agent\u0027"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPX%2F%2FtWk%3D","line":43,"updated":"2013-06-12 09:22:09.000000000","message":"Personally I prefer a prefix \"TOPIC_\" rather than a suffix, but it depends on you.","commit_id":"375a874b82edfb99e49862278fcc701a0e732edf"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"unresolved":false,"context_lines":[{"line_number":40,"context_line":")"},{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# topic name for this particular agent implementation"},{"line_number":43,"context_line":"PROCESS_ON_HOST_TOPIC \u003d \u0027q-lbaas-process-on-host\u0027"},{"line_number":44,"context_line":"LOADBALANCER_AGENT \u003d \u0027lbaas_process_on_host_agent\u0027"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPX%2F%2FtV4%3D","line":43,"in_reply_to":"AAAAPX%2F%2FtWk%3D","updated":"2013-06-12 10:19:47.000000000","message":"I don\u0027t mind","commit_id":"375a874b82edfb99e49862278fcc701a0e732edf"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# topic name for this particular agent implementation"},{"line_number":43,"context_line":"PROCESS_ON_HOST_TOPIC \u003d \u0027q-lbaas-process-on-host\u0027"},{"line_number":44,"context_line":"LOADBALANCER_AGENT \u003d \u0027lbaas_process_on_host_agent\u0027"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class LoadBalancerCallbacks(object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPX%2F%2FtW0%3D","line":44,"updated":"2013-06-12 09:22:09.000000000","message":"I think it is a topic name too. It is better to have a prefix.","commit_id":"375a874b82edfb99e49862278fcc701a0e732edf"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"unresolved":false,"context_lines":[{"line_number":41,"context_line":""},{"line_number":42,"context_line":"# topic name for this particular agent implementation"},{"line_number":43,"context_line":"PROCESS_ON_HOST_TOPIC \u003d \u0027q-lbaas-process-on-host\u0027"},{"line_number":44,"context_line":"LOADBALANCER_AGENT \u003d \u0027lbaas_process_on_host_agent\u0027"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class LoadBalancerCallbacks(object):"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPX%2F%2FtV0%3D","line":44,"in_reply_to":"AAAAPX%2F%2FtW0%3D","updated":"2013-06-12 10:19:47.000000000","message":"Done","commit_id":"375a874b82edfb99e49862278fcc701a0e732edf"}],"quantum/plugins/services/agent_loadbalancer/lbaas_plugin.py":[{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self._load_drivers()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _load_drivers(self):"},{"line_number":59,"context_line":"        \"\"\"Loads drivers getting the list from service type framework.\"\"\""},{"line_number":60,"context_line":"        try:"},{"line_number":61,"context_line":"            self.driver \u003d importutils.import_object("},{"line_number":62,"context_line":"                cfg.CONF.LBAAS.driver_fqn, self)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F5hc%3D","line":59,"updated":"2013-06-06 14:25:34.000000000","message":"fix the comment","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":56,"context_line":"        self._load_drivers()"},{"line_number":57,"context_line":""},{"line_number":58,"context_line":"    def _load_drivers(self):"},{"line_number":59,"context_line":"        \"\"\"Loads drivers getting the list from service type framework.\"\"\""},{"line_number":60,"context_line":"        try:"},{"line_number":61,"context_line":"            self.driver \u003d importutils.import_object("},{"line_number":62,"context_line":"                cfg.CONF.LBAAS.driver_fqn, self)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F28c%3D","line":59,"in_reply_to":"AAAAPX%2F%2F5hc%3D","updated":"2013-06-07 11:29:02.000000000","message":"Done","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        return \"Quantum LoadBalancer Service Plugin\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def create_vip(self, context, vip):"},{"line_number":73,"context_line":"        #vip[\u0027vip\u0027][\u0027status\u0027] \u003d constants.PENDING_CREATE"},{"line_number":74,"context_line":"        v \u003d super(LoadBalancerPlugin, self).create_vip(context, vip)"},{"line_number":75,"context_line":"        self.driver.create_vip(context, v)"},{"line_number":76,"context_line":"        return v"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F5go%3D","line":73,"updated":"2013-06-06 14:25:34.000000000","message":"uncomment","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":70,"context_line":"        return \"Quantum LoadBalancer Service Plugin\""},{"line_number":71,"context_line":""},{"line_number":72,"context_line":"    def create_vip(self, context, vip):"},{"line_number":73,"context_line":"        #vip[\u0027vip\u0027][\u0027status\u0027] \u003d constants.PENDING_CREATE"},{"line_number":74,"context_line":"        v \u003d super(LoadBalancerPlugin, self).create_vip(context, vip)"},{"line_number":75,"context_line":"        self.driver.create_vip(context, v)"},{"line_number":76,"context_line":"        return v"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F28Y%3D","line":73,"in_reply_to":"AAAAPX%2F%2F5go%3D","updated":"2013-06-07 11:29:02.000000000","message":"Done","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.update_status(context, loadbalancer_db.Vip,"},{"line_number":92,"context_line":"                           id, constants.PENDING_DELETE)"},{"line_number":93,"context_line":"        v \u003d self.get_vip(context, id)"},{"line_number":94,"context_line":"        #--"},{"line_number":95,"context_line":"        #super(LoadBalancerPlugin, self).delete_vip(context, id)"},{"line_number":96,"context_line":"        #--"},{"line_number":97,"context_line":"        self.driver.delete_vip(context, v)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F5hQ%3D","line":94,"updated":"2013-06-06 14:25:34.000000000","message":"remove","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":91,"context_line":"        self.update_status(context, loadbalancer_db.Vip,"},{"line_number":92,"context_line":"                           id, constants.PENDING_DELETE)"},{"line_number":93,"context_line":"        v \u003d self.get_vip(context, id)"},{"line_number":94,"context_line":"        #--"},{"line_number":95,"context_line":"        #super(LoadBalancerPlugin, self).delete_vip(context, id)"},{"line_number":96,"context_line":"        #--"},{"line_number":97,"context_line":"        self.driver.delete_vip(context, v)"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F28U%3D","line":94,"in_reply_to":"AAAAPX%2F%2F5hQ%3D","updated":"2013-06-07 11:29:02.000000000","message":"Done","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        self.driver.update_member(context, old_member, m)"},{"line_number":135,"context_line":"        return m"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def _delete_db_member(self, context, id):\\"},{"line_number":138,"context_line":"        # proxy the call until plugin inherits from DBPlugin"},{"line_number":139,"context_line":"        super(LoadBalancerPlugin, self).delete_member(context, id)"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F5gw%3D","line":137,"updated":"2013-06-06 14:25:34.000000000","message":"backslash","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":134,"context_line":"        self.driver.update_member(context, old_member, m)"},{"line_number":135,"context_line":"        return m"},{"line_number":136,"context_line":""},{"line_number":137,"context_line":"    def _delete_db_member(self, context, id):\\"},{"line_number":138,"context_line":"        # proxy the call until plugin inherits from DBPlugin"},{"line_number":139,"context_line":"        super(LoadBalancerPlugin, self).delete_member(context, id)"},{"line_number":140,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F278%3D","line":137,"in_reply_to":"AAAAPX%2F%2F5gw%3D","updated":"2013-06-07 11:29:02.000000000","message":"Done","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            qry \u003d context.session.query("},{"line_number":170,"context_line":"                loadbalancer_db.PoolMonitorAssociation"},{"line_number":171,"context_line":"            )"},{"line_number":172,"context_line":"            qry \u003d qry.filter_by(monitor_id\u003dhm[\u0027id\u0027])"},{"line_number":173,"context_line":"            for assoc in qry:"},{"line_number":174,"context_line":"                self.driver.update_health_monitor(context, old_hm, hm, assoc)"},{"line_number":175,"context_line":"        return hm"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F5g4%3D","line":172,"updated":"2013-06-06 14:25:34.000000000","message":"coalesce with previous statement","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":169,"context_line":"            qry \u003d context.session.query("},{"line_number":170,"context_line":"                loadbalancer_db.PoolMonitorAssociation"},{"line_number":171,"context_line":"            )"},{"line_number":172,"context_line":"            qry \u003d qry.filter_by(monitor_id\u003dhm[\u0027id\u0027])"},{"line_number":173,"context_line":"            for assoc in qry:"},{"line_number":174,"context_line":"                self.driver.update_health_monitor(context, old_hm, hm, assoc)"},{"line_number":175,"context_line":"        return hm"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F27g%3D","line":172,"in_reply_to":"AAAAPX%2F%2F5g4%3D","updated":"2013-06-07 11:29:02.000000000","message":"Done","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            qry \u003d context.session.query("},{"line_number":186,"context_line":"                loadbalancer_db.PoolMonitorAssociation"},{"line_number":187,"context_line":"            )"},{"line_number":188,"context_line":"            qry \u003d qry.filter_by(monitor_id\u003did)"},{"line_number":189,"context_line":"            for assoc in qry:"},{"line_number":190,"context_line":"                self.driver.delete_pool_health_monitor(context,"},{"line_number":191,"context_line":"                                                       hm,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F5hE%3D","line":188,"updated":"2013-06-06 14:25:34.000000000","message":"coalesce with previous statement","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":185,"context_line":"            qry \u003d context.session.query("},{"line_number":186,"context_line":"                loadbalancer_db.PoolMonitorAssociation"},{"line_number":187,"context_line":"            )"},{"line_number":188,"context_line":"            qry \u003d qry.filter_by(monitor_id\u003did)"},{"line_number":189,"context_line":"            for assoc in qry:"},{"line_number":190,"context_line":"                self.driver.delete_pool_health_monitor(context,"},{"line_number":191,"context_line":"                                                       hm,"}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAPX%2F%2F27c%3D","line":188,"in_reply_to":"AAAAPX%2F%2F5hE%3D","updated":"2013-06-07 11:29:02.000000000","message":"Done","commit_id":"cc2a851cbab194fffc588d72a59b14fd607f49eb"}],"quantum/plugins/services/agent_loadbalancer/plugin.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"unresolved":false,"context_lines":[{"line_number":58,"context_line":"    def _load_drivers(self):"},{"line_number":59,"context_line":"        \"\"\"Loads plugin-driver from configuration."},{"line_number":60,"context_line":""},{"line_number":61,"context_line":"            That method will later leverage service type framework"},{"line_number":62,"context_line":"        \"\"\""},{"line_number":63,"context_line":"        try:"},{"line_number":64,"context_line":"            self.driver \u003d importutils.import_object("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAPX%2F%2F24Q%3D","line":61,"updated":"2013-06-07 12:35:51.000000000","message":"the line is over-indented (pep257)","commit_id":"6d46973f26ff8ae4669b6080c857a3d7e72dcd6c"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from quantum.db import api as qdbapi"},{"line_number":21,"context_line":"from quantum.db.loadbalancer import loadbalancer_db"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from quantum.openstack.common import importutils"},{"line_number":24,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":25,"context_line":"from quantum.plugins.common import constants"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPX%2F%2FwDE%3D","line":22,"updated":"2013-06-11 12:35:02.000000000","message":"The empty line is not needed.","commit_id":"9e67cf1f241477549d2e7f793c4ea7f5b7df6ce4"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":19,"context_line":""},{"line_number":20,"context_line":"from quantum.db import api as qdbapi"},{"line_number":21,"context_line":"from quantum.db.loadbalancer import loadbalancer_db"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from quantum.openstack.common import importutils"},{"line_number":24,"context_line":"from quantum.openstack.common import log as logging"},{"line_number":25,"context_line":"from quantum.plugins.common import constants"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPX%2F%2FwBs%3D","line":22,"in_reply_to":"AAAAPX%2F%2FwDE%3D","updated":"2013-06-11 12:47:44.000000000","message":"Done","commit_id":"9e67cf1f241477549d2e7f793c4ea7f5b7df6ce4"},{"author":{"_account_id":6447,"name":"Avishay Balderman","email":"avishayb@radware.com","username":"avishayb"},"change_message_id":"461b21be253c6d7dbb430a81db89748d578a340c","unresolved":false,"context_lines":[{"line_number":64,"context_line":"            self.driver \u003d importutils.import_object("},{"line_number":65,"context_line":"                cfg.CONF.LBAAS.driver_fqn, self)"},{"line_number":66,"context_line":"        except ImportError:"},{"line_number":67,"context_line":"            LOG.exception(_(\"Error loading LBaaS driver\"))"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def get_plugin_type(self):"},{"line_number":70,"context_line":"        return constants.LOADBALANCER"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPX%2F%2Fv%2B8%3D","line":67,"updated":"2013-06-11 13:04:02.000000000","message":"I think it may be good to add to the err msg which driver we tried to load.","commit_id":"9e67cf1f241477549d2e7f793c4ea7f5b7df6ce4"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"unresolved":false,"context_lines":[{"line_number":64,"context_line":"            self.driver \u003d importutils.import_object("},{"line_number":65,"context_line":"                cfg.CONF.LBAAS.driver_fqn, self)"},{"line_number":66,"context_line":"        except ImportError:"},{"line_number":67,"context_line":"            LOG.exception(_(\"Error loading LBaaS driver\"))"},{"line_number":68,"context_line":""},{"line_number":69,"context_line":"    def get_plugin_type(self):"},{"line_number":70,"context_line":"        return constants.LOADBALANCER"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAPX%2F%2Fvlc%3D","line":67,"in_reply_to":"AAAAPX%2F%2Fv%2B8%3D","updated":"2013-06-11 16:43:09.000000000","message":"Done","commit_id":"9e67cf1f241477549d2e7f793c4ea7f5b7df6ce4"}],"quantum/tests/unit/services/agent_loadbalancer/driver/haproxy/test_plugin_driver.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantum import context"},{"line_number":22,"context_line":"from quantum import manager"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from quantum.common import exceptions"},{"line_number":25,"context_line":"from quantum.db.loadbalancer import loadbalancer_db as ldb"},{"line_number":26,"context_line":"from quantum.openstack.common import uuidutils"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPX%2F%2FtYE%3D","line":23,"updated":"2013-06-12 09:22:09.000000000","message":"This line is unnecessary.","commit_id":"375a874b82edfb99e49862278fcc701a0e732edf"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"unresolved":false,"context_lines":[{"line_number":20,"context_line":""},{"line_number":21,"context_line":"from quantum import context"},{"line_number":22,"context_line":"from quantum import manager"},{"line_number":23,"context_line":""},{"line_number":24,"context_line":"from quantum.common import exceptions"},{"line_number":25,"context_line":"from quantum.db.loadbalancer import loadbalancer_db as ldb"},{"line_number":26,"context_line":"from quantum.openstack.common import uuidutils"}],"source_content_type":"text/x-python","patch_set":8,"id":"AAAAPX%2F%2FtVo%3D","line":23,"in_reply_to":"AAAAPX%2F%2FtYE%3D","updated":"2013-06-12 10:19:47.000000000","message":"Done.\n\nActually I done this to separate 1st level imports from longer ones. That was it seemed nicer looking to me.","commit_id":"375a874b82edfb99e49862278fcc701a0e732edf"}],"quantum/tests/unit/services/agent_loadbalancer/test_plugin.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.plugin_instance \u003d loaded_plugins[constants.LOADBALANCER]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class TestLoadBalancerPluginNotificationWrapper(TestLoadBalancerPluginBase):"},{"line_number":48,"context_line":"    def setUp(self):"},{"line_number":49,"context_line":"        self.log \u003d mock.patch.object(plugin_driver, \u0027LOG\u0027)"},{"line_number":50,"context_line":"        api_cls \u003d mock.patch.object(plugin_driver,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPX%2F%2Fwbk%3D","line":47,"updated":"2013-06-11 09:40:01.000000000","message":"This test case tests some logic specific to HaproxyOnHostPluginDriver so I think it should be moved to  quantum/tests/unit/services/agent_loadbalancer/driver/haproxy/test_plugin_driver.py","commit_id":"db3b06c64258100c18be2ea9ca85372e6fba00bc"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"d7aa0845ec5b8d0eb0bc588f440130b067d4647c","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        self.plugin_instance \u003d loaded_plugins[constants.LOADBALANCER]"},{"line_number":45,"context_line":""},{"line_number":46,"context_line":""},{"line_number":47,"context_line":"class TestLoadBalancerPluginNotificationWrapper(TestLoadBalancerPluginBase):"},{"line_number":48,"context_line":"    def setUp(self):"},{"line_number":49,"context_line":"        self.log \u003d mock.patch.object(plugin_driver, \u0027LOG\u0027)"},{"line_number":50,"context_line":"        api_cls \u003d mock.patch.object(plugin_driver,"}],"source_content_type":"text/x-python","patch_set":5,"id":"AAAAPX%2F%2FwZ8%3D","line":47,"in_reply_to":"AAAAPX%2F%2Fwbk%3D","updated":"2013-06-11 09:51:30.000000000","message":"Done","commit_id":"db3b06c64258100c18be2ea9ca85372e6fba00bc"}]}
