)]}'
{"neutron/agent/l3/agent.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"ece39385411b8189a93215761123e8bbcf66ca83","unresolved":false,"context_lines":[{"line_number":637,"context_line":"                         \u0027old_dvr\u0027: ri.router.get(\u0027distributed\u0027),"},{"line_number":638,"context_line":"                         \u0027new_ha\u0027: router.get(\u0027ha\u0027),"},{"line_number":639,"context_line":"                         \u0027new_dvr\u0027: router.get(\u0027distributed\u0027)})"},{"line_number":640,"context_line":"            ri \u003d self._create_router(router[\u0027id\u0027], router)"},{"line_number":641,"context_line":"            self.router_info[router[\u0027id\u0027]] \u003d ri"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"        is_dvr_snat_agent \u003d (self.conf.agent_mode \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_f95d0a16","line":640,"updated":"2020-08-28 13:00:08.000000000","message":"What happens with the previous router? For example, with router namespace and all the routes and iptables rules. When creating a new one, what will happen with the previous one?","commit_id":"f3007794b89190b399bee96fc7569b47945fee9d"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7212bdd0603dc4347c41874e70b80d97bb17aff1","unresolved":false,"context_lines":[{"line_number":637,"context_line":"                         \u0027old_dvr\u0027: ri.router.get(\u0027distributed\u0027),"},{"line_number":638,"context_line":"                         \u0027new_ha\u0027: router.get(\u0027ha\u0027),"},{"line_number":639,"context_line":"                         \u0027new_dvr\u0027: router.get(\u0027distributed\u0027)})"},{"line_number":640,"context_line":"            ri \u003d self._create_router(router[\u0027id\u0027], router)"},{"line_number":641,"context_line":"            self.router_info[router[\u0027id\u0027]] \u003d ri"},{"line_number":642,"context_line":""},{"line_number":643,"context_line":"        is_dvr_snat_agent \u003d (self.conf.agent_mode \u003d\u003d"}],"source_content_type":"text/x-python","patch_set":4,"id":"9f560f44_1697d63c","line":640,"in_reply_to":"9f560f44_f95d0a16","updated":"2020-08-31 07:32:14.000000000","message":"This is change in update router process so router should still be there. It shouldn\u0027t be gone so I don\u0027t think there is any issue with that actually.\nAnd also, please note that this _create_router() method just creates RouterInfo object from correct class. It don\u0027t really creates namespaces and other things on the node.\nThat will be processed later during the update process.","commit_id":"f3007794b89190b399bee96fc7569b47945fee9d"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"1f266e7faa657bc505850cbc0902859b57860456","unresolved":false,"context_lines":[{"line_number":627,"context_line":"    def _process_updated_router(self, router):"},{"line_number":628,"context_line":"        ri \u003d self.router_info[router[\u0027id\u0027]]"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        if (ri.router.get(\u0027ha\u0027) !\u003d router.get(\u0027ha\u0027) or"},{"line_number":631,"context_line":"                ri.router.get(\u0027distributed\u0027) !\u003d router.get(\u0027distributed\u0027)):"},{"line_number":632,"context_line":"            LOG.warning(\u0027Type of the router %(id)s changed. \u0027"},{"line_number":633,"context_line":"                        \u0027Old type: ha\u003d%(old_ha)s; distributed\u003d%(old_dvr)s; \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f621f24_cd7ccd22","line":630,"range":{"start_line":630,"start_character":35,"end_line":630,"end_character":51},"updated":"2020-10-28 13:18:04.000000000","message":"should this be checked for None?","commit_id":"51b401680c0c00247fe155c7c33c7a8fcfd67129"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"34bd5c8f2058aaf85dce985d04b573de11937bfa","unresolved":false,"context_lines":[{"line_number":627,"context_line":"    def _process_updated_router(self, router):"},{"line_number":628,"context_line":"        ri \u003d self.router_info[router[\u0027id\u0027]]"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        if (ri.router.get(\u0027ha\u0027) !\u003d router.get(\u0027ha\u0027) or"},{"line_number":631,"context_line":"                ri.router.get(\u0027distributed\u0027) !\u003d router.get(\u0027distributed\u0027)):"},{"line_number":632,"context_line":"            LOG.warning(\u0027Type of the router %(id)s changed. \u0027"},{"line_number":633,"context_line":"                        \u0027Old type: ha\u003d%(old_ha)s; distributed\u003d%(old_dvr)s; \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f621f24_abd04f52","line":630,"range":{"start_line":630,"start_character":35,"end_line":630,"end_character":51},"in_reply_to":"1f621f24_66d2f336","updated":"2020-10-29 05:25:11.000000000","message":"My concern is if update doesn\u0027t deal with \u0027ha\u0027 or \u0027distributed\u0027 at all. get(\u0027..\u0027) will return None then. I thought if these attributes are changed then it will be either True or False, but I could be wrong.","commit_id":"51b401680c0c00247fe155c7c33c7a8fcfd67129"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"63a7d3c7dddb4bc283295c4fe580dc86cafa3879","unresolved":false,"context_lines":[{"line_number":627,"context_line":"    def _process_updated_router(self, router):"},{"line_number":628,"context_line":"        ri \u003d self.router_info[router[\u0027id\u0027]]"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        if (ri.router.get(\u0027ha\u0027) !\u003d router.get(\u0027ha\u0027) or"},{"line_number":631,"context_line":"                ri.router.get(\u0027distributed\u0027) !\u003d router.get(\u0027distributed\u0027)):"},{"line_number":632,"context_line":"            LOG.warning(\u0027Type of the router %(id)s changed. \u0027"},{"line_number":633,"context_line":"                        \u0027Old type: ha\u003d%(old_ha)s; distributed\u003d%(old_dvr)s; \u0027"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f621f24_66d2f336","line":630,"range":{"start_line":630,"start_character":35,"end_line":630,"end_character":51},"in_reply_to":"1f621f24_cd7ccd22","updated":"2020-10-28 21:14:25.000000000","message":"but if it was changed to or from None, then we should also \"refresh\" RouterInfo object for this router.","commit_id":"51b401680c0c00247fe155c7c33c7a8fcfd67129"},{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"1f266e7faa657bc505850cbc0902859b57860456","unresolved":false,"context_lines":[{"line_number":628,"context_line":"        ri \u003d self.router_info[router[\u0027id\u0027]]"},{"line_number":629,"context_line":""},{"line_number":630,"context_line":"        if (ri.router.get(\u0027ha\u0027) !\u003d router.get(\u0027ha\u0027) or"},{"line_number":631,"context_line":"                ri.router.get(\u0027distributed\u0027) !\u003d router.get(\u0027distributed\u0027)):"},{"line_number":632,"context_line":"            LOG.warning(\u0027Type of the router %(id)s changed. \u0027"},{"line_number":633,"context_line":"                        \u0027Old type: ha\u003d%(old_ha)s; distributed\u003d%(old_dvr)s; \u0027"},{"line_number":634,"context_line":"                        \u0027New type: ha\u003d%(new_ha)s; distributed\u003d%(new_dvr)s\u0027,"}],"source_content_type":"text/x-python","patch_set":5,"id":"1f621f24_ad799130","line":631,"range":{"start_line":631,"start_character":48,"end_line":631,"end_character":73},"updated":"2020-10-28 13:18:04.000000000","message":"ditto","commit_id":"51b401680c0c00247fe155c7c33c7a8fcfd67129"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"aee2e6b24f7594fd344f233da2072ee0d6a4607f","unresolved":false,"context_lines":[{"line_number":639,"context_line":"                         \u0027old_ha\u0027: ri.router.get(\u0027ha\u0027),"},{"line_number":640,"context_line":"                         \u0027old_dvr\u0027: ri.router.get(\u0027distributed\u0027),"},{"line_number":641,"context_line":"                         \u0027new_ha\u0027: router.get(\u0027ha\u0027),"},{"line_number":642,"context_line":"                         \u0027new_dvr\u0027: router.get(\u0027distributed\u0027)})"},{"line_number":643,"context_line":"            ri \u003d self._create_router(router[\u0027id\u0027], router)"},{"line_number":644,"context_line":"            self.router_info[router[\u0027id\u0027]] \u003d ri"},{"line_number":645,"context_line":""}],"source_content_type":"text/x-python","patch_set":7,"id":"1f621f24_477555f9","line":642,"updated":"2020-11-16 21:02:15.000000000","message":"nit: these two values are already in a \"local\" var, router_ha and router_distributed","commit_id":"489e0ead7297e3b17ca2bf8c4bea9701ad14a939"}],"neutron/tests/unit/agent/l3/test_agent.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"fb69b7a4f5f5e5ad299b6e40f08861560e98592c","unresolved":false,"context_lines":[{"line_number":2943,"context_line":"                  \u0027external_gateway_info\u0027: {\u0027network_id\u0027: \u0027aaa\u0027}}"},{"line_number":2944,"context_line":""},{"line_number":2945,"context_line":"        agent._process_router_if_compatible(router)"},{"line_number":2946,"context_line":"        agent._process_router_if_compatible(router)"},{"line_number":2947,"context_line":"        self.assertIn(router[\u0027id\u0027], agent.router_info)"},{"line_number":2948,"context_line":""},{"line_number":2949,"context_line":"    def test_process_router_if_compatible_revision_match(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_2e477a79","line":2946,"range":{"start_line":2946,"start_character":8,"end_line":2946,"end_character":51},"updated":"2020-08-25 13:15:22.000000000","message":"please comment why need 2 times","commit_id":"fe1f46603633f13e766f36fb27cadb738df1cd3a"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"7212bdd0603dc4347c41874e70b80d97bb17aff1","unresolved":false,"context_lines":[{"line_number":2943,"context_line":"                  \u0027external_gateway_info\u0027: {\u0027network_id\u0027: \u0027aaa\u0027}}"},{"line_number":2944,"context_line":""},{"line_number":2945,"context_line":"        agent._process_router_if_compatible(router)"},{"line_number":2946,"context_line":"        agent._process_router_if_compatible(router)"},{"line_number":2947,"context_line":"        self.assertIn(router[\u0027id\u0027], agent.router_info)"},{"line_number":2948,"context_line":""},{"line_number":2949,"context_line":"    def test_process_router_if_compatible_revision_match(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9f560f44_0d4d3c3a","line":2946,"range":{"start_line":2946,"start_character":8,"end_line":2946,"end_character":51},"in_reply_to":"9f560f44_2e477a79","updated":"2020-08-31 07:32:14.000000000","message":"It\u0027s just mistake. Sorry","commit_id":"fe1f46603633f13e766f36fb27cadb738df1cd3a"}]}
