)]}'
{"neutron/agent/l3/agent.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6bf1fb1f7e92cd0b9e96a1879d744877cb5e6d3c","unresolved":false,"context_lines":[{"line_number":601,"context_line":"        if router[\u0027id\u0027] not in self.router_info:"},{"line_number":602,"context_line":"            self._process_added_router(router)"},{"line_number":603,"context_line":"        else:"},{"line_number":604,"context_line":"            self._process_updated_router(router)"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"    def _process_added_router(self, router):"},{"line_number":607,"context_line":"        self._router_added(router[\u0027id\u0027], router)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_e58de27b","line":604,"updated":"2019-09-17 14:00:07.000000000","message":"Since this is only a few lines now, can probably be moved to caller","commit_id":"b112a00722e6d2138a32345a1e432c1600b27e19"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab3d7489558f2320c710972c55cfcff3623fdb12","unresolved":false,"context_lines":[{"line_number":601,"context_line":"        if router[\u0027id\u0027] not in self.router_info:"},{"line_number":602,"context_line":"            self._process_added_router(router)"},{"line_number":603,"context_line":"        else:"},{"line_number":604,"context_line":"            self._process_updated_router(router)"},{"line_number":605,"context_line":""},{"line_number":606,"context_line":"    def _process_added_router(self, router):"},{"line_number":607,"context_line":"        self._router_added(router[\u0027id\u0027], router)"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_a57daae8","line":604,"in_reply_to":"3fa7e38b_e58de27b","updated":"2019-09-19 09:30:16.000000000","message":"Maybe it will drag lots of test cases, so better remain it.","commit_id":"b112a00722e6d2138a32345a1e432c1600b27e19"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6bf1fb1f7e92cd0b9e96a1879d744877cb5e6d3c","unresolved":false,"context_lines":[{"line_number":756,"context_line":""},{"line_number":757,"context_line":"            try:"},{"line_number":758,"context_line":"                self._process_router_if_compatible(router)"},{"line_number":759,"context_line":"            except l3_exc.RouterNotCompatibleWithAgent as e:"},{"line_number":760,"context_line":"                log_verbose_exc(e.msg, router)"},{"line_number":761,"context_line":"                # Was the router previously handled by this agent?"},{"line_number":762,"context_line":"                if router[\u0027id\u0027] in self.router_info:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_25abfad6","line":759,"updated":"2019-09-17 14:00:07.000000000","message":"This can no longer happen so try can be removed.","commit_id":"b112a00722e6d2138a32345a1e432c1600b27e19"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab3d7489558f2320c710972c55cfcff3623fdb12","unresolved":false,"context_lines":[{"line_number":756,"context_line":""},{"line_number":757,"context_line":"            try:"},{"line_number":758,"context_line":"                self._process_router_if_compatible(router)"},{"line_number":759,"context_line":"            except l3_exc.RouterNotCompatibleWithAgent as e:"},{"line_number":760,"context_line":"                log_verbose_exc(e.msg, router)"},{"line_number":761,"context_line":"                # Was the router previously handled by this agent?"},{"line_number":762,"context_line":"                if router[\u0027id\u0027] in self.router_info:"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_651252b4","line":759,"in_reply_to":"3fa7e38b_25abfad6","updated":"2019-09-19 09:30:16.000000000","message":"Done","commit_id":"b112a00722e6d2138a32345a1e432c1600b27e19"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab3d7489558f2320c710972c55cfcff3623fdb12","unresolved":false,"context_lines":[{"line_number":624,"context_line":"                self._resync_router(update)"},{"line_number":625,"context_line":""},{"line_number":626,"context_line":"    def _process_router_if_compatible(self, router):"},{"line_number":627,"context_line":"        # Either ex_net_id or handle_internal_only_routers must be set"},{"line_number":628,"context_line":"        ex_net_id \u003d (router[\u0027external_gateway_info\u0027] or {}).get(\u0027network_id\u0027)"},{"line_number":629,"context_line":"        if not ex_net_id and not self.conf.handle_internal_only_routers:"},{"line_number":630,"context_line":"            raise l3_exc.RouterNotCompatibleWithAgent(router_id\u003drouter[\u0027id\u0027])"},{"line_number":631,"context_line":""},{"line_number":632,"context_line":"        # If target_ex_net_id and ex_net_id are set they must be equal"},{"line_number":633,"context_line":"        target_ex_net_id \u003d self._fetch_external_net_id()"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_d545cd71","side":"PARENT","line":630,"range":{"start_line":627,"start_character":0,"end_line":630,"end_character":77},"updated":"2019-09-19 09:30:16.000000000","message":"This is not related, I will put this back.","commit_id":"10c5f451ce3737e9affb43cffb2f4cf081cda462"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"93ee036e3394d268bc53cd8d3f2de17cd88c717f","unresolved":false,"context_lines":[{"line_number":636,"context_line":"            # by forcing a check by RPC."},{"line_number":637,"context_line":"            if ex_net_id !\u003d self._fetch_external_net_id(force\u003dTrue):"},{"line_number":638,"context_line":"                raise l3_exc.RouterNotCompatibleWithAgent("},{"line_number":639,"context_line":"                    router_id\u003drouter[\u0027id\u0027])"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        if router[\u0027id\u0027] not in self.router_info:"},{"line_number":642,"context_line":"            self._process_added_router(router)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_483b98d0","side":"PARENT","line":639,"updated":"2019-09-18 13:52:51.000000000","message":"L3 agent could have more than one external network, but a router should have only one. You should retrieve all external networks from this agent and see if the router external one is in this set.","commit_id":"10c5f451ce3737e9affb43cffb2f4cf081cda462"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab3d7489558f2320c710972c55cfcff3623fdb12","unresolved":false,"context_lines":[{"line_number":636,"context_line":"            # by forcing a check by RPC."},{"line_number":637,"context_line":"            if ex_net_id !\u003d self._fetch_external_net_id(force\u003dTrue):"},{"line_number":638,"context_line":"                raise l3_exc.RouterNotCompatibleWithAgent("},{"line_number":639,"context_line":"                    router_id\u003drouter[\u0027id\u0027])"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        if router[\u0027id\u0027] not in self.router_info:"},{"line_number":642,"context_line":"            self._process_added_router(router)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_d59e2d06","side":"PARENT","line":639,"in_reply_to":"3fa7e38b_483b98d0","updated":"2019-09-19 09:30:16.000000000","message":"We talked this last night in l3 meeting, IMO, there is no relationship between external network and L3 agent now. So this check is not needed. Thoughts?","commit_id":"10c5f451ce3737e9affb43cffb2f4cf081cda462"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"3a8d8bf293267ea9062a346f820b663ae872c03b","unresolved":false,"context_lines":[{"line_number":636,"context_line":"            # by forcing a check by RPC."},{"line_number":637,"context_line":"            if ex_net_id !\u003d self._fetch_external_net_id(force\u003dTrue):"},{"line_number":638,"context_line":"                raise l3_exc.RouterNotCompatibleWithAgent("},{"line_number":639,"context_line":"                    router_id\u003drouter[\u0027id\u0027])"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        if router[\u0027id\u0027] not in self.router_info:"},{"line_number":642,"context_line":"            self._process_added_router(router)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_e1cfda7c","side":"PARENT","line":639,"in_reply_to":"3fa7e38b_d59e2d06","updated":"2019-09-20 08:47:26.000000000","message":"This removed code was try to get external_network_id from neutron-server. On neutron server this function is in https://github.com/openstack/neutron/blob/b303f4409ea270d53866c7e296aa76d6b603ead8/neutron/db/external_net_db.py#L146 - as You can see it don\u0027t returns external network id which is set to the router. It tries to find all networks set as external and expects that there will be only one such network always. That is not true now of course as we can have many external networks.\nAlso on neutron-server side, it seems that there is no way to have more than one external network plugged. If You will try to set second gateway for router, it will update router and replace gateway with new one (if it\u0027s possible).\n\nSo I\u0027m not sure if we need any additional check here TBH but maybe I\u0027m missing something","commit_id":"10c5f451ce3737e9affb43cffb2f4cf081cda462"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f606f775c3e6ce958eb200ea67dbf6dd0c25373a","unresolved":false,"context_lines":[{"line_number":636,"context_line":"            # by forcing a check by RPC."},{"line_number":637,"context_line":"            if ex_net_id !\u003d self._fetch_external_net_id(force\u003dTrue):"},{"line_number":638,"context_line":"                raise l3_exc.RouterNotCompatibleWithAgent("},{"line_number":639,"context_line":"                    router_id\u003drouter[\u0027id\u0027])"},{"line_number":640,"context_line":""},{"line_number":641,"context_line":"        if router[\u0027id\u0027] not in self.router_info:"},{"line_number":642,"context_line":"            self._process_added_router(router)"}],"source_content_type":"text/x-python","patch_set":4,"id":"3fa7e38b_c172de49","side":"PARENT","line":639,"in_reply_to":"3fa7e38b_e1cfda7c","updated":"2019-09-20 08:53:04.000000000","message":"I\u0027m ok with this","commit_id":"10c5f451ce3737e9affb43cffb2f4cf081cda462"}],"neutron/api/rpc/handlers/l3_rpc.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"70343d59cd2c0232df76090735eb28ad36e3b75a","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    # 1.10 Added update_all_ha_network_port_statuses"},{"line_number":48,"context_line":"    # 1.11 Added get_host_ha_router_count"},{"line_number":49,"context_line":"    # 1.12 Added get_networks"},{"line_number":50,"context_line":"    target \u003d oslo_messaging.Target(version\u003d\u00271.12\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @property"},{"line_number":53,"context_line":"    def plugin(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_4b5bb62d","line":50,"updated":"2019-09-16 20:52:19.000000000","message":"shouldn\u0027t You bump version here also?","commit_id":"e51fcd8ef12dd6bd499a0f04192806d0cb9df3fc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"dc788b3ba49d8844e611277fed2524de6a2886cd","unresolved":false,"context_lines":[{"line_number":47,"context_line":"    # 1.10 Added update_all_ha_network_port_statuses"},{"line_number":48,"context_line":"    # 1.11 Added get_host_ha_router_count"},{"line_number":49,"context_line":"    # 1.12 Added get_networks"},{"line_number":50,"context_line":"    target \u003d oslo_messaging.Target(version\u003d\u00271.12\u0027)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    @property"},{"line_number":53,"context_line":"    def plugin(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"3fa7e38b_4182b551","line":50,"in_reply_to":"3fa7e38b_4b5bb62d","updated":"2019-09-17 00:00:40.000000000","message":"Done","commit_id":"e51fcd8ef12dd6bd499a0f04192806d0cb9df3fc"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"6bf1fb1f7e92cd0b9e96a1879d744877cb5e6d3c","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        net_id \u003d self.plugin.get_external_network_id(context)"},{"line_number":254,"context_line":"        LOG.debug(\"External network ID returned to l3 agent: %s\","},{"line_number":255,"context_line":"                  net_id)"},{"line_number":256,"context_line":"        return net_id"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def get_service_plugin_list(self, context, **kwargs):"},{"line_number":259,"context_line":"        return directory.get_plugins().keys()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_25f53acc","side":"PARENT","line":256,"updated":"2019-09-17 14:00:07.000000000","message":"I think bigswitch still calls this if it matters","commit_id":"10c5f451ce3737e9affb43cffb2f4cf081cda462"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"ab3d7489558f2320c710972c55cfcff3623fdb12","unresolved":false,"context_lines":[{"line_number":253,"context_line":"        net_id \u003d self.plugin.get_external_network_id(context)"},{"line_number":254,"context_line":"        LOG.debug(\"External network ID returned to l3 agent: %s\","},{"line_number":255,"context_line":"                  net_id)"},{"line_number":256,"context_line":"        return net_id"},{"line_number":257,"context_line":""},{"line_number":258,"context_line":"    def get_service_plugin_list(self, context, **kwargs):"},{"line_number":259,"context_line":"        return directory.get_plugins().keys()"}],"source_content_type":"text/x-python","patch_set":2,"id":"3fa7e38b_852aeee4","side":"PARENT","line":256,"in_reply_to":"3fa7e38b_25f53acc","updated":"2019-09-19 09:30:16.000000000","message":"Make sense, let\u0027s remove the Neutron L3 agent side stuff first only.","commit_id":"10c5f451ce3737e9affb43cffb2f4cf081cda462"}]}
