)]}'
{"neutron/agent/l3/router_info.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"e08e0183328e55c7feeba9655aff59596f8a190e","unresolved":true,"context_lines":[{"line_number":204,"context_line":"               \u0027via\u0027, route[\u0027nexthop\u0027]]"},{"line_number":205,"context_line":"        if interface_name:"},{"line_number":206,"context_line":"            cmd \u003d [\u0027ip\u0027, \u0027route\u0027, operation, \u0027to\u0027, route[\u0027destination\u0027],"},{"line_number":207,"context_line":"                   \u0027via\u0027, route[\u0027nexthop\u0027], \u0027dev\u0027, interface_name, \u0027onlink\u0027]"},{"line_number":208,"context_line":"        ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":209,"context_line":"        ip_wrapper.netns.execute(cmd, check_exit_code\u003dFalse)"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"dee01687_6fd84470","line":207,"range":{"start_line":207,"start_character":44,"end_line":207,"end_character":75},"updated":"2021-09-01 09:23:13.000000000","message":"The GW IP should be accessible and routable from the router external interface. Why do we need to specify the interface?","commit_id":"69e45f2a6a379c934d2481c0bfe85512c77fa45c"},{"author":{"_account_id":32792,"name":"Alexey Pustovitin","display_name":"Alexey Pustovitin","email":"apustovitin@gmail.com","username":"apustovitin"},"change_message_id":"c421f9595dd65f8b9cb36f54a961072c370a1ccf","unresolved":true,"context_lines":[{"line_number":204,"context_line":"               \u0027via\u0027, route[\u0027nexthop\u0027]]"},{"line_number":205,"context_line":"        if interface_name:"},{"line_number":206,"context_line":"            cmd \u003d [\u0027ip\u0027, \u0027route\u0027, operation, \u0027to\u0027, route[\u0027destination\u0027],"},{"line_number":207,"context_line":"                   \u0027via\u0027, route[\u0027nexthop\u0027], \u0027dev\u0027, interface_name, \u0027onlink\u0027]"},{"line_number":208,"context_line":"        ip_wrapper \u003d ip_lib.IPWrapper(namespace\u003dnamespace)"},{"line_number":209,"context_line":"        ip_wrapper.netns.execute(cmd, check_exit_code\u003dFalse)"},{"line_number":210,"context_line":""}],"source_content_type":"text/x-python","patch_set":1,"id":"f6888d5f_7b07bb7e","line":207,"range":{"start_line":207,"start_character":44,"end_line":207,"end_character":75},"in_reply_to":"dee01687_6fd84470","updated":"2021-09-01 10:42:16.000000000","message":"Yes, GW IP is accessible and routable from the router external interface. But when openstack is adding route and trigering linux command [\u0027ip\u0027, \u0027route\u0027, operation, \u0027to\u0027, route[\u0027destination\u0027], \u0027via\u0027, route[\u0027nexthop\u0027]], if route[\u0027destination\u0027] is not local network the add process failed with log messages \n\n2021-08-31 13:59:11.097 747 DEBUG neutron.agent.linux.utils [-] Running command: [\u0027sudo\u0027, \u0027neutron-rootwrap\u0027, \u0027/etc/neutron/rootwrap.conf\u0027, \u0027ip\u0027, \u0027netns\u0027, \u0027exec\u0027, \u0027qrouter-18958d58-adf6-4998-a344-f74bc509b676\u0027, \u0027ip\u0027, \u0027route\u0027, \u0027replace\u0027, \u0027to\u0027, \u0027172.178.178.0/24\u0027, \u0027via\u0027, \u0027172.29.9.2\u0027] create_process /usr/lib/python3/dist-packages/neutron/agent/linux/utils.py:87\n2021-08-31 13:59:11.317 747 ERROR neutron.agent.linux.utils [-] Exit code: 2; Stdin: ; Stdout: ; Stderr: Error: Nexthop has invalid gateway.\n\n As workaround I calculate interface corresponding to GW IP subnet and add route with onlink option: \n[\u0027ip\u0027, \u0027route\u0027, operation, \u0027to\u0027, route[\u0027destination\u0027], \u0027via\u0027, route[\u0027nexthop\u0027], \u0027dev\u0027, interface_name, \u0027onlink\u0027]","commit_id":"69e45f2a6a379c934d2481c0bfe85512c77fa45c"}]}
