)]}'
{"quantum/plugins/services/agent_loadbalancer/drivers/haproxy/namespace_driver.py":[{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"change_message_id":"6b8d8678340c53d325e741db4e7334fa011c9bbb","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# @author: Mark McClain, DreamHost"},{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":"from oslo.config import cfg"},{"line_number":20,"context_line":"import shutil"},{"line_number":21,"context_line":"import socket"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOH%2F%2Ftqg%3D","line":19,"updated":"2013-04-01 23:11:17.000000000","message":"HACKING: This isn\u0027t a stdlib import.","commit_id":"80bb91a584b8dd918bca607b473263fa1ae786af"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"2919487c400604ac46da2afdec88f22bfbb0ade0","unresolved":false,"context_lines":[{"line_number":16,"context_line":"#"},{"line_number":17,"context_line":"# @author: Mark McClain, DreamHost"},{"line_number":18,"context_line":"import os"},{"line_number":19,"context_line":"from oslo.config import cfg"},{"line_number":20,"context_line":"import shutil"},{"line_number":21,"context_line":"import socket"},{"line_number":22,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"AAAAOH%2F%2Ftko%3D","line":19,"in_reply_to":"AAAAOH%2F%2Ftqg%3D","updated":"2013-04-01 23:32:58.000000000","message":"Done","commit_id":"80bb91a584b8dd918bca607b473263fa1ae786af"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":184,"context_line":"        gw_ip \u003d port[\u0027fixed_ips\u0027][0][\u0027subnet\u0027].get(\u0027gateway_ip\u0027)"},{"line_number":185,"context_line":"        if gw_ip:"},{"line_number":186,"context_line":"            cmd \u003d [\u0027route\u0027, \u0027add\u0027, \u0027default\u0027, \u0027gw\u0027, gw_ip]"},{"line_number":187,"context_line":"            if self.conf.use_namespaces:"},{"line_number":188,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(self.root_helper,"},{"line_number":189,"context_line":"                                              namespace\u003dnamespace)"},{"line_number":190,"context_line":"                ip_wrapper.netns.execute(cmd, check_exit_code\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOH%2F%2Fte8%3D","line":187,"updated":"2013-04-02 00:52:33.000000000","message":"I think we use namespace even without the namesapce option which is why we call our haproxy driver as namespace_driver.","commit_id":"bdf895578bb4b257b832f2b8e9b447a1709897fb"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":184,"context_line":"        gw_ip \u003d port[\u0027fixed_ips\u0027][0][\u0027subnet\u0027].get(\u0027gateway_ip\u0027)"},{"line_number":185,"context_line":"        if gw_ip:"},{"line_number":186,"context_line":"            cmd \u003d [\u0027route\u0027, \u0027add\u0027, \u0027default\u0027, \u0027gw\u0027, gw_ip]"},{"line_number":187,"context_line":"            if self.conf.use_namespaces:"},{"line_number":188,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(self.root_helper,"},{"line_number":189,"context_line":"                                              namespace\u003dnamespace)"},{"line_number":190,"context_line":"                ip_wrapper.netns.execute(cmd, check_exit_code\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOH%2F%2Ftcw%3D","line":187,"in_reply_to":"AAAAOH%2F%2Ftc8%3D","updated":"2013-04-02 01:20:38.000000000","message":"Fair enough, I wasn\u0027t reading very carefully.","commit_id":"bdf895578bb4b257b832f2b8e9b447a1709897fb"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"2919487c400604ac46da2afdec88f22bfbb0ade0","unresolved":false,"context_lines":[{"line_number":184,"context_line":"        gw_ip \u003d port[\u0027fixed_ips\u0027][0][\u0027subnet\u0027].get(\u0027gateway_ip\u0027)"},{"line_number":185,"context_line":"        if gw_ip:"},{"line_number":186,"context_line":"            cmd \u003d [\u0027route\u0027, \u0027add\u0027, \u0027default\u0027, \u0027gw\u0027, gw_ip]"},{"line_number":187,"context_line":"            if self.conf.use_namespaces:"},{"line_number":188,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(self.root_helper,"},{"line_number":189,"context_line":"                                              namespace\u003dnamespace)"},{"line_number":190,"context_line":"                ip_wrapper.netns.execute(cmd, check_exit_code\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOH%2F%2Fteo%3D","line":187,"in_reply_to":"AAAAOH%2F%2Fte8%3D","updated":"2013-04-02 01:06:17.000000000","message":"Done","commit_id":"bdf895578bb4b257b832f2b8e9b447a1709897fb"},{"author":{"_account_id":2874,"name":"yong sheng gong","email":"gong.yongsheng@99cloud.net","username":"gongysh"},"unresolved":false,"context_lines":[{"line_number":184,"context_line":"        gw_ip \u003d port[\u0027fixed_ips\u0027][0][\u0027subnet\u0027].get(\u0027gateway_ip\u0027)"},{"line_number":185,"context_line":"        if gw_ip:"},{"line_number":186,"context_line":"            cmd \u003d [\u0027route\u0027, \u0027add\u0027, \u0027default\u0027, \u0027gw\u0027, gw_ip]"},{"line_number":187,"context_line":"            if self.conf.use_namespaces:"},{"line_number":188,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(self.root_helper,"},{"line_number":189,"context_line":"                                              namespace\u003dnamespace)"},{"line_number":190,"context_line":"                ip_wrapper.netns.execute(cmd, check_exit_code\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOH%2F%2Ftc8%3D","line":187,"in_reply_to":"AAAAOH%2F%2Ftec%3D","updated":"2013-04-02 01:19:20.000000000","message":"L3 agent codes are respecting conf.use_namespaces all through. If we want to use this option, we will have to modify some other codes in this agent. But since the module\u0027s name is namespace_driver, we had better assume we are using namespace.","commit_id":"bdf895578bb4b257b832f2b8e9b447a1709897fb"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":184,"context_line":"        gw_ip \u003d port[\u0027fixed_ips\u0027][0][\u0027subnet\u0027].get(\u0027gateway_ip\u0027)"},{"line_number":185,"context_line":"        if gw_ip:"},{"line_number":186,"context_line":"            cmd \u003d [\u0027route\u0027, \u0027add\u0027, \u0027default\u0027, \u0027gw\u0027, gw_ip]"},{"line_number":187,"context_line":"            if self.conf.use_namespaces:"},{"line_number":188,"context_line":"                ip_wrapper \u003d ip_lib.IPWrapper(self.root_helper,"},{"line_number":189,"context_line":"                                              namespace\u003dnamespace)"},{"line_number":190,"context_line":"                ip_wrapper.netns.execute(cmd, check_exit_code\u003dFalse)"}],"source_content_type":"text/x-python","patch_set":4,"id":"AAAAOH%2F%2Ftec%3D","line":187,"in_reply_to":"AAAAOH%2F%2Fteo%3D","updated":"2013-04-02 01:11:43.000000000","message":"gongysh: I see that the l3 agent uses this same pattern that is supposedly \u0027wrong\u0027.\n\nhttps://github.com/openstack/quantum/blob/master/quantum/agent/l3_agent.py#L383\nhttps://github.com/openstack/quantum/blob/master/quantum/agent/l3_agent.py#L420\n\nIs there something I\u0027m missing, or does the L3 agent need to be updated?","commit_id":"bdf895578bb4b257b832f2b8e9b447a1709897fb"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":179,"context_line":"        ]"},{"line_number":180,"context_line":"        self.vif_driver.init_l3(interface_name, cidrs, namespace\u003dnamespace)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        gw_ip \u003d port[\u0027fixed_ips\u0027][0][\u0027subnet\u0027].get(\u0027gateway_ip\u0027)"},{"line_number":183,"context_line":"        if gw_ip:"},{"line_number":184,"context_line":"            cmd \u003d [\u0027route\u0027, \u0027add\u0027, \u0027default\u0027, \u0027gw\u0027, gw_ip]"},{"line_number":185,"context_line":"            ip_wrapper \u003d ip_lib.IPWrapper(self.root_helper,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2FtN4%3D","line":182,"updated":"2013-04-02 06:41:22.000000000","message":"Can we assume a subnet of the first IP address always has a gateway_ip?","commit_id":"37b41833bf4f9500ee6be53d15298d0f4b964ea3"},{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"unresolved":false,"context_lines":[{"line_number":179,"context_line":"        ]"},{"line_number":180,"context_line":"        self.vif_driver.init_l3(interface_name, cidrs, namespace\u003dnamespace)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        gw_ip \u003d port[\u0027fixed_ips\u0027][0][\u0027subnet\u0027].get(\u0027gateway_ip\u0027)"},{"line_number":183,"context_line":"        if gw_ip:"},{"line_number":184,"context_line":"            cmd \u003d [\u0027route\u0027, \u0027add\u0027, \u0027default\u0027, \u0027gw\u0027, gw_ip]"},{"line_number":185,"context_line":"            ip_wrapper \u003d ip_lib.IPWrapper(self.root_helper,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOX%2F%2F%2F2Y%3D","line":182,"in_reply_to":"AAAAOH%2F%2FsZs%3D","updated":"2013-04-03 03:42:57.000000000","message":"Thanks. This is OK for Grizzly release.\n\nWhat I thought at the last comment is the case where the first subnet does not have a valid gateway for the agent e.g. the first subnet is IPv6 and the second subnet is IPv4. This case is not common at the moment and IPv6 support needs a lot of improvement from now on.","commit_id":"37b41833bf4f9500ee6be53d15298d0f4b964ea3"},{"author":{"_account_id":447,"name":"dan wendlandt","email":"dan@nicira.com","username":"danwent"},"unresolved":false,"context_lines":[{"line_number":179,"context_line":"        ]"},{"line_number":180,"context_line":"        self.vif_driver.init_l3(interface_name, cidrs, namespace\u003dnamespace)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        gw_ip \u003d port[\u0027fixed_ips\u0027][0][\u0027subnet\u0027].get(\u0027gateway_ip\u0027)"},{"line_number":183,"context_line":"        if gw_ip:"},{"line_number":184,"context_line":"            cmd \u003d [\u0027route\u0027, \u0027add\u0027, \u0027default\u0027, \u0027gw\u0027, gw_ip]"},{"line_number":185,"context_line":"            ip_wrapper \u003d ip_lib.IPWrapper(self.root_helper,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2FsZs%3D","line":182,"in_reply_to":"AAAAOH%2F%2Fsok%3D","updated":"2013-04-02 19:10:01.000000000","message":"I think this is OK, as the user should not be able to update the the port itself, so it should be OK.","commit_id":"37b41833bf4f9500ee6be53d15298d0f4b964ea3"},{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"2919487c400604ac46da2afdec88f22bfbb0ade0","unresolved":false,"context_lines":[{"line_number":179,"context_line":"        ]"},{"line_number":180,"context_line":"        self.vif_driver.init_l3(interface_name, cidrs, namespace\u003dnamespace)"},{"line_number":181,"context_line":""},{"line_number":182,"context_line":"        gw_ip \u003d port[\u0027fixed_ips\u0027][0][\u0027subnet\u0027].get(\u0027gateway_ip\u0027)"},{"line_number":183,"context_line":"        if gw_ip:"},{"line_number":184,"context_line":"            cmd \u003d [\u0027route\u0027, \u0027add\u0027, \u0027default\u0027, \u0027gw\u0027, gw_ip]"},{"line_number":185,"context_line":"            ip_wrapper \u003d ip_lib.IPWrapper(self.root_helper,"}],"source_content_type":"text/x-python","patch_set":6,"id":"AAAAOH%2F%2Fsok%3D","line":182,"in_reply_to":"AAAAOH%2F%2FtN4%3D","updated":"2013-04-02 15:54:06.000000000","message":"I believe each port here will only be associated with one subnet as the call that triggers us to get into this code segment is: \n\n quantum lb-vip-create --name myvip --protocol-port 80 --protocol HTTP --subnet-id \u003csubnet uuid\u003e mypool","commit_id":"37b41833bf4f9500ee6be53d15298d0f4b964ea3"}],"quantum/tests/unit/services/agent_loadbalancer/driver/haproxy/test_namespace_driver.py":[{"author":{"_account_id":4395,"name":"Aaron Rosen","email":"aaronorosen@gmail.com","username":"arosen"},"change_message_id":"2919487c400604ac46da2afdec88f22bfbb0ade0","unresolved":false,"context_lines":[{"line_number":18,"context_line":""},{"line_number":19,"context_line":"import contextlib"},{"line_number":20,"context_line":"import mock"},{"line_number":21,"context_line":"from oslo.config import cfg"},{"line_number":22,"context_line":""},{"line_number":23,"context_line":"from quantum.common import exceptions"},{"line_number":24,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("}],"source_content_type":"text/x-python","patch_set":2,"id":"AAAAOH%2F%2FtkU%3D","line":21,"updated":"2013-04-01 23:34:38.000000000","message":"doh not stdimport...","commit_id":"0752090ec366dcfe78bc7ef3ba8964099b5a04fe"},{"author":{"_account_id":2035,"name":"Maru Newby","email":"marun@redhat.com","username":"maru"},"unresolved":false,"context_lines":[{"line_number":25,"context_line":"from quantum.plugins.services.agent_loadbalancer.drivers.haproxy import ("},{"line_number":26,"context_line":"    namespace_driver"},{"line_number":27,"context_line":")"},{"line_number":28,"context_line":"from quantum.tests import base"},{"line_number":29,"context_line":"from quantum.plugins.services.agent_loadbalancer import agent as lbaas_agent"},{"line_number":30,"context_line":""},{"line_number":31,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"AAAAOH%2F%2Ftjo%3D","line":28,"updated":"2013-04-01 23:43:58.000000000","message":"d\u0027oh - more import ordering!","commit_id":"7569fa3800b074b26a536f8d1ff5b51d8f237887"}]}
