)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"8fc397d022ff532c1c67609584de3cb0f32eb340","unresolved":true,"context_lines":[{"line_number":4,"context_line":"Commit:     Hemanth Nakkina \u003chemanth.nakkina@canonical.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-02-17 14:31:02 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"rfp interface deleted when router is disabled/enabled"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. When dvr router is disabled and enabled back, the rfp"},{"line_number":10,"context_line":"interfaces are deleted on the nodes without snat-* namespace."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"0d585f96_5f3ec5c6","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":53},"updated":"2021-02-17 09:49:49.000000000","message":"Please reword to summarize the fix, not the bug. Currently it might be confusing.","commit_id":"472bce2917879376f0b0004471b4ba12e40992b1"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"636803cb84e4ca8b201d59946ed0372c7c137445","unresolved":false,"context_lines":[{"line_number":4,"context_line":"Commit:     Hemanth Nakkina \u003chemanth.nakkina@canonical.com\u003e"},{"line_number":5,"context_line":"CommitDate: 2021-02-17 14:31:02 +0530"},{"line_number":6,"context_line":""},{"line_number":7,"context_line":"rfp interface deleted when router is disabled/enabled"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"1. When dvr router is disabled and enabled back, the rfp"},{"line_number":10,"context_line":"interfaces are deleted on the nodes without snat-* namespace."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"e682bb5e_b573e976","line":7,"range":{"start_line":7,"start_character":0,"end_line":7,"end_character":53},"in_reply_to":"0d585f96_5f3ec5c6","updated":"2021-02-17 10:48:23.000000000","message":"Done","commit_id":"472bce2917879376f0b0004471b4ba12e40992b1"}],"neutron/agent/l3/dvr_edge_router.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"8fc397d022ff532c1c67609584de3cb0f32eb340","unresolved":true,"context_lines":[{"line_number":187,"context_line":"        # TODO(mlavalle): in the near future, this method should contain the"},{"line_number":188,"context_line":"        # code in the L3 agent that creates a gateway for a dvr. The first step"},{"line_number":189,"context_line":"        # is to move the creation of the snat namespace here"},{"line_number":190,"context_line":"        if self._is_this_snat_host():"},{"line_number":191,"context_line":"            self.snat_namespace.create()"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def _get_snat_int_device_name(self, port_id):"},{"line_number":194,"context_line":"        long_name \u003d lib_constants.SNAT_INT_DEV_PREFIX + port_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"f3d3f61c_d042ed9d","line":191,"range":{"start_line":190,"start_character":8,"end_line":191,"end_character":40},"updated":"2021-02-17 09:49:49.000000000","message":"is it required for the bugfix?","commit_id":"472bce2917879376f0b0004471b4ba12e40992b1"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"b1d9c29ba222f00971e4b64c72543a26f74143ed","unresolved":true,"context_lines":[{"line_number":187,"context_line":"        # TODO(mlavalle): in the near future, this method should contain the"},{"line_number":188,"context_line":"        # code in the L3 agent that creates a gateway for a dvr. The first step"},{"line_number":189,"context_line":"        # is to move the creation of the snat namespace here"},{"line_number":190,"context_line":"        if self._is_this_snat_host():"},{"line_number":191,"context_line":"            self.snat_namespace.create()"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def _get_snat_int_device_name(self, port_id):"},{"line_number":194,"context_line":"        long_name \u003d lib_constants.SNAT_INT_DEV_PREFIX + port_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"3e98fffd_677c2b5a","line":191,"range":{"start_line":190,"start_character":8,"end_line":191,"end_character":40},"in_reply_to":"b9d6aa2c_6baa8afb","updated":"2021-02-17 11:53:20.000000000","message":"Ah, right, I should\u0027ve red commit message more carefully, thanks for clarification","commit_id":"472bce2917879376f0b0004471b4ba12e40992b1"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"636803cb84e4ca8b201d59946ed0372c7c137445","unresolved":true,"context_lines":[{"line_number":187,"context_line":"        # TODO(mlavalle): in the near future, this method should contain the"},{"line_number":188,"context_line":"        # code in the L3 agent that creates a gateway for a dvr. The first step"},{"line_number":189,"context_line":"        # is to move the creation of the snat namespace here"},{"line_number":190,"context_line":"        if self._is_this_snat_host():"},{"line_number":191,"context_line":"            self.snat_namespace.create()"},{"line_number":192,"context_line":""},{"line_number":193,"context_line":"    def _get_snat_int_device_name(self, port_id):"},{"line_number":194,"context_line":"        long_name \u003d lib_constants.SNAT_INT_DEV_PREFIX + port_id"}],"source_content_type":"text/x-python","patch_set":2,"id":"b9d6aa2c_6baa8afb","line":191,"range":{"start_line":190,"start_character":8,"end_line":191,"end_character":40},"in_reply_to":"f3d3f61c_d042ed9d","updated":"2021-02-17 10:48:23.000000000","message":"This fix is for the 1st point in the commit message.\nAs the snat namespace is created during initialisation phase irrespective of snat gateway port bound on that host, as per the code this always falls under category SNAT rescheduled to different host [1]. \n\nThis can be fixed by \na. modifying L56 in [1] to do unplug interface, delete snat namespace (like the changes done in external_gateway_updated in this patch) \nOR \nb. to create namespace at initialisation stage only if gateway port is bound to this host.\n\nI preferred (b) since the snat namespace should never get created.\nLet me know if you think otherwise.\n\n[1] https://opendev.org/openstack/neutron/src/commit/d8d21a17782439fcdc5d58278f71be3a496251ae/neutron/agent/l3/dvr_edge_router.py#L49-L56","commit_id":"472bce2917879376f0b0004471b4ba12e40992b1"}],"neutron/tests/functional/agent/l3/test_dvr_router.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"8fc397d022ff532c1c67609584de3cb0f32eb340","unresolved":true,"context_lines":[{"line_number":807,"context_line":"        router_updated \u003d self.manage_router(self.agent, router_info_copy)"},{"line_number":808,"context_line":"        self._assert_dvr_floating_ips(router_updated)"},{"line_number":809,"context_line":""},{"line_number":810,"context_line":"    def test_dvr_router_fip_associations_exist_when_l3_agent_moved(self):"},{"line_number":811,"context_line":"        \"\"\"Test to validate the fip associations when l3 agent is moved."},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        This test validates the fip associations once the l3 agent is removed."}],"source_content_type":"text/x-python","patch_set":2,"id":"afa5fd68_0f25bb06","line":810,"range":{"start_line":810,"start_character":52,"end_line":810,"end_character":66},"updated":"2021-02-17 09:49:49.000000000","message":"AFAIU agent is not moved anywhere, maybe better wording would be \u0027router snat is removed from agent\u0027","commit_id":"472bce2917879376f0b0004471b4ba12e40992b1"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"636803cb84e4ca8b201d59946ed0372c7c137445","unresolved":false,"context_lines":[{"line_number":807,"context_line":"        router_updated \u003d self.manage_router(self.agent, router_info_copy)"},{"line_number":808,"context_line":"        self._assert_dvr_floating_ips(router_updated)"},{"line_number":809,"context_line":""},{"line_number":810,"context_line":"    def test_dvr_router_fip_associations_exist_when_l3_agent_moved(self):"},{"line_number":811,"context_line":"        \"\"\"Test to validate the fip associations when l3 agent is moved."},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        This test validates the fip associations once the l3 agent is removed."}],"source_content_type":"text/x-python","patch_set":2,"id":"cf233727_1aa330c1","line":810,"range":{"start_line":810,"start_character":52,"end_line":810,"end_character":66},"in_reply_to":"afa5fd68_0f25bb06","updated":"2021-02-17 10:48:23.000000000","message":"Done","commit_id":"472bce2917879376f0b0004471b4ba12e40992b1"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"8fc397d022ff532c1c67609584de3cb0f32eb340","unresolved":true,"context_lines":[{"line_number":810,"context_line":"    def test_dvr_router_fip_associations_exist_when_l3_agent_moved(self):"},{"line_number":811,"context_line":"        \"\"\"Test to validate the fip associations when l3 agent is moved."},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        This test validates the fip associations once the l3 agent is removed."},{"line_number":814,"context_line":"        The fip associations should exist even when the l3 agent is moved to"},{"line_number":815,"context_line":"        another host."},{"line_number":816,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"c93284bd_c3076288","line":813,"range":{"start_line":813,"start_character":58,"end_line":813,"end_character":77},"updated":"2021-02-17 09:49:49.000000000","message":"ditto, first I was trying to understand at which point agent is deleted in the test.","commit_id":"472bce2917879376f0b0004471b4ba12e40992b1"},{"author":{"_account_id":10366,"name":"Hemanth N","email":"hemanth.nakkina@canonical.com","username":"Hemanth"},"change_message_id":"636803cb84e4ca8b201d59946ed0372c7c137445","unresolved":false,"context_lines":[{"line_number":810,"context_line":"    def test_dvr_router_fip_associations_exist_when_l3_agent_moved(self):"},{"line_number":811,"context_line":"        \"\"\"Test to validate the fip associations when l3 agent is moved."},{"line_number":812,"context_line":""},{"line_number":813,"context_line":"        This test validates the fip associations once the l3 agent is removed."},{"line_number":814,"context_line":"        The fip associations should exist even when the l3 agent is moved to"},{"line_number":815,"context_line":"        another host."},{"line_number":816,"context_line":"        \"\"\""}],"source_content_type":"text/x-python","patch_set":2,"id":"8c4d2816_bc63beff","line":813,"range":{"start_line":813,"start_character":58,"end_line":813,"end_character":77},"in_reply_to":"c93284bd_c3076288","updated":"2021-02-17 10:48:23.000000000","message":"Done","commit_id":"472bce2917879376f0b0004471b4ba12e40992b1"}]}
