)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e325854d17f5999deb5609364abcec19baa51481","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[DVR] Allow multiple subnets per external network"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"An external network can have more than un subnet. Currently only the"},{"line_number":10,"context_line":"first subnet is added to the FIP namespace route table. Packets for"},{"line_number":11,"context_line":"FIPs with addresses in other subnets can\u0027t pass through the external"},{"line_number":12,"context_line":"port because there is no route for those FIP CIDRs."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_329672a1","line":9,"range":{"start_line":9,"start_character":39,"end_line":9,"end_character":41},"updated":"2018-12-04 21:28:02.000000000","message":"s/one (Spanish brain :)","commit_id":"51b896820d86735354f83b879c582adb0bd86615"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6472f92f84b42329f38341853f12ffc1b6626423","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[DVR] Allow multiple subnets per external network"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"An external network can have more than un subnet. Currently only the"},{"line_number":10,"context_line":"first subnet is added to the FIP namespace route table. Packets for"},{"line_number":11,"context_line":"FIPs with addresses in other subnets can\u0027t pass through the external"},{"line_number":12,"context_line":"port because there is no route for those FIP CIDRs."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_e82ec259","line":9,"range":{"start_line":9,"start_character":39,"end_line":9,"end_character":41},"in_reply_to":"3f79a3b5_329672a1","updated":"2018-12-05 08:01:19.000000000","message":"hahaha sorry!","commit_id":"51b896820d86735354f83b879c582adb0bd86615"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e325854d17f5999deb5609364abcec19baa51481","unresolved":false,"context_lines":[{"line_number":14,"context_line":"This change adds routes for those CIDRs via the external port IP and"},{"line_number":15,"context_line":"interface."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"These routes doesn\u0027t collide with the existing ones, added to provide"},{"line_number":18,"context_line":"a back path for the packets with a destination IP matching a FIP."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"E.g.:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_f29f9aaf","line":17,"range":{"start_line":17,"start_character":13,"end_line":17,"end_character":20},"updated":"2018-12-04 21:28:02.000000000","message":"nit: don\u0027t","commit_id":"51b896820d86735354f83b879c582adb0bd86615"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6472f92f84b42329f38341853f12ffc1b6626423","unresolved":false,"context_lines":[{"line_number":14,"context_line":"This change adds routes for those CIDRs via the external port IP and"},{"line_number":15,"context_line":"interface."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"These routes doesn\u0027t collide with the existing ones, added to provide"},{"line_number":18,"context_line":"a back path for the packets with a destination IP matching a FIP."},{"line_number":19,"context_line":""},{"line_number":20,"context_line":"E.g.:"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"3f79a3b5_08321ec0","line":17,"range":{"start_line":17,"start_character":13,"end_line":17,"end_character":20},"in_reply_to":"3f79a3b5_f29f9aaf","updated":"2018-12-05 08:01:19.000000000","message":"Done","commit_id":"51b896820d86735354f83b879c582adb0bd86615"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"02d7716100450d5f3d30f63d86bd26bdefff246c","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[DVR] Allow multiple subnets per external network"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"An external network can have more than un subnet. Currently only the"},{"line_number":10,"context_line":"first subnet is added to the FIP namespace route table. Packets for"},{"line_number":11,"context_line":"FIPs with addresses in other subnets can\u0027t pass through the external"},{"line_number":12,"context_line":"port because there is no route for those FIP CIDRs."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_a9b6578b","line":9,"range":{"start_line":9,"start_character":39,"end_line":9,"end_character":41},"updated":"2018-12-07 14:07:34.000000000","message":"Typo","commit_id":"754f36be8bc2dc14f89626256a39a7fe95946ac9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b3b18df7b9a7439e648faccf7aa79750121caa9a","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"[DVR] Allow multiple subnets per external network"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"An external network can have more than un subnet. Currently only the"},{"line_number":10,"context_line":"first subnet is added to the FIP namespace route table. Packets for"},{"line_number":11,"context_line":"FIPs with addresses in other subnets can\u0027t pass through the external"},{"line_number":12,"context_line":"port because there is no route for those FIP CIDRs."}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_1b953f94","line":9,"range":{"start_line":9,"start_character":39,"end_line":9,"end_character":41},"in_reply_to":"3f79a3b5_a9b6578b","updated":"2018-12-08 10:08:22.000000000","message":"Done","commit_id":"754f36be8bc2dc14f89626256a39a7fe95946ac9"},{"author":{"_account_id":19234,"name":"Alexey Stupnikov","email":"aleksey.stupnikov@gmail.com","username":"astupnikov"},"change_message_id":"02d7716100450d5f3d30f63d86bd26bdefff246c","unresolved":false,"context_lines":[{"line_number":7,"context_line":"[DVR] Allow multiple subnets per external network"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"An external network can have more than un subnet. Currently only the"},{"line_number":10,"context_line":"first subnet is added to the FIP namespace route table. Packets for"},{"line_number":11,"context_line":"FIPs with addresses in other subnets can\u0027t pass through the external"},{"line_number":12,"context_line":"port because there is no route for those FIP CIDRs."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_e99f6ff4","line":10,"range":{"start_line":10,"start_character":43,"end_line":10,"end_character":54},"updated":"2018-12-07 14:07:34.000000000","message":"?routing table?","commit_id":"754f36be8bc2dc14f89626256a39a7fe95946ac9"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b3b18df7b9a7439e648faccf7aa79750121caa9a","unresolved":false,"context_lines":[{"line_number":7,"context_line":"[DVR] Allow multiple subnets per external network"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"An external network can have more than un subnet. Currently only the"},{"line_number":10,"context_line":"first subnet is added to the FIP namespace route table. Packets for"},{"line_number":11,"context_line":"FIPs with addresses in other subnets can\u0027t pass through the external"},{"line_number":12,"context_line":"port because there is no route for those FIP CIDRs."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":3,"id":"3f79a3b5_3b983bc9","line":10,"range":{"start_line":10,"start_character":43,"end_line":10,"end_character":54},"in_reply_to":"3f79a3b5_e99f6ff4","updated":"2018-12-08 10:08:22.000000000","message":"Done","commit_id":"754f36be8bc2dc14f89626256a39a7fe95946ac9"}],"neutron/agent/l3/dvr_fip_ns.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e325854d17f5999deb5609364abcec19baa51481","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                    ipd.route.delete_gateway(current_gateway.get(\u0027gateway\u0027))"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    def _update_gateway_route_extra_subnets(self, ex_gw_port, interface_name):"},{"line_number":369,"context_line":"        \"\"\"Update the FIP namespace router with the extra_subnets CIDRs"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"        To add egress connectivity for all FIPs belonging to the additional"},{"line_number":372,"context_line":"        subnets of the external network, the routes of the subnets CIDRs"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_d5c84821","line":369,"updated":"2018-12-04 21:28:02.000000000","message":"This method looks very similar to the end of init_router_port(), almost enough to make a common method but not quite as it deals with IPv6 which we don\u0027t have to here.  Just pointing it out since it uses sets to figure out what to add/remove might be a little cleaner.","commit_id":"51b896820d86735354f83b879c582adb0bd86615"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6472f92f84b42329f38341853f12ffc1b6626423","unresolved":false,"context_lines":[{"line_number":366,"context_line":"                    ipd.route.delete_gateway(current_gateway.get(\u0027gateway\u0027))"},{"line_number":367,"context_line":""},{"line_number":368,"context_line":"    def _update_gateway_route_extra_subnets(self, ex_gw_port, interface_name):"},{"line_number":369,"context_line":"        \"\"\"Update the FIP namespace router with the extra_subnets CIDRs"},{"line_number":370,"context_line":""},{"line_number":371,"context_line":"        To add egress connectivity for all FIPs belonging to the additional"},{"line_number":372,"context_line":"        subnets of the external network, the routes of the subnets CIDRs"}],"source_content_type":"text/x-python","patch_set":1,"id":"3f79a3b5_28a35a46","line":369,"in_reply_to":"3f79a3b5_d5c84821","updated":"2018-12-05 08:01:19.000000000","message":"I\u0027m not using ipv6 and I\u0027m being a bit more specific when adding the routes, by adding the via IP. But I think this is not needed. I\u0027ll try to merge both functions.","commit_id":"51b896820d86735354f83b879c582adb0bd86615"}],"neutron/agent/linux/interface.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0b7f62552198312c3ec661d8ac0b21161d0d7f88","unresolved":false,"context_lines":[{"line_number":175,"context_line":""},{"line_number":176,"context_line":"    def set_onlink_routes(self, device_name, namespace, extra_subnets,"},{"line_number":177,"context_line":"                          preserve_ips\u003dNone, is_ipv6\u003dTrue):"},{"line_number":178,"context_line":"        \"\"\"Manage on-link routes (routes without an associate address)"},{"line_number":179,"context_line":""},{"line_number":180,"context_line":"        :param device_name: interface name"},{"line_number":181,"context_line":"        :param namespace: namespace name"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_99761b91","line":178,"range":{"start_line":178,"start_character":52,"end_line":178,"end_character":61},"updated":"2018-12-10 18:35:36.000000000","message":"nit: associated","commit_id":"1e101c119c2b36a0aef56e80dd56870718ceb1f5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0b7f62552198312c3ec661d8ac0b21161d0d7f88","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        \"\"\""},{"line_number":187,"context_line":"        device \u003d ip_lib.IPDevice(device_name, namespace\u003dnamespace)"},{"line_number":188,"context_line":"        new_onlink_cidrs \u003d set(s[\u0027cidr\u0027] for s in extra_subnets or [])"},{"line_number":189,"context_line":"        preserve_ips \u003d set(preserve_ips if preserve_ips else [])"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        onlink \u003d device.route.list_onlink_routes(constants.IP_VERSION_4)"},{"line_number":192,"context_line":"        if is_ipv6:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_b9cbd7a4","line":189,"updated":"2018-12-10 18:35:36.000000000","message":"I guess you could have just had the default for preserve_ips \u003d [] ?  Or had no default as all callers pass it.","commit_id":"1e101c119c2b36a0aef56e80dd56870718ceb1f5"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"726bae7ea528861e283e61f975820ee5dea67186","unresolved":false,"context_lines":[{"line_number":186,"context_line":"        \"\"\""},{"line_number":187,"context_line":"        device \u003d ip_lib.IPDevice(device_name, namespace\u003dnamespace)"},{"line_number":188,"context_line":"        new_onlink_cidrs \u003d set(s[\u0027cidr\u0027] for s in extra_subnets or [])"},{"line_number":189,"context_line":"        preserve_ips \u003d set(preserve_ips if preserve_ips else [])"},{"line_number":190,"context_line":""},{"line_number":191,"context_line":"        onlink \u003d device.route.list_onlink_routes(constants.IP_VERSION_4)"},{"line_number":192,"context_line":"        if is_ipv6:"}],"source_content_type":"text/x-python","patch_set":4,"id":"3f79a3b5_a5271e1d","line":189,"in_reply_to":"3f79a3b5_b9cbd7a4","updated":"2018-12-11 08:24:33.000000000","message":"If You are talking about setting preserve_ips\u003d[] as default argument in L177, than it shouldn\u0027t be done like that. See https://docs.quantifiedcode.com/python-anti-patterns/correctness/mutable_default_value_as_argument.html\nThis approach used here is good","commit_id":"1e101c119c2b36a0aef56e80dd56870718ceb1f5"}]}
