)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"9c48c81b8289eb0b2650c1d53766063fea57d844","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Check router routes connectivity with external gateway"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"Reject any router route or gateway update if not all route nexthops"},{"line_number":10,"context_line":"have connectivity with any gateway subnets CIDRs; in other words, all"},{"line_number":11,"context_line":"route nexthops IP addresses should belong to one gateway subnet CIDR."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #1925368"},{"line_number":14,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":2,"id":"8ad1a9a8_a12891b6","line":11,"range":{"start_line":10,"start_character":66,"end_line":11,"end_character":69},"updated":"2021-05-19 14:17:11.000000000","message":"This is an optional condition, right? I mean I can still add route like this \"to 8.8.8.8 via 1.1.1.1\" none of these IPs is belong to Neutron router gateway or router subnets.","commit_id":"d430fff1bf69f0af4fcad4f4ea40d89bf978bb89"}],"neutron/db/extraroute_db.py":[{"author":{"_account_id":5948,"name":"Oleg Bondarev","email":"obondarev@mirantis.com","username":"obondarev"},"change_message_id":"b790054d7428d3c42ca906c0cbda1d001fe10101","unresolved":true,"context_lines":[{"line_number":90,"context_line":"        \"\"\"Validate a router routes with its interface subnets CIDRs and IPs"},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"        If any route cannot reach any subnet CIDR from any interface or the"},{"line_number":93,"context_line":"        route nethop match any interface IP address, this route is invalid."},{"line_number":94,"context_line":"        :param context: Neutron request context"},{"line_number":95,"context_line":"        :param router_id: router ID"},{"line_number":96,"context_line":"        :param routes: router routes (list of dictionaries)"}],"source_content_type":"text/x-python","patch_set":7,"id":"b5277405_a0dfbb36","line":93,"range":{"start_line":93,"start_character":14,"end_line":93,"end_character":20},"updated":"2021-07-09 13:49:12.000000000","message":"nit: nexthop","commit_id":"5fb5653ffe700a8f9fb0949d16ecbf0978b61fb6"}],"neutron/db/l3_db.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"fd601d7b3b713b4726b6561052f0e6b2027ea560","unresolved":true,"context_lines":[{"line_number":352,"context_line":""},{"line_number":353,"context_line":"            gw_subnets \u003d network_db.subnets"},{"line_number":354,"context_line":"            for ext_ip in ext_ips:"},{"line_number":355,"context_line":"                for subnet in network_db.subnets:"},{"line_number":356,"context_line":"                    if not subnet.gateway_ip:"},{"line_number":357,"context_line":"                        continue"},{"line_number":358,"context_line":"                    if ext_ip.get(\u0027ip_address\u0027) \u003d\u003d subnet.gateway_ip:"}],"source_content_type":"text/x-python","patch_set":7,"id":"e4060770_601eb37e","line":355,"updated":"2021-07-05 06:14:52.000000000","message":"hmm, will _get_network() returns all info about subnets too?","commit_id":"5fb5653ffe700a8f9fb0949d16ecbf0978b61fb6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f8207659c3c28e7f624235021d13d5e40161847b","unresolved":true,"context_lines":[{"line_number":352,"context_line":""},{"line_number":353,"context_line":"            gw_subnets \u003d network_db.subnets"},{"line_number":354,"context_line":"            for ext_ip in ext_ips:"},{"line_number":355,"context_line":"                for subnet in network_db.subnets:"},{"line_number":356,"context_line":"                    if not subnet.gateway_ip:"},{"line_number":357,"context_line":"                        continue"},{"line_number":358,"context_line":"                    if ext_ip.get(\u0027ip_address\u0027) \u003d\u003d subnet.gateway_ip:"}],"source_content_type":"text/x-python","patch_set":7,"id":"adfdb21e_de6ca557","line":355,"in_reply_to":"e4060770_601eb37e","updated":"2021-07-09 09:46:16.000000000","message":"It does because its returning the DB object, that contains all the references to the subnet DB objects.","commit_id":"5fb5653ffe700a8f9fb0949d16ecbf0978b61fb6"}]}
