)]}'
{"neutron/agent/dhcp/agent.py":[{"author":{"_account_id":748,"name":"Armando Migliaccio","email":"armamig@gmail.com","username":"armando-migliaccio"},"change_message_id":"83def8c589933dd3441073c8c46e1d20b573d399","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                    self.enable_isolated_metadata_proxy(network)"},{"line_number":247,"context_line":"                    break"},{"line_number":248,"context_line":"        else:"},{"line_number":249,"context_line":"            self.disable_isolated_metadata_proxy(network)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def disable_dhcp_helper(self, network_id):"},{"line_number":252,"context_line":"        \"\"\"Disable DHCP for a network known to the agent.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_2e42f868","line":249,"updated":"2015-10-21 04:44:04.000000000","message":"what happens if the agent is actually in use? From your bug report you don\u0027t seem to take in consideration the case where (once you switch the option value) the agents are actually alive and kicking. The reason to leave them behind in this circumstance might as well be by design.","commit_id":"1ebf750c82cf5e9aab17a7fb34d8d0b19f31b518"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"999da103daf2a7b64dde083227019702ddb3ee76","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                    self.enable_isolated_metadata_proxy(network)"},{"line_number":247,"context_line":"                    break"},{"line_number":248,"context_line":"        else:"},{"line_number":249,"context_line":"            self.disable_isolated_metadata_proxy(network)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def disable_dhcp_helper(self, network_id):"},{"line_number":252,"context_line":"        \"\"\"Disable DHCP for a network known to the agent.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_9c8ebbce","line":249,"in_reply_to":"1a26ad4f_66887ce8","updated":"2015-11-02 22:13:27.000000000","message":"I guess I would agree with Eugene since this could also be the case where the tenant added a router to the network, so we won\u0027t be sending a route to the metadata IP via dhcp, hence the proxy is not needed as it will be handled via the router namespace.","commit_id":"1ebf750c82cf5e9aab17a7fb34d8d0b19f31b518"},{"author":{"_account_id":6072,"name":"Eugene Nikanorov","email":"enikanorov@mirantis.com","username":"enikanorov"},"change_message_id":"acc8bbfd11dd1493dcd27acfe485f84c3d410899","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                    self.enable_isolated_metadata_proxy(network)"},{"line_number":247,"context_line":"                    break"},{"line_number":248,"context_line":"        else:"},{"line_number":249,"context_line":"            self.disable_isolated_metadata_proxy(network)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def disable_dhcp_helper(self, network_id):"},{"line_number":252,"context_line":"        \"\"\"Disable DHCP for a network known to the agent.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_66887ce8","line":249,"in_reply_to":"1a26ad4f_9a7c1722","updated":"2015-10-28 08:35:59.000000000","message":"I think it is the right thing to do to bring system configuration (running processes) in sync with logical configuration.\n\nConf change is always a result of admin\u0027s action, as well as DHCP agent restart/reload, so it can be assumed that admin knows what they\u0027re doing.","commit_id":"1ebf750c82cf5e9aab17a7fb34d8d0b19f31b518"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"a6cf06ba23bc39a930f1627849e6e470a2544a05","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                    self.enable_isolated_metadata_proxy(network)"},{"line_number":247,"context_line":"                    break"},{"line_number":248,"context_line":"        else:"},{"line_number":249,"context_line":"            self.disable_isolated_metadata_proxy(network)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def disable_dhcp_helper(self, network_id):"},{"line_number":252,"context_line":"        \"\"\"Disable DHCP for a network known to the agent.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_df1becc8","line":249,"in_reply_to":"3a29b11f_2e42f868","updated":"2015-10-21 06:42:37.000000000","message":"I think this patch is OK for the agent in use.\n1) if the user turn off the option, it can be assumed that user will not need metadata for network.\n2) vm can still use metadata through router namespace(with proper configuration, of course). \n3) if the option change from enable to disable, and user restart dhcp-agent and vm, vm will not have the route to redirect the metadata request to dhcp ip, according to [1]. Without this route, the metadata_proxy for network is meaningless.\n\n[1]https://github.com/openstack/neutron/blob/master/neutron/agent/linux/dhcp.py","commit_id":"1ebf750c82cf5e9aab17a7fb34d8d0b19f31b518"},{"author":{"_account_id":11682,"name":"Ryan Moats","email":"rmoats@us.ibm.com","username":"regXboi"},"change_message_id":"e449c60552a42b622afab1f213a94a83c03006c4","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                    self.enable_isolated_metadata_proxy(network)"},{"line_number":247,"context_line":"                    break"},{"line_number":248,"context_line":"        else:"},{"line_number":249,"context_line":"            self.disable_isolated_metadata_proxy(network)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def disable_dhcp_helper(self, network_id):"},{"line_number":252,"context_line":"        \"\"\"Disable DHCP for a network known to the agent.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"1a26ad4f_9a7c1722","line":249,"in_reply_to":"3a29b11f_5f3efcda","updated":"2015-10-27 21:19:02.000000000","message":"Given all of those possibilities, I\u0027m thinking that an additional functional test makes more sense then the mocked unit test...","commit_id":"1ebf750c82cf5e9aab17a7fb34d8d0b19f31b518"},{"author":{"_account_id":8976,"name":"shihanzhang","email":"ayshihanzhang@gmail.com","username":"shihanzhang"},"change_message_id":"6ddef2a3d7070e21c6f3a5bb720a69bc52e81e23","unresolved":false,"context_lines":[{"line_number":246,"context_line":"                    self.enable_isolated_metadata_proxy(network)"},{"line_number":247,"context_line":"                    break"},{"line_number":248,"context_line":"        else:"},{"line_number":249,"context_line":"            self.disable_isolated_metadata_proxy(network)"},{"line_number":250,"context_line":""},{"line_number":251,"context_line":"    def disable_dhcp_helper(self, network_id):"},{"line_number":252,"context_line":"        \"\"\"Disable DHCP for a network known to the agent.\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"3a29b11f_5f3efcda","line":249,"in_reply_to":"3a29b11f_df1becc8","updated":"2015-10-21 06:57:17.000000000","message":"I agree with Hong Hui Xiao","commit_id":"1ebf750c82cf5e9aab17a7fb34d8d0b19f31b518"}],"neutron/tests/functional/agent/test_dhcp_agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"8d571bc9acc38f1452615785a644508c27915be1","unresolved":false,"context_lines":[{"line_number":280,"context_line":"            lambda: pm.active,"},{"line_number":281,"context_line":"            timeout\u003d5,"},{"line_number":282,"context_line":"            sleep\u003d0.01,"},{"line_number":283,"context_line":"            exception\u003dRuntimeError(_(\"Metadata proxy didn\u0027t spawn\")))"},{"line_number":284,"context_line":"        return (pm, network)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def test_metadata_proxy_spawned(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"da85f559_a8de266b","line":283,"updated":"2015-11-09 20:17:53.000000000","message":"nit: if you re-spin you can get rid of the _() as this is a test.","commit_id":"a779446569b7c476a75b515c522fe4049072c190"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"83f649ca1c10fc61c542102ff708e425714f9ace","unresolved":false,"context_lines":[{"line_number":280,"context_line":"            lambda: pm.active,"},{"line_number":281,"context_line":"            timeout\u003d5,"},{"line_number":282,"context_line":"            sleep\u003d0.01,"},{"line_number":283,"context_line":"            exception\u003dRuntimeError(_(\"Metadata proxy didn\u0027t spawn\")))"},{"line_number":284,"context_line":"        return (pm, network)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def test_metadata_proxy_spawned(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_819e13b7","line":283,"in_reply_to":"9a8ffd7b_c03427fd","updated":"2016-01-06 17:37:04.000000000","message":"I think I now know where you got this code, test_keepalived.py","commit_id":"a779446569b7c476a75b515c522fe4049072c190"},{"author":{"_account_id":9551,"name":"Martin Hickey","email":"martin.hickey@ie.ibm.com","username":"mhickey"},"change_message_id":"827b3e51bd3c18b8fe1c6b266ec28804bb108fba","unresolved":false,"context_lines":[{"line_number":280,"context_line":"            lambda: pm.active,"},{"line_number":281,"context_line":"            timeout\u003d5,"},{"line_number":282,"context_line":"            sleep\u003d0.01,"},{"line_number":283,"context_line":"            exception\u003dRuntimeError(_(\"Metadata proxy didn\u0027t spawn\")))"},{"line_number":284,"context_line":"        return (pm, network)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def test_metadata_proxy_spawned(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"9a8ffd7b_c03427fd","line":283,"in_reply_to":"da85f559_a8de266b","updated":"2015-11-27 15:58:15.000000000","message":"+1","commit_id":"a779446569b7c476a75b515c522fe4049072c190"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"0ab63b4954a45d2a27c4df8513c6b847139e2f45","unresolved":false,"context_lines":[{"line_number":280,"context_line":"            lambda: pm.active,"},{"line_number":281,"context_line":"            timeout\u003d5,"},{"line_number":282,"context_line":"            sleep\u003d0.01,"},{"line_number":283,"context_line":"            exception\u003dRuntimeError(_(\"Metadata proxy didn\u0027t spawn\")))"},{"line_number":284,"context_line":"        return (pm, network)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def test_metadata_proxy_spawned(self):"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_a1cf7e54","line":283,"in_reply_to":"fa69d971_819e13b7","updated":"2016-01-07 05:47:51.000000000","message":"you got me","commit_id":"a779446569b7c476a75b515c522fe4049072c190"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"83f649ca1c10fc61c542102ff708e425714f9ace","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        return (pm, network)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def test_metadata_proxy_spawned(self):"},{"line_number":287,"context_line":"        self._spawn_network_metadata_proxy()"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def test_metadata_proxy_respawned(self):"},{"line_number":290,"context_line":"        pm, network \u003d self._spawn_network_metadata_proxy()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_61cc3fbb","line":287,"updated":"2016-01-06 17:37:04.000000000","message":"You actually don\u0027t need this test, as the respawned one will blow up if it doesn\u0027t spawn successfully initially.  That\u0027s also what the keepalived test does.","commit_id":"a779446569b7c476a75b515c522fe4049072c190"},{"author":{"_account_id":11159,"name":"Hong Hui Xiao","email":"honghui_xiao@yeah.net","username":"HongHuiXiao"},"change_message_id":"0ab63b4954a45d2a27c4df8513c6b847139e2f45","unresolved":false,"context_lines":[{"line_number":284,"context_line":"        return (pm, network)"},{"line_number":285,"context_line":""},{"line_number":286,"context_line":"    def test_metadata_proxy_spawned(self):"},{"line_number":287,"context_line":"        self._spawn_network_metadata_proxy()"},{"line_number":288,"context_line":""},{"line_number":289,"context_line":"    def test_metadata_proxy_respawned(self):"},{"line_number":290,"context_line":"        pm, network \u003d self._spawn_network_metadata_proxy()"}],"source_content_type":"text/x-python","patch_set":2,"id":"fa69d971_61d506e3","line":287,"in_reply_to":"fa69d971_61cc3fbb","updated":"2016-01-07 05:47:51.000000000","message":"Done","commit_id":"a779446569b7c476a75b515c522fe4049072c190"}]}
