)]}'
{"neutron_dynamic_routing/services/bgp/bgp_plugin.py":[{"author":{"_account_id":841,"name":"Akihiro Motoki","email":"amotoki@gmail.com","username":"amotoki"},"change_message_id":"c481dfe90c923491bbe364e871476e44323187af","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        if event \u003d\u003d events.AFTER_CREATE:"},{"line_number":258,"context_line":"            self._handle_router_interface_after_create(payload)"},{"line_number":259,"context_line":"        if event \u003d\u003d events.AFTER_DELETE:"},{"line_number":260,"context_line":"            gw_network \u003d payload.metadata.get(\u0027network_id\u0027)"},{"line_number":261,"context_line":"            next_hops \u003d self._next_hops_from_gateway_ips("},{"line_number":262,"context_line":"                payload.metadata.get(\u0027gateway_ips\u0027))"},{"line_number":263,"context_line":"            ctx \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":1,"id":"5fc1f717_cecb241c","line":260,"range":{"start_line":260,"start_character":41,"end_line":260,"end_character":45},"updated":"2019-03-06 18:40:05.000000000","message":"Question for further maintenance:\nIs there any reason to use .get() instead of [\u0027network_id\u0027]?\n\u0027network_id\u0027 is always populated by the publisher in the neutron code. IMHO if it is not optional, it is better to use [] operator.\n\nNote that I don\u0027t want to block this by this question and vote +2.","commit_id":"174d8427f4e31d43ba8c64908148ec9d1caa5cd5"},{"author":{"_account_id":4187,"name":"Ryan Tidwell","email":"rtidwell@suse.com","username":"ryan-tidwell"},"change_message_id":"53b89c58a873d162675f0f448e1ac0df36921fd1","unresolved":false,"context_lines":[{"line_number":257,"context_line":"        if event \u003d\u003d events.AFTER_CREATE:"},{"line_number":258,"context_line":"            self._handle_router_interface_after_create(payload)"},{"line_number":259,"context_line":"        if event \u003d\u003d events.AFTER_DELETE:"},{"line_number":260,"context_line":"            gw_network \u003d payload.metadata.get(\u0027network_id\u0027)"},{"line_number":261,"context_line":"            next_hops \u003d self._next_hops_from_gateway_ips("},{"line_number":262,"context_line":"                payload.metadata.get(\u0027gateway_ips\u0027))"},{"line_number":263,"context_line":"            ctx \u003d context.get_admin_context()"}],"source_content_type":"text/x-python","patch_set":1,"id":"ffb9cba7_eb11e2ad","line":260,"range":{"start_line":260,"start_character":41,"end_line":260,"end_character":45},"in_reply_to":"5fc1f717_cecb241c","updated":"2019-04-25 19:48:31.000000000","message":"The assumption is that we\u0027ll always get a network_id here and at L275. In case we don\u0027t, the failure would manifest itself in simply failing to revoke or emit routes in response to a change to a router interface. It won\u0027t be obvious to users, and even so the problem would iron itself out on the next the next agent re-sync (by default every 30 seconds). gw_network being set to None shouldn\u0027t cause a stack trace, and within 30 seconds all the proper routes would be located and sent to the agent. Because the callback is dealing with router interface events rather than a compute port event, the need to quickly revoke/emit routes isn\u0027t that great. IMO we can tolerate a delay here should the worst case scenario strike.\n\nAll this is to say, even the worst case scenario where network_id isn\u0027t set on the payload doesn\u0027t constitute a bug with major (or even easily visible) impact.","commit_id":"174d8427f4e31d43ba8c64908148ec9d1caa5cd5"}]}
