)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"29f8b09e4807adb0b3ce7bc27c086ce7b4b95ccf","unresolved":true,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Check subnet service_type for subnet_create"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If create subnet for existing subnet, check the service_type"},{"line_number":10,"context_line":"to skip the exsiting router gateway ports updating."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-Bug: #2043761"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"b68b9944_a99f1557","line":9,"range":{"start_line":9,"start_character":3,"end_line":9,"end_character":36},"updated":"2023-11-21 15:03:28.000000000","message":"Maybe there is a typo here? existing network?","commit_id":"16b722517a91cdc4c087fc7e0c283598a5585dbc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"7994b398771273ebd71ed407638002c5a82cb7de","unresolved":false,"context_lines":[{"line_number":6,"context_line":""},{"line_number":7,"context_line":"Check subnet service_type for subnet_create"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If create subnet for existing subnet, check the service_type"},{"line_number":10,"context_line":"to skip the exsiting router gateway ports updating."},{"line_number":11,"context_line":""},{"line_number":12,"context_line":"Closes-Bug: #2043761"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":1,"id":"a250f439_661c1d22","line":9,"range":{"start_line":9,"start_character":3,"end_line":9,"end_character":36},"in_reply_to":"b68b9944_a99f1557","updated":"2023-11-27 00:50:47.000000000","message":"Done","commit_id":"16b722517a91cdc4c087fc7e0c283598a5585dbc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"f13ef2d7841dd10d3943b817572ce593607f4065","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Check subnet service_type for subnet_create"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If create subnet for existing external network, check the service_type"},{"line_number":10,"context_line":"to skip the all exsiting router gateway ports updating. And this"},{"line_number":11,"context_line":"check is added only for L3RouterPlugin."},{"line_number":12,"context_line":""},{"line_number":13,"context_line":"Closes-Bug: #2043761"},{"line_number":14,"context_line":"Change-Id: Ica03d091572025fd6938ad1fdf4b13854625f267"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":4,"id":"c637a529_1c73ef3a","line":12,"range":{"start_line":10,"start_character":56,"end_line":12,"end_character":0},"updated":"2023-11-28 09:21:24.000000000","message":"If ovn_l3 needs this, code can be rolled back to patch set 2 with one single functional test case change.","commit_id":"cfd4d6190bea273d3c5401c09e5117499b648391"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4602649e92e986572cf8ce7c3ba4ed6a4e4cfb76","unresolved":true,"context_lines":[{"line_number":7,"context_line":"Check subnet service_type for subnet_create"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If create subnet for existing external network, check the service_type"},{"line_number":10,"context_line":"to skip the all exsiting router gateway ports updating. And this"},{"line_number":11,"context_line":"check is added only for L3RouterPlugin. IPv6 subnet creation for"},{"line_number":12,"context_line":"external network will keep the current behavior."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"d0a641a5_80e89815","line":10,"range":{"start_line":10,"start_character":16,"end_line":10,"end_character":24},"updated":"2024-02-06 17:34:29.000000000","message":"the all exsiting -\u003e all existing","commit_id":"8740e685093c7ba447fd169ac79e73280bfeb378"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"4b18a677a3dfd51f23bd47692aa6f089de46dd84","unresolved":false,"context_lines":[{"line_number":7,"context_line":"Check subnet service_type for subnet_create"},{"line_number":8,"context_line":""},{"line_number":9,"context_line":"If create subnet for existing external network, check the service_type"},{"line_number":10,"context_line":"to skip the all exsiting router gateway ports updating. And this"},{"line_number":11,"context_line":"check is added only for L3RouterPlugin. IPv6 subnet creation for"},{"line_number":12,"context_line":"external network will keep the current behavior."},{"line_number":13,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"2de61aea_cfe07831","line":10,"range":{"start_line":10,"start_character":16,"end_line":10,"end_character":24},"in_reply_to":"d0a641a5_80e89815","updated":"2024-02-08 06:47:40.000000000","message":"Done","commit_id":"8740e685093c7ba447fd169ac79e73280bfeb378"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4602649e92e986572cf8ce7c3ba4ed6a4e4cfb76","unresolved":true,"context_lines":[{"line_number":9,"context_line":"If create subnet for existing external network, check the service_type"},{"line_number":10,"context_line":"to skip the all exsiting router gateway ports updating. And this"},{"line_number":11,"context_line":"check is added only for L3RouterPlugin. IPv6 subnet creation for"},{"line_number":12,"context_line":"external network will keep the current behavior."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #2043761"},{"line_number":15,"context_line":"Change-Id: Ica03d091572025fd6938ad1fdf4b13854625f267"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"e67a7cdc_c7a80994","line":12,"updated":"2024-02-06 17:34:29.000000000","message":"why will it keep the behavior?","commit_id":"8740e685093c7ba447fd169ac79e73280bfeb378"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"4b18a677a3dfd51f23bd47692aa6f089de46dd84","unresolved":true,"context_lines":[{"line_number":9,"context_line":"If create subnet for existing external network, check the service_type"},{"line_number":10,"context_line":"to skip the all exsiting router gateway ports updating. And this"},{"line_number":11,"context_line":"check is added only for L3RouterPlugin. IPv6 subnet creation for"},{"line_number":12,"context_line":"external network will keep the current behavior."},{"line_number":13,"context_line":""},{"line_number":14,"context_line":"Closes-Bug: #2043761"},{"line_number":15,"context_line":"Change-Id: Ica03d091572025fd6938ad1fdf4b13854625f267"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":5,"id":"7e50a012_d61c33c6","line":12,"in_reply_to":"e67a7cdc_c7a80994","updated":"2024-02-08 06:47:40.000000000","message":"IPv6 subnet has not \u0027floatingip\u0027 types. And IPv6 subnet should be created once enough, because a /64 CIDR is large enough typically. Creating IPv6 subnets many times does not occur frequently. So make IPv6 run as it is.","commit_id":"8740e685093c7ba447fd169ac79e73280bfeb378"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"b0d9470b41bc3d6bb7c7adce19744e025ce06563","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"acc34ad5_0174c8ec","updated":"2023-11-20 01:12:26.000000000","message":"recheck","commit_id":"16b722517a91cdc4c087fc7e0c283598a5585dbc"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"da6d9093dc780122abf967774f953eac94d4e33e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"952bfaa5_3210a93b","updated":"2023-11-29 08:49:45.000000000","message":"Looks ok, regarding OVN L3, I add some OVN people","commit_id":"cfd4d6190bea273d3c5401c09e5117499b648391"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"c916743542d46fea263dbbb0244ee08ed3cad739","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"778fcea5_7a4cebd4","updated":"2023-11-29 01:18:34.000000000","message":"recheck","commit_id":"cfd4d6190bea273d3c5401c09e5117499b648391"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"6f9d68b03ffbcf335dac9f66aed559fe47827e27","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"07623253_459dda88","updated":"2023-11-29 08:46:51.000000000","message":"recheck\nFullstack timeout is not related and all tests passed otherwise","commit_id":"cfd4d6190bea273d3c5401c09e5117499b648391"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"0a82432a1ee358eb41071960afe0d7a065eb5f7f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"5975f681_ef80e4ce","updated":"2024-01-26 00:38:32.000000000","message":"recheck","commit_id":"8740e685093c7ba447fd169ac79e73280bfeb378"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"2754e0b833c999e1d7a84aa2542d69200dbaa7b3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"8515c8b5_cca43e1b","updated":"2024-01-24 08:44:16.000000000","message":"recheck","commit_id":"8740e685093c7ba447fd169ac79e73280bfeb378"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"43524ee1f2225b8cd2970236781804ee9bffed6b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"c099487f_dd0222cb","updated":"2024-01-25 01:30:41.000000000","message":"recheck","commit_id":"8740e685093c7ba447fd169ac79e73280bfeb378"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"fac5c04601c0b6fe23162c4b7b4c3ccf6628c126","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"e13f64f9_8d0afe0c","updated":"2024-02-09 02:25:05.000000000","message":"So adding a new \u0027floatingip\u0027 type of subnet for external network, should update all related routers for l3-ovn? Anyone can give us the information about this?","commit_id":"5d08e1bdb1cc5778b7924046ed72a8e0c764c67c"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6a4d6d08be51b1c42e22d5ba590b7857d7ced874","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"a2707839_388b5b87","updated":"2024-07-02 09:42:48.000000000","message":"Pleas check my review in [1]. You should first implement the refactor and then add this functionality.\n\n[1]https://review.opendev.org/c/openstack/neutron/+/908393/comments/acfd617c_aed4460e","commit_id":"50cdad4124aa245d5a6eba266adec0bc31accae4"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"6e7ffa424ae3693eb7887998c30ddb4f35584022","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"0a29f56e_fb5bf6bd","updated":"2024-06-20 01:04:37.000000000","message":"Since the follow-up patch has +2 and +w, we should consider that this code is totolly accepted.","commit_id":"50cdad4124aa245d5a6eba266adec0bc31accae4"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"2ba9d55f3c37d712c4c5f6a62fa2350c3e07a8a7","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"8663abca_001b3b2a","updated":"2024-06-20 03:59:15.000000000","message":"recheck","commit_id":"50cdad4124aa245d5a6eba266adec0bc31accae4"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"11a9de0f55b107c330322a14932c12a270fc3548","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"2c7c9104_a252f030","in_reply_to":"0a29f56e_fb5bf6bd","updated":"2024-06-26 20:34:34.000000000","message":"Slawek/Ihar - are you Ok with this based on the follow-on patch?","commit_id":"50cdad4124aa245d5a6eba266adec0bc31accae4"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"e055edea9e5f07cd0aa25997b433e7b609930d79","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":7,"id":"3cab4162_43a4e1e9","in_reply_to":"a2707839_388b5b87","updated":"2024-07-02 12:40:18.000000000","message":"ACK, please see my reply there, thanks.","commit_id":"50cdad4124aa245d5a6eba266adec0bc31accae4"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4faca85b6ec93d3c165a3efba50e6895355e0160","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"867b6ffa_aac16c23","updated":"2024-07-02 13:07:36.000000000","message":"Code if fine but I don\u0027t agree with the order of this patch and the parent one, as commented. I can\u0027t +2 it.","commit_id":"20dbc47fc65f6ff33fa730fcb8ba02e45b8cab11"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"8c6aeeb2004acd15db4026e8253d4ce09ab151a0","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"b282886e_008b216b","updated":"2024-07-10 17:17:49.000000000","message":"I can understand the ordering, but as this and the follow-on are Ok code-wise I\u0027m fine merging them.","commit_id":"20dbc47fc65f6ff33fa730fcb8ba02e45b8cab11"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"f18d47bb99c57674e22b043389c77c5e662f5842","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"1f423fc4_bd91d138","updated":"2024-07-09 11:18:27.000000000","message":"I would add a re-no even as a follow-up patch, or to this one if there is another ps.","commit_id":"20dbc47fc65f6ff33fa730fcb8ba02e45b8cab11"}],"neutron/db/db_base_plugin_v2.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"29f8b09e4807adb0b3ce7bc27c086ce7b4b95ccf","unresolved":true,"context_lines":[{"line_number":788,"context_line":"        l3plugin \u003d directory.get_plugin(plugin_constants.L3)"},{"line_number":789,"context_line":"        if l3plugin:"},{"line_number":790,"context_line":"            s \u003d subnet_obj.Subnet.get_object(context, id\u003dsubnet[\u0027id\u0027])"},{"line_number":791,"context_line":"            service_types \u003d s.service_types"},{"line_number":792,"context_line":"            update_types \u003d [\u0027\u0027, constants.DEVICE_OWNER_ROUTER_GW]"},{"line_number":793,"context_line":"            if (subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4 and"},{"line_number":794,"context_line":"                    all(s not in update_types for s in service_types)):"}],"source_content_type":"text/x-python","patch_set":1,"id":"4fefe0fc_b1aade0e","line":791,"updated":"2023-11-21 15:03:28.000000000","message":"So service_types was not in the subnet object passed?","commit_id":"16b722517a91cdc4c087fc7e0c283598a5585dbc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"7994b398771273ebd71ed407638002c5a82cb7de","unresolved":true,"context_lines":[{"line_number":788,"context_line":"        l3plugin \u003d directory.get_plugin(plugin_constants.L3)"},{"line_number":789,"context_line":"        if l3plugin:"},{"line_number":790,"context_line":"            s \u003d subnet_obj.Subnet.get_object(context, id\u003dsubnet[\u0027id\u0027])"},{"line_number":791,"context_line":"            service_types \u003d s.service_types"},{"line_number":792,"context_line":"            update_types \u003d [\u0027\u0027, constants.DEVICE_OWNER_ROUTER_GW]"},{"line_number":793,"context_line":"            if (subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4 and"},{"line_number":794,"context_line":"                    all(s not in update_types for s in service_types)):"}],"source_content_type":"text/x-python","patch_set":1,"id":"96cad8c5_213e6a2f","line":791,"in_reply_to":"4fefe0fc_b1aade0e","updated":"2023-11-27 00:50:47.000000000","message":"Yes, this subnet param does not have service_types attribute, it\u0027s the return value of https://review.opendev.org/c/openstack/neutron/+/901225/1/neutron/db/db_base_plugin_v2.py#961","commit_id":"16b722517a91cdc4c087fc7e0c283598a5585dbc"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"29f8b09e4807adb0b3ce7bc27c086ce7b4b95ccf","unresolved":true,"context_lines":[{"line_number":790,"context_line":"            s \u003d subnet_obj.Subnet.get_object(context, id\u003dsubnet[\u0027id\u0027])"},{"line_number":791,"context_line":"            service_types \u003d s.service_types"},{"line_number":792,"context_line":"            update_types \u003d [\u0027\u0027, constants.DEVICE_OWNER_ROUTER_GW]"},{"line_number":793,"context_line":"            if (subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4 and"},{"line_number":794,"context_line":"                    all(s not in update_types for s in service_types)):"},{"line_number":795,"context_line":"                return"},{"line_number":796,"context_line":"            gw_ports \u003d self._get_router_gw_ports_by_network(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"bc28a61e_0aa8e302","line":793,"updated":"2023-11-21 15:03:28.000000000","message":"Why do we only look at IPv4 subnets?","commit_id":"16b722517a91cdc4c087fc7e0c283598a5585dbc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"568f9e4a5037cf606012afc6dff2dad9b409380d","unresolved":true,"context_lines":[{"line_number":790,"context_line":"            s \u003d subnet_obj.Subnet.get_object(context, id\u003dsubnet[\u0027id\u0027])"},{"line_number":791,"context_line":"            service_types \u003d s.service_types"},{"line_number":792,"context_line":"            update_types \u003d [\u0027\u0027, constants.DEVICE_OWNER_ROUTER_GW]"},{"line_number":793,"context_line":"            if (subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4 and"},{"line_number":794,"context_line":"                    all(s not in update_types for s in service_types)):"},{"line_number":795,"context_line":"                return"},{"line_number":796,"context_line":"            gw_ports \u003d self._get_router_gw_ports_by_network(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"ea46ea65_18c18a00","line":793,"in_reply_to":"8fab9e18_1908a6a5","updated":"2024-01-19 00:54:13.000000000","message":"Updated the commit message.","commit_id":"16b722517a91cdc4c087fc7e0c283598a5585dbc"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"7994b398771273ebd71ed407638002c5a82cb7de","unresolved":true,"context_lines":[{"line_number":790,"context_line":"            s \u003d subnet_obj.Subnet.get_object(context, id\u003dsubnet[\u0027id\u0027])"},{"line_number":791,"context_line":"            service_types \u003d s.service_types"},{"line_number":792,"context_line":"            update_types \u003d [\u0027\u0027, constants.DEVICE_OWNER_ROUTER_GW]"},{"line_number":793,"context_line":"            if (subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4 and"},{"line_number":794,"context_line":"                    all(s not in update_types for s in service_types)):"},{"line_number":795,"context_line":"                return"},{"line_number":796,"context_line":"            gw_ports \u003d self._get_router_gw_ports_by_network(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"dd5d5455_bd4d5c01","line":793,"in_reply_to":"bc28a61e_0aa8e302","updated":"2023-11-27 00:50:47.000000000","message":"IPv6 subnet has not \u0027floatingip\u0027 types. And IPv6 subnet should be created once enough, because a /64 CIDR is large enough typically. Creating IPv6 subnets many times does not occur frequently. So make IPv6 run as it is.","commit_id":"16b722517a91cdc4c087fc7e0c283598a5585dbc"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"e5ff956f1e7adf1fb7aea3d37d71ab1cd1320e7e","unresolved":true,"context_lines":[{"line_number":790,"context_line":"            s \u003d subnet_obj.Subnet.get_object(context, id\u003dsubnet[\u0027id\u0027])"},{"line_number":791,"context_line":"            service_types \u003d s.service_types"},{"line_number":792,"context_line":"            update_types \u003d [\u0027\u0027, constants.DEVICE_OWNER_ROUTER_GW]"},{"line_number":793,"context_line":"            if (subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4 and"},{"line_number":794,"context_line":"                    all(s not in update_types for s in service_types)):"},{"line_number":795,"context_line":"                return"},{"line_number":796,"context_line":"            gw_ports \u003d self._get_router_gw_ports_by_network(context,"}],"source_content_type":"text/x-python","patch_set":1,"id":"8fab9e18_1908a6a5","line":793,"in_reply_to":"dd5d5455_bd4d5c01","updated":"2024-01-09 22:09:14.000000000","message":"Ok, but is that a reason to exclude IPv6?\n\nAnd since there is no mention of a floating IP subnet in the bug, code or commit message it is not clear that is the issue. Maybe adding a comment below would help?","commit_id":"16b722517a91cdc4c087fc7e0c283598a5585dbc"},{"author":{"_account_id":9656,"name":"Ihar Hrachyshka","email":"ihrachys@redhat.com","username":"ihrachys","status":"Red Hat Networking Systems Engineer"},"change_message_id":"4602649e92e986572cf8ce7c3ba4ed6a4e4cfb76","unresolved":true,"context_lines":[{"line_number":791,"context_line":"            s \u003d subnet_obj.Subnet.get_object(context, id\u003dsubnet[\u0027id\u0027])"},{"line_number":792,"context_line":"            service_types \u003d s.service_types"},{"line_number":793,"context_line":"            update_types \u003d [\u0027\u0027, constants.DEVICE_OWNER_ROUTER_GW]"},{"line_number":794,"context_line":"            if (not isinstance(l3plugin, l3_ovn.OVNL3RouterPlugin) and"},{"line_number":795,"context_line":"                    subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4 and"},{"line_number":796,"context_line":"                    all(s not in update_types for s in service_types)):"},{"line_number":797,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"f67c27eb_02210d84","line":794,"updated":"2024-02-06 17:34:29.000000000","message":"this strikes me as something that should be implemented in the plugin itself. Perhaps all l3 plugins should have a default no-op entry point called \u0027update_router_gw_ports\u0027 that should be called from here; then the plugin can decide what to do with the call (in case of ovnl3 plugin - do the work; otherwise do nothing - the default behavior).\n\nI don\u0027t think putting special logic for ovn into db_base_plugin_v2 is the way to go. This breaks abstractions.\n\n(Also, why do we think that updating gateway ports is never needed for any other l3 plugins?)","commit_id":"8740e685093c7ba447fd169ac79e73280bfeb378"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"7a7e2da9aad3971dc349c7d5bea588210748392c","unresolved":true,"context_lines":[{"line_number":791,"context_line":"            s \u003d subnet_obj.Subnet.get_object(context, id\u003dsubnet[\u0027id\u0027])"},{"line_number":792,"context_line":"            service_types \u003d s.service_types"},{"line_number":793,"context_line":"            update_types \u003d [\u0027\u0027, constants.DEVICE_OWNER_ROUTER_GW]"},{"line_number":794,"context_line":"            if (not isinstance(l3plugin, l3_ovn.OVNL3RouterPlugin) and"},{"line_number":795,"context_line":"                    subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4 and"},{"line_number":796,"context_line":"                    all(s not in update_types for s in service_types)):"},{"line_number":797,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"dacabbdb_04ad8db5","line":794,"in_reply_to":"4d826807_b27df70a","updated":"2024-02-08 06:56:21.000000000","message":"For the method/class inherition, agree with that. It can be done in a refactor patch as a follow-up I guess.","commit_id":"8740e685093c7ba447fd169ac79e73280bfeb378"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"f18d47bb99c57674e22b043389c77c5e662f5842","unresolved":true,"context_lines":[{"line_number":791,"context_line":"            s \u003d subnet_obj.Subnet.get_object(context, id\u003dsubnet[\u0027id\u0027])"},{"line_number":792,"context_line":"            service_types \u003d s.service_types"},{"line_number":793,"context_line":"            update_types \u003d [\u0027\u0027, constants.DEVICE_OWNER_ROUTER_GW]"},{"line_number":794,"context_line":"            if (not isinstance(l3plugin, l3_ovn.OVNL3RouterPlugin) and"},{"line_number":795,"context_line":"                    subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4 and"},{"line_number":796,"context_line":"                    all(s not in update_types for s in service_types)):"},{"line_number":797,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"fb9ce05f_43855f2a","line":794,"in_reply_to":"8f4cc33d_ccb7c6b2","updated":"2024-07-09 11:18:27.000000000","message":"Agree with Rodolfo about the order of the patches, but I can live with the current order.","commit_id":"8740e685093c7ba447fd169ac79e73280bfeb378"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"931929bc23bcc0f9b222aa48163dd58bcee623cf","unresolved":true,"context_lines":[{"line_number":791,"context_line":"            s \u003d subnet_obj.Subnet.get_object(context, id\u003dsubnet[\u0027id\u0027])"},{"line_number":792,"context_line":"            service_types \u003d s.service_types"},{"line_number":793,"context_line":"            update_types \u003d [\u0027\u0027, constants.DEVICE_OWNER_ROUTER_GW]"},{"line_number":794,"context_line":"            if (not isinstance(l3plugin, l3_ovn.OVNL3RouterPlugin) and"},{"line_number":795,"context_line":"                    subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4 and"},{"line_number":796,"context_line":"                    all(s not in update_types for s in service_types)):"},{"line_number":797,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"8f4cc33d_ccb7c6b2","line":794,"in_reply_to":"c414dfa9_e5ec7255","updated":"2024-05-21 03:48:44.000000000","message":"Maybe you may take a look at this work:\nhttps://review.opendev.org/c/openstack/neutron/+/908393/2\nIt is done there.","commit_id":"8740e685093c7ba447fd169ac79e73280bfeb378"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"df5a37691982841c85c1b6372a7431190e32ca7d","unresolved":true,"context_lines":[{"line_number":791,"context_line":"            s \u003d subnet_obj.Subnet.get_object(context, id\u003dsubnet[\u0027id\u0027])"},{"line_number":792,"context_line":"            service_types \u003d s.service_types"},{"line_number":793,"context_line":"            update_types \u003d [\u0027\u0027, constants.DEVICE_OWNER_ROUTER_GW]"},{"line_number":794,"context_line":"            if (not isinstance(l3plugin, l3_ovn.OVNL3RouterPlugin) and"},{"line_number":795,"context_line":"                    subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4 and"},{"line_number":796,"context_line":"                    all(s not in update_types for s in service_types)):"},{"line_number":797,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"c414dfa9_e5ec7255","line":794,"in_reply_to":"dacabbdb_04ad8db5","updated":"2024-05-20 09:36:52.000000000","message":"I agree with Ihar here. IMO it would be better to add new abstract method to the L3 plugin and simply call it here. It would be IMO better because of the two reasons:\n\n1. as Ihar said, putting special logic and \"if\" here is breaking base plugin abstraction and also is definitely not good software development practice,\n2. It would be much easier to understand the code for the future readers if there would be method with \"self descriptive\" name called here instead of those kind of weird \"ifs\".","commit_id":"8740e685093c7ba447fd169ac79e73280bfeb378"},{"author":{"_account_id":9531,"name":"liuyulong","display_name":"LIU Yulong","email":"i@liuyulong.me","username":"LIU-Yulong"},"change_message_id":"4b18a677a3dfd51f23bd47692aa6f089de46dd84","unresolved":true,"context_lines":[{"line_number":791,"context_line":"            s \u003d subnet_obj.Subnet.get_object(context, id\u003dsubnet[\u0027id\u0027])"},{"line_number":792,"context_line":"            service_types \u003d s.service_types"},{"line_number":793,"context_line":"            update_types \u003d [\u0027\u0027, constants.DEVICE_OWNER_ROUTER_GW]"},{"line_number":794,"context_line":"            if (not isinstance(l3plugin, l3_ovn.OVNL3RouterPlugin) and"},{"line_number":795,"context_line":"                    subnet[\u0027ip_version\u0027] \u003d\u003d constants.IP_VERSION_4 and"},{"line_number":796,"context_line":"                    all(s not in update_types for s in service_types)):"},{"line_number":797,"context_line":"                return"}],"source_content_type":"text/x-python","patch_set":5,"id":"4d826807_b27df70a","line":794,"in_reply_to":"f67c27eb_02210d84","updated":"2024-02-08 06:47:40.000000000","message":"Hmm, looks like a really long story about the code logic here. It was introduced by some IPv6 gateway related works. Here are changes related to these lines:\nI6a328048b99af39ab9497fd9f265d1a9b95b7148\nIc003879b557a8c7ab52268a95d08d6d710618438\nI9395834f673038dc23b25eaeefe14895fe154e0e\nI29e2bf7bcda37ebbcee193f94c8b03df90f24ef1\n\n\nFor your second question here, neutron mainly has L3_router plugin and OVN_L3 plugin now. Others are basically dead I guess.","commit_id":"8740e685093c7ba447fd169ac79e73280bfeb378"}]}
