)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"40a55694fac5d2883e0fd1de1c2cbc8a4caf241c","unresolved":true,"context_lines":[{"line_number":12,"context_line":""},{"line_number":13,"context_line":"So we implement this feature that translate the neutron address"},{"line_number":14,"context_line":"group to an Address_Set entry and then put this entry to a match"},{"line_number":15,"context_line":"filed of ovn acl."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"[0]https://github.com/ovn-org/ovn/blob/81503d661ed9449ebe85f4b6b3130b75c7dd60bd/ovn-nb.xml#L1641"},{"line_number":18,"context_line":""}],"source_content_type":"text/x-gerrit-commit-message","patch_set":50,"id":"65f2db3f_982eff3d","line":15,"range":{"start_line":15,"start_character":0,"end_line":15,"end_character":5},"updated":"2024-10-24 08:06:36.000000000","message":"nit: field of OVN ACL","commit_id":"3a294ea2d395b86253aa438bcb22d3862499cb5f"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"40a55694fac5d2883e0fd1de1c2cbc8a4caf241c","unresolved":true,"context_lines":[{"line_number":15,"context_line":"filed of ovn acl."},{"line_number":16,"context_line":""},{"line_number":17,"context_line":"[0]https://github.com/ovn-org/ovn/blob/81503d661ed9449ebe85f4b6b3130b75c7dd60bd/ovn-nb.xml#L1641"},{"line_number":18,"context_line":""},{"line_number":19,"context_line":"Related-Bug: #1982287"},{"line_number":20,"context_line":"Change-Id: I0f29aaf699e2bf83d3437999e0f5b82edcaaa176"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":50,"id":"0b2b1504_4444b7e6","line":18,"updated":"2024-10-24 08:06:36.000000000","message":"+1 for OVN doc reference that makes life easier","commit_id":"3a294ea2d395b86253aa438bcb22d3862499cb5f"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"ddc0f2c3a261dcd550b10343bc34954a12737e76","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"958c0894_1577cf16","updated":"2023-05-17 09:02:25.000000000","message":"recheck","commit_id":"a8f9c3d1e11ac9d6a8126bb55514618bee6abd60"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f2936c1d034392d2693f609e5ee150a606df7a5c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"ba804c9b_d5cbbaeb","updated":"2023-06-22 14:42:19.000000000","message":"I have one comment but it can be also done as follow up patch. But I would like Rodolfo to check and approve it if all is fine for him","commit_id":"e9cb32fa57491960b41a0cb77e10f8074fee8ffe"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"2af7b75ee58988ee26177d8ff2ef365f20151784","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":11,"id":"a244c9ad_a209c1cf","updated":"2023-06-06 10:21:28.000000000","message":"Thanks!","commit_id":"e9cb32fa57491960b41a0cb77e10f8074fee8ffe"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2dbf6bd7d2717b7ddbc03eddd9be7f794391fb6e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"2afc31b9_d015870a","updated":"2023-07-19 16:11:48.000000000","message":"1) Please add more testing, in particular FTs to check the new commands\n2) Add a release note\n3) Where in the code are we using \"Address_Set\" for ACLs?","commit_id":"7de229609efe1f6c5629ff2d11caa11324555d76"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"6653e0c8d5122b827d6268e4c31d5604dc8898ce","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":18,"id":"64fabd85_a21a93ec","updated":"2023-08-24 08:50:00.000000000","message":"recheck","commit_id":"a89c919edf0a53cbcda435703be49c2f79c905dd"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"712a90aead1dbb5be5f7fb9693c2a229caeaa66a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"11aa3842_54ae0171","updated":"2024-01-16 12:54:32.000000000","message":"1) You need to add this extension to the ML2 OVN supported list\n2) Please check this patch against https://review.opendev.org/c/openstack/neutron-tempest-plugin/+/777833/4/neutron_tempest_plugin/scenario/test_security_groups.py. You\u0027ll probably need to update this patch to allow ML2/OVS too (right now it only supports OVS+FW).","commit_id":"8e79b90b8406ef634e1fc990e45d58b46154be63"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c00e98d1f069d6bbd42d134bc17768afd95dbb27","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"10b68b0b_608a35c6","updated":"2024-01-08 09:34:47.000000000","message":"Not long ago we replaced the use of Address_Set with Port_Group, but reading this feature it does fit into the Address_Set model, so I think for this use-case it should be fine.","commit_id":"8e79b90b8406ef634e1fc990e45d58b46154be63"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"9052f3ac831b5b49023be916a033c46e9e35bf8a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"2f33192c_1a6dfab8","updated":"2023-12-18 09:01:09.000000000","message":"This patch has been here for a long time. Please feel free to review it.\nThank you, guys! ^_^","commit_id":"8e79b90b8406ef634e1fc990e45d58b46154be63"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"be181b05198b42a13ab09a57f5776a0670792b5f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"a61f4317_ab11106f","in_reply_to":"11aa3842_54ae0171","updated":"2024-01-16 13:47:19.000000000","message":"ok","commit_id":"8e79b90b8406ef634e1fc990e45d58b46154be63"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"23622a711d809088cd233d1814e588fec3fe26f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":21,"id":"774e6514_513c16aa","in_reply_to":"a61f4317_ab11106f","updated":"2024-01-17 09:55:59.000000000","message":"Hi Rodolfo,\n\n1)I noticed that \"address_group\" is already on the ML2 OVN supported list [1].\n2)I assume you meant that I need to submit a patch to enable ML2/OVN in the neutron-tempest-plugin, right?\n\n[1]https://github.com/openstack/neutron/blob/b28bf2d3a14a8dcba90e9f72413121da7730f8c0/neutron/common/ovn/extensions.py#L119C8-L119C8","commit_id":"8e79b90b8406ef634e1fc990e45d58b46154be63"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"fd0b046e66631cc107607e7e9c0ca28e0c4e58f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"63ca8fa1_7da1e37e","updated":"2024-02-28 00:54:41.000000000","message":"recheck","commit_id":"724e19c0ebb0d916c8402dbe08fa02e8b48ec0ce"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"757901163effab7f2221669087bee1e47df2d279","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":24,"id":"c7aed017_b6912280","updated":"2024-02-27 12:30:19.000000000","message":"recheck","commit_id":"724e19c0ebb0d916c8402dbe08fa02e8b48ec0ce"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8eda69d1f90a0b8ac0c8ab0cd5383187e3194dfd","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"a784bb63_91bed69c","updated":"2024-03-06 08:25:45.000000000","message":"1) Please don\u0027t do bare re-checks\n2) Add the \"address-group\" extension to the ML2_SUPPORTED_API_EXTENSIONS list","commit_id":"312fe4bce471773ae3e76e58d0dce2752d91808f"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"a41b2047a553a7d1db161c5cf398b800d5f99d2b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":25,"id":"f2845844_1a470432","in_reply_to":"a784bb63_91bed69c","updated":"2024-03-07 03:22:58.000000000","message":"ok,thanks","commit_id":"312fe4bce471773ae3e76e58d0dce2752d91808f"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"f8a24bdfccf0c22ff07195fcbcf788ae18fea8a6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":35,"id":"99bf8f47_6e539055","updated":"2024-03-13 06:13:53.000000000","message":"recheck neutron_tempest_plugin.scenario.test_floatingip.FloatingIPPortDetailsTest.test_floatingip_port_details","commit_id":"15b01e470725ca3fe4c524153c15c4cf7c919b94"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c5b1d6886c619db44dfba0d485232507df136c4b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":36,"id":"4e8f75c4_e81838d0","updated":"2024-07-05 10:30:10.000000000","message":"-1 just for the comment in neutron/common/ovn/constants.py","commit_id":"5595e463af960643b02263f59135299cf3ac04b5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"55ab0982e6860b5d1e6011b457405d9b64641c89","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"4bc361f1_c07fde63","updated":"2024-08-07 19:47:17.000000000","message":"This has a merge conflict in one of the test files.","commit_id":"fac79ac4c5263a66b2a75fd6f030b3d38bc20ac6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"124c1c2d2fef009ecc3f3fad38ae36243a2e05b6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":40,"id":"0c8d727d_75186f69","in_reply_to":"4bc361f1_c07fde63","updated":"2024-08-08 02:30:29.000000000","message":"done","commit_id":"fac79ac4c5263a66b2a75fd6f030b3d38bc20ac6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"9624bcd3d766ef57773bb12f01194c33eb45acc9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":41,"id":"f80a8f0f_6dbf3ae0","updated":"2024-08-08 06:00:44.000000000","message":"recheck\n```\ntempest.api.compute.servers.test_attach_interfaces.AttachInterfacesTestJSON.test_reassign_port_between_servers \n\u0027\u0027\u0027","commit_id":"014718828758af1b80b82002f07e0d6098c89ac6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"19e9541cc3eca653d62b08b4d933b1300486a0b1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":41,"id":"4a3e6470_12a2ab12","updated":"2024-08-08 11:59:28.000000000","message":"recheck neutron-ovs-rally-task","commit_id":"014718828758af1b80b82002f07e0d6098c89ac6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"d85726c21fd7f7110787e2797e1b277ac5c80896","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":41,"id":"999b01fc_c3032de1","updated":"2024-08-12 06:38:37.000000000","message":"recheck neutron-ovs-rally-task","commit_id":"014718828758af1b80b82002f07e0d6098c89ac6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"2b41a00999e8fd1092ffa472eae11ff5effa73f1","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"ef08a6ed_33afe12f","updated":"2024-08-12 11:27:32.000000000","message":"It\u0027s so strange that those tests always fail.","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0f314524e20cdf8f9afdb8117c0e82427ce65ddb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"561fdd42_e93a0171","updated":"2024-08-19 20:21:06.000000000","message":"Looks good, just some minor comments","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"8e212fe11165c56a1eda79b0e4e6067a4b10aadb","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"2e5af598_e944d9d6","updated":"2024-08-14 05:57:44.000000000","message":"recheck neutron-ovs-rally-task","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"0bd458d873ac2883f179631dc0bf5f8870c17392","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"cd3a2c92_1fbef47c","updated":"2024-08-16 02:55:11.000000000","message":"recheck neutron-ovs-rally-task","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"e3abdde6bb113c2e8c82610a6ffd06de570a4d00","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":42,"id":"d351ce1b_85da2063","updated":"2024-08-19 02:35:57.000000000","message":"recheck neutron-ovs-rally-task","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"86bb3386423223d2ff5c4d96654284bcf2f93af4","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":44,"id":"7d8d90b3_3fefe46c","updated":"2024-08-20 06:09:16.000000000","message":"recheck neutron-ovs-rally-task","commit_id":"95e1ccd7c8e658e6ef8dda13a40a467a5d94c6b6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"f436f34f6981c3d82973ff64cc9c4789b15ab431","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":49,"id":"1133488d_6b08793f","updated":"2024-10-14 10:27:10.000000000","message":"recheck `tempest.api.compute.servers.test_server_actions.ServerActionsTestJSON.test_stop_start_server`","commit_id":"0c83d7b098694fc6204d3dc58e853ca5b055d0f6"},{"author":{"_account_id":37270,"name":"DenisK","display_name":"DenisK","email":"dendvk@mail.ru","username":"DenisK"},"change_message_id":"61410b56c2d93a8feeb0280ae370aa0a7f801a24","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"23b82ae6_d8cd62cc","updated":"2024-10-24 10:46:26.000000000","message":"@liuxie_11@163.com, @ralonsoh@redhat.com,\n\nSeems the following import is missed here, in addition to https://review.opendev.org/c/openstack/neutron/+/932380/1:","commit_id":"3a294ea2d395b86253aa438bcb22d3862499cb5f"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"40a55694fac5d2883e0fd1de1c2cbc8a4caf241c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"b8192a23_dcd9952f","updated":"2024-10-24 08:06:36.000000000","message":"Looks ok","commit_id":"3a294ea2d395b86253aa438bcb22d3862499cb5f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"291d93ce01fd9de7502319eabd85ab3883bc609c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"6c1d080a_1e343a35","updated":"2024-10-15 19:44:03.000000000","message":"Still need dependent patch to merge","commit_id":"3a294ea2d395b86253aa438bcb22d3862499cb5f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"edd00fea7d1aa8160e56c36d1881a064eb9717e6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":50,"id":"a9bef738_cc7999b0","updated":"2024-10-24 10:28:51.000000000","message":"recheck\njob: neutron-fullstack-with-uwsgi\ntest: test_ha_router_failover_graceful","commit_id":"3a294ea2d395b86253aa438bcb22d3862499cb5f"},{"author":{"_account_id":37270,"name":"DenisK","display_name":"DenisK","email":"dendvk@mail.ru","username":"DenisK"},"change_message_id":"24619bbb3ff1adde42b380db97f9afd3d9d1c669","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":50,"id":"d39e06bd_166bc61c","in_reply_to":"23b82ae6_d8cd62cc","updated":"2024-10-24 15:04:13.000000000","message":"Resolved by mistake","commit_id":"3a294ea2d395b86253aa438bcb22d3862499cb5f"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"0ed06d0a45972ac1ee5864354ce1b241311a5ff5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"b96e39a3_573849d2","updated":"2024-10-25 14:40:41.000000000","message":"recheck\njob: neutron-tempest-plugin-ovn-enforce-scope-old-defaults\ntest: test_trunk_subport_lifecycle (bug reported)","commit_id":"783d87dfea64fac53bdeee8722c44d15bb54304e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"54b68e06f3187e21222e5604f72c2cf6d02db3df","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":51,"id":"893f2781_1e9a7d74","updated":"2024-10-28 15:35:35.000000000","message":"recheck neutron-tempest-plugin-ovn post failure","commit_id":"783d87dfea64fac53bdeee8722c44d15bb54304e"}],"neutron/common/ovn/acl.py":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f2936c1d034392d2693f609e5ee150a606df7a5c","unresolved":true,"context_lines":[{"line_number":240,"context_line":"    src_or_dst \u003d \u0027src\u0027 if r[\u0027direction\u0027] \u003d\u003d const.INGRESS_DIRECTION else \u0027dst\u0027"},{"line_number":241,"context_line":"    addrset_name \u003d utils.ovn_ag_addrset_name(r[\u0027remote_address_group_id\u0027],"},{"line_number":242,"context_line":"                                             ip_version)"},{"line_number":243,"context_line":"    return \u0027 \u0026\u0026 %s.%s \u003d\u003d $%s\u0027 % (ip_version, src_or_dst, addrset_name)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"def _add_sg_rule_acl_for_port_group(port_group, stateful, r):"}],"source_content_type":"text/x-python","patch_set":11,"id":"58788c62_14eac605","line":243,"updated":"2023-06-22 14:42:19.000000000","message":"except name of the key used it is exactly the same as function above. Maybe You can somehow combine those two to not duplicate code?","commit_id":"e9cb32fa57491960b41a0cb77e10f8074fee8ffe"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"77e87cbdf6ea17f83da2b66e415049056143cb71","unresolved":true,"context_lines":[{"line_number":240,"context_line":"    src_or_dst \u003d \u0027src\u0027 if r[\u0027direction\u0027] \u003d\u003d const.INGRESS_DIRECTION else \u0027dst\u0027"},{"line_number":241,"context_line":"    addrset_name \u003d utils.ovn_ag_addrset_name(r[\u0027remote_address_group_id\u0027],"},{"line_number":242,"context_line":"                                             ip_version)"},{"line_number":243,"context_line":"    return \u0027 \u0026\u0026 %s.%s \u003d\u003d $%s\u0027 % (ip_version, src_or_dst, addrset_name)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"def _add_sg_rule_acl_for_port_group(port_group, stateful, r):"}],"source_content_type":"text/x-python","patch_set":11,"id":"f787880d_a28f3185","line":243,"in_reply_to":"58788c62_14eac605","updated":"2023-06-26 09:03:40.000000000","message":"I think combining them in one func may cause confusion for others. So it is necessary to distinguish them through two diffrent funcs.","commit_id":"e9cb32fa57491960b41a0cb77e10f8074fee8ffe"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"503ff76ee1f6f4bc86e78467ee3e8443ecdb5ff5","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    src_or_dst \u003d \u0027src\u0027 if r[\u0027direction\u0027] \u003d\u003d const.INGRESS_DIRECTION else \u0027dst\u0027"},{"line_number":241,"context_line":"    addrset_name \u003d utils.ovn_ag_addrset_name(r[\u0027remote_address_group_id\u0027],"},{"line_number":242,"context_line":"                                             ip_version)"},{"line_number":243,"context_line":"    return \u0027 \u0026\u0026 %s.%s \u003d\u003d $%s\u0027 % (ip_version, src_or_dst, addrset_name)"},{"line_number":244,"context_line":""},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"def _add_sg_rule_acl_for_port_group(port_group, stateful, r):"}],"source_content_type":"text/x-python","patch_set":11,"id":"45aeafcd_3004766a","line":243,"in_reply_to":"f787880d_a28f3185","updated":"2023-06-26 09:03:53.000000000","message":"Done","commit_id":"e9cb32fa57491960b41a0cb77e10f8074fee8ffe"}],"neutron/common/ovn/constants.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c5b1d6886c619db44dfba0d485232507df136c4b","unresolved":true,"context_lines":[{"line_number":260,"context_line":"TYPE_SECURITY_GROUPS \u003d \u0027security_groups\u0027"},{"line_number":261,"context_line":"TYPE_FLOATINGIPS \u003d \u0027floatingips\u0027"},{"line_number":262,"context_line":"TYPE_SUBNETS \u003d \u0027subnets\u0027"},{"line_number":263,"context_line":"TYPE_ADDRESS_GROUPS \u003d \u0027address_groups\u0027"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"_TYPES_PRIORITY_ORDER \u003d ("},{"line_number":266,"context_line":"    TYPE_NETWORKS,"}],"source_content_type":"text/x-python","patch_set":36,"id":"09856e12_fc33a47e","line":263,"range":{"start_line":263,"start_character":0,"end_line":263,"end_character":19},"updated":"2024-07-05 10:30:10.000000000","message":"You need to add this to the _TYPES_PRIORITY_ORDER list. If we are adding a new resource type, we should also list it in the maintenance worker.","commit_id":"5595e463af960643b02263f59135299cf3ac04b5"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"011827c435711fb41fef04690b33fcde33075edb","unresolved":false,"context_lines":[{"line_number":260,"context_line":"TYPE_SECURITY_GROUPS \u003d \u0027security_groups\u0027"},{"line_number":261,"context_line":"TYPE_FLOATINGIPS \u003d \u0027floatingips\u0027"},{"line_number":262,"context_line":"TYPE_SUBNETS \u003d \u0027subnets\u0027"},{"line_number":263,"context_line":"TYPE_ADDRESS_GROUPS \u003d \u0027address_groups\u0027"},{"line_number":264,"context_line":""},{"line_number":265,"context_line":"_TYPES_PRIORITY_ORDER \u003d ("},{"line_number":266,"context_line":"    TYPE_NETWORKS,"}],"source_content_type":"text/x-python","patch_set":36,"id":"01d55814_9878557f","line":263,"range":{"start_line":263,"start_character":0,"end_line":263,"end_character":19},"in_reply_to":"09856e12_fc33a47e","updated":"2024-07-30 09:30:10.000000000","message":"Done","commit_id":"5595e463af960643b02263f59135299cf3ac04b5"}],"neutron/common/ovn/extensions.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"40da61c3e2ca2b59bc38f34396634933f39c7573","unresolved":true,"context_lines":[{"line_number":126,"context_line":"    l3_enable_default_route_bfd.ALIAS,"},{"line_number":127,"context_line":"    l3_enable_default_route_ecmp.ALIAS,"},{"line_number":128,"context_line":"]"},{"line_number":129,"context_line":"ML2_SUPPORTED_API_EXTENSIONS \u003d ["},{"line_number":130,"context_line":"    address_group.ALIAS,"},{"line_number":131,"context_line":"    address_scope.ALIAS,"},{"line_number":132,"context_line":"    agent_def.ALIAS,"}],"source_content_type":"text/x-python","patch_set":28,"id":"1023fd73_58c9d7ce","line":129,"range":{"start_line":129,"start_character":0,"end_line":129,"end_character":28},"updated":"2024-03-07 08:04:36.000000000","message":"The update of this list is still missing.","commit_id":"ff6864dc7a045bdde0b81fc6c6bd0ea78ded96dc"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"3d7362a88155ab201a3b8a9f41fff3e47929d08d","unresolved":false,"context_lines":[{"line_number":126,"context_line":"    l3_enable_default_route_bfd.ALIAS,"},{"line_number":127,"context_line":"    l3_enable_default_route_ecmp.ALIAS,"},{"line_number":128,"context_line":"]"},{"line_number":129,"context_line":"ML2_SUPPORTED_API_EXTENSIONS \u003d ["},{"line_number":130,"context_line":"    address_group.ALIAS,"},{"line_number":131,"context_line":"    address_scope.ALIAS,"},{"line_number":132,"context_line":"    agent_def.ALIAS,"}],"source_content_type":"text/x-python","patch_set":28,"id":"290c293f_ba95cf3b","line":129,"range":{"start_line":129,"start_character":0,"end_line":129,"end_character":28},"in_reply_to":"1023fd73_58c9d7ce","updated":"2024-03-07 08:20:09.000000000","message":"I noticed that \"address_group\" is already on the ML2 OVN supported list.","commit_id":"ff6864dc7a045bdde0b81fc6c6bd0ea78ded96dc"}],"neutron/db/models/address_group.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c5b1d6886c619db44dfba0d485232507df136c4b","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                       backref\u003d\u0027address_groups\u0027,"},{"line_number":49,"context_line":"                                       lazy\u003d\u0027joined\u0027,"},{"line_number":50,"context_line":"                                       cascade\u003d\u0027all, delete, delete-orphan\u0027)"},{"line_number":51,"context_line":"    api_collections \u003d [ag.COLLECTION_NAME]"}],"source_content_type":"text/x-python","patch_set":36,"id":"fb4c8bdb_4c8b40fe","line":51,"range":{"start_line":51,"start_character":22,"end_line":51,"end_character":42},"updated":"2024-07-05 10:30:10.000000000","message":"+1, this should be the plural","commit_id":"5595e463af960643b02263f59135299cf3ac04b5"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"01616594771523bcb70ef8a1a89dab76fd1ce426","unresolved":true,"context_lines":[{"line_number":48,"context_line":"                                       backref\u003d\u0027address_groups\u0027,"},{"line_number":49,"context_line":"                                       lazy\u003d\u0027joined\u0027,"},{"line_number":50,"context_line":"                                       cascade\u003d\u0027all, delete, delete-orphan\u0027)"},{"line_number":51,"context_line":"    api_collections \u003d [ag.COLLECTION_NAME]"}],"source_content_type":"text/x-python","patch_set":49,"id":"da7c7b37_4e3da7b5","line":51,"range":{"start_line":51,"start_character":4,"end_line":51,"end_character":42},"updated":"2024-10-15 07:06:31.000000000","message":"This change deserves to be in a separate commit, this is a previous bug","commit_id":"0c83d7b098694fc6204d3dc58e853ca5b055d0f6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9086659b54111a2c1f46b656ab820fa151da1f57","unresolved":false,"context_lines":[{"line_number":48,"context_line":"                                       backref\u003d\u0027address_groups\u0027,"},{"line_number":49,"context_line":"                                       lazy\u003d\u0027joined\u0027,"},{"line_number":50,"context_line":"                                       cascade\u003d\u0027all, delete, delete-orphan\u0027)"},{"line_number":51,"context_line":"    api_collections \u003d [ag.COLLECTION_NAME]"}],"source_content_type":"text/x-python","patch_set":49,"id":"a8b4640f_66ae352f","line":51,"range":{"start_line":51,"start_character":4,"end_line":51,"end_character":42},"in_reply_to":"da7c7b37_4e3da7b5","updated":"2024-10-15 07:14:33.000000000","message":"Done","commit_id":"0c83d7b098694fc6204d3dc58e853ca5b055d0f6"}],"neutron/db/ovn_revision_numbers_db.py":[{"author":{"_account_id":37270,"name":"DenisK","display_name":"DenisK","email":"dendvk@mail.ru","username":"DenisK"},"change_message_id":"61410b56c2d93a8feeb0280ae370aa0a7f801a24","unresolved":true,"context_lines":[{"line_number":24,"context_line":"import sqlalchemy as sa"},{"line_number":25,"context_line":"from sqlalchemy.orm import exc"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from neutron.common.ovn import utils as ovn_utils"},{"line_number":28,"context_line":"from neutron.db.models import l3  # noqa"},{"line_number":29,"context_line":"from neutron.db.models import ovn as ovn_models"},{"line_number":30,"context_line":"from neutron.db.models import securitygroup  # noqa"}],"source_content_type":"text/x-python","patch_set":50,"id":"989b2f58_f67dfba1","line":27,"updated":"2024-10-24 10:46:26.000000000","message":"from neutron.db.models import address_group  # noqa","commit_id":"3a294ea2d395b86253aa438bcb22d3862499cb5f"},{"author":{"_account_id":37270,"name":"DenisK","display_name":"DenisK","email":"dendvk@mail.ru","username":"DenisK"},"change_message_id":"24619bbb3ff1adde42b380db97f9afd3d9d1c669","unresolved":true,"context_lines":[{"line_number":24,"context_line":"import sqlalchemy as sa"},{"line_number":25,"context_line":"from sqlalchemy.orm import exc"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from neutron.common.ovn import utils as ovn_utils"},{"line_number":28,"context_line":"from neutron.db.models import l3  # noqa"},{"line_number":29,"context_line":"from neutron.db.models import ovn as ovn_models"},{"line_number":30,"context_line":"from neutron.db.models import securitygroup  # noqa"}],"source_content_type":"text/x-python","patch_set":50,"id":"9d30b61c_6433fa5a","line":27,"in_reply_to":"187d2c93_c723c39e","updated":"2024-10-24 15:04:13.000000000","message":"Resolved by mistake","commit_id":"3a294ea2d395b86253aa438bcb22d3862499cb5f"},{"author":{"_account_id":37270,"name":"DenisK","display_name":"DenisK","email":"dendvk@mail.ru","username":"DenisK"},"change_message_id":"7ea1ea781bbbf57c75c38d211adff8220996748d","unresolved":false,"context_lines":[{"line_number":24,"context_line":"import sqlalchemy as sa"},{"line_number":25,"context_line":"from sqlalchemy.orm import exc"},{"line_number":26,"context_line":""},{"line_number":27,"context_line":"from neutron.common.ovn import utils as ovn_utils"},{"line_number":28,"context_line":"from neutron.db.models import l3  # noqa"},{"line_number":29,"context_line":"from neutron.db.models import ovn as ovn_models"},{"line_number":30,"context_line":"from neutron.db.models import securitygroup  # noqa"}],"source_content_type":"text/x-python","patch_set":50,"id":"187d2c93_c723c39e","line":27,"in_reply_to":"989b2f58_f67dfba1","updated":"2024-10-24 11:35:37.000000000","message":"Done","commit_id":"3a294ea2d395b86253aa438bcb22d3862499cb5f"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/commands.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"712a90aead1dbb5be5f7fb9693c2a229caeaa66a","unresolved":true,"context_lines":[{"line_number":612,"context_line":"                break"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"class UpdateAddrSetCommand(command.BaseCommand):"},{"line_number":616,"context_line":"    def __init__(self, api, name, addrs_add\u003dNone, addrs_remove\u003dNone,"},{"line_number":617,"context_line":"                 if_exists\u003dTrue):"},{"line_number":618,"context_line":"        super(UpdateAddrSetCommand, self).__init__(api)"}],"source_content_type":"text/x-python","patch_set":21,"id":"d573c3d4_18fb1d00","line":615,"updated":"2024-01-16 12:54:32.000000000","message":"Why not using the ovsdbapp \"address_set_add_addresses\" and \"address_set_remove_addresses\" already implemented?","commit_id":"8e79b90b8406ef634e1fc990e45d58b46154be63"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"be181b05198b42a13ab09a57f5776a0670792b5f","unresolved":false,"context_lines":[{"line_number":612,"context_line":"                break"},{"line_number":613,"context_line":""},{"line_number":614,"context_line":""},{"line_number":615,"context_line":"class UpdateAddrSetCommand(command.BaseCommand):"},{"line_number":616,"context_line":"    def __init__(self, api, name, addrs_add\u003dNone, addrs_remove\u003dNone,"},{"line_number":617,"context_line":"                 if_exists\u003dTrue):"},{"line_number":618,"context_line":"        super(UpdateAddrSetCommand, self).__init__(api)"}],"source_content_type":"text/x-python","patch_set":21,"id":"fe2f77b5_1849e13b","line":615,"in_reply_to":"d573c3d4_18fb1d00","updated":"2024-01-16 13:47:19.000000000","message":"Since the current version of ovsdbapp does not support CIDR type addresses for Address_Set commands, I have submitted a fixed patch [1] that was recently merged. After new version ovsdbapp released, I will upgrade it.\n\n[1]https://review.opendev.org/c/openstack/ovsdbapp/+/905044","commit_id":"8e79b90b8406ef634e1fc990e45d58b46154be63"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/impl_idl_ovn.py":[{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c71c6ddaad7ea2514e84e7292263534a1c7c2314","unresolved":true,"context_lines":[{"line_number":468,"context_line":"    def delete_address_set(self, name, if_exists\u003dTrue, **columns):"},{"line_number":469,"context_line":"        return cmd.DelAddrSetCommand(self, name, if_exists)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    def get_address_set(self, as_name):"},{"line_number":472,"context_line":"        try:"},{"line_number":473,"context_line":"            return self.lookup(\u0027Address_Set\u0027, as_name)"},{"line_number":474,"context_line":"        except idlutils.RowNotFound:"}],"source_content_type":"text/x-python","patch_set":10,"id":"3704032c_98a8757d","line":471,"updated":"2023-05-25 10:05:55.000000000","message":"The ovsdbapp library already have commands to manage address sets. Couldn\u0027t we use those ? \n\nPerhaps we could even delete the \"delete_address_set\" from the neutron repository.\n\nref: https://github.com/openstack/ovsdbapp/blob/770f77d86f8beb5beb50f6fa30cdd4432253951d/ovsdbapp/schema/ovn_northbound/impl_idl.py#L86-L102","commit_id":"cd0edfc0e598726dbf78d7a3e78cf990f76ad040"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"02c3640cc13f56ac14e0e70c84207abf5752c884","unresolved":true,"context_lines":[{"line_number":468,"context_line":"    def delete_address_set(self, name, if_exists\u003dTrue, **columns):"},{"line_number":469,"context_line":"        return cmd.DelAddrSetCommand(self, name, if_exists)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    def get_address_set(self, as_name):"},{"line_number":472,"context_line":"        try:"},{"line_number":473,"context_line":"            return self.lookup(\u0027Address_Set\u0027, as_name)"},{"line_number":474,"context_line":"        except idlutils.RowNotFound:"}],"source_content_type":"text/x-python","patch_set":10,"id":"5f63cc4a_46220c09","line":471,"in_reply_to":"2d4af85d_7a2e5ebf","updated":"2023-05-29 02:55:53.000000000","message":"Okay, I know what you mean.Let me upgrade it in next patch.","commit_id":"cd0edfc0e598726dbf78d7a3e78cf990f76ad040"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"59a1a20f14989be530de9904efe905c1bf9532b2","unresolved":true,"context_lines":[{"line_number":468,"context_line":"    def delete_address_set(self, name, if_exists\u003dTrue, **columns):"},{"line_number":469,"context_line":"        return cmd.DelAddrSetCommand(self, name, if_exists)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    def get_address_set(self, as_name):"},{"line_number":472,"context_line":"        try:"},{"line_number":473,"context_line":"            return self.lookup(\u0027Address_Set\u0027, as_name)"},{"line_number":474,"context_line":"        except idlutils.RowNotFound:"}],"source_content_type":"text/x-python","patch_set":10,"id":"a67725e2_69fc6e98","line":471,"in_reply_to":"3704032c_98a8757d","updated":"2023-05-25 11:45:38.000000000","message":"Because the func \u0027address_set_add\u0027 from ovsdbapp could not meet my demand that it could set \u0027external_ids\u0027 of Address_Set.\n\nYeah, i will delete the func ‘delete_address_set’ from the neutron.","commit_id":"cd0edfc0e598726dbf78d7a3e78cf990f76ad040"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"77e87cbdf6ea17f83da2b66e415049056143cb71","unresolved":false,"context_lines":[{"line_number":468,"context_line":"    def delete_address_set(self, name, if_exists\u003dTrue, **columns):"},{"line_number":469,"context_line":"        return cmd.DelAddrSetCommand(self, name, if_exists)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    def get_address_set(self, as_name):"},{"line_number":472,"context_line":"        try:"},{"line_number":473,"context_line":"            return self.lookup(\u0027Address_Set\u0027, as_name)"},{"line_number":474,"context_line":"        except idlutils.RowNotFound:"}],"source_content_type":"text/x-python","patch_set":10,"id":"84cbe560_3373f3a8","line":471,"in_reply_to":"5f63cc4a_46220c09","updated":"2023-06-26 09:03:40.000000000","message":"Done","commit_id":"cd0edfc0e598726dbf78d7a3e78cf990f76ad040"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"112777c093709c12c170c5d39a6a3cb3b03360ba","unresolved":true,"context_lines":[{"line_number":468,"context_line":"    def delete_address_set(self, name, if_exists\u003dTrue, **columns):"},{"line_number":469,"context_line":"        return cmd.DelAddrSetCommand(self, name, if_exists)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    def get_address_set(self, as_name):"},{"line_number":472,"context_line":"        try:"},{"line_number":473,"context_line":"            return self.lookup(\u0027Address_Set\u0027, as_name)"},{"line_number":474,"context_line":"        except idlutils.RowNotFound:"}],"source_content_type":"text/x-python","patch_set":10,"id":"f448115f_c520eb12","line":471,"in_reply_to":"a67725e2_69fc6e98","updated":"2023-05-25 14:38:54.000000000","message":"I see, so to do that you can combine the command with a db_set in the same transaction. For example:\n\nFor example:\n\n```\nwith api.transaction(check_error\u003dTrue) as txn:\n    txn.add(nb_idl.address_set_add(\u003cas_name\u003e))\n    txn.add(nb_idl.db_set(\u0027Address_Set\u0027, \u003cas_name\u003e, (\u0027external_ids\u0027, {...})))\n```","commit_id":"cd0edfc0e598726dbf78d7a3e78cf990f76ad040"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"e000ab83f11e829ccc5500045a96c3782118ceea","unresolved":true,"context_lines":[{"line_number":468,"context_line":"    def delete_address_set(self, name, if_exists\u003dTrue, **columns):"},{"line_number":469,"context_line":"        return cmd.DelAddrSetCommand(self, name, if_exists)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    def get_address_set(self, as_name):"},{"line_number":472,"context_line":"        try:"},{"line_number":473,"context_line":"            return self.lookup(\u0027Address_Set\u0027, as_name)"},{"line_number":474,"context_line":"        except idlutils.RowNotFound:"}],"source_content_type":"text/x-python","patch_set":10,"id":"e5b5a67f_38b7be79","line":471,"in_reply_to":"d20f989c_24ad481b","updated":"2023-05-26 07:11:10.000000000","message":"There is an issue that \u0027address_set_add\u0027 from ovsdbapp could not set CIDR to \"addresses\" of Address_Set.","commit_id":"cd0edfc0e598726dbf78d7a3e78cf990f76ad040"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"19956445177f90c8e277ee003fcef7deeb8280dc","unresolved":true,"context_lines":[{"line_number":468,"context_line":"    def delete_address_set(self, name, if_exists\u003dTrue, **columns):"},{"line_number":469,"context_line":"        return cmd.DelAddrSetCommand(self, name, if_exists)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    def get_address_set(self, as_name):"},{"line_number":472,"context_line":"        try:"},{"line_number":473,"context_line":"            return self.lookup(\u0027Address_Set\u0027, as_name)"},{"line_number":474,"context_line":"        except idlutils.RowNotFound:"}],"source_content_type":"text/x-python","patch_set":10,"id":"2d4af85d_7a2e5ebf","line":471,"in_reply_to":"d8cde316_339fe505","updated":"2023-05-26 14:19:22.000000000","message":"What I want to avoid is to have too many custom commands in the Neutron codebase (more code to maintain, review, test, etc...).\n\nI would rather improve the ovsdbapp ones and use a basic ovsdbapp commands for now until there\u0027s a new release of ovsdbapp (perhaps even leave a TODO to replace this db_set() with address_set_add_addresses() in the future)\n\nThat\u0027s good for other projects that also uses ovsdbapp, everyone wins and less code to maintain here.","commit_id":"cd0edfc0e598726dbf78d7a3e78cf990f76ad040"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"d539c279325a5132173a6575a17472138a9f871f","unresolved":true,"context_lines":[{"line_number":468,"context_line":"    def delete_address_set(self, name, if_exists\u003dTrue, **columns):"},{"line_number":469,"context_line":"        return cmd.DelAddrSetCommand(self, name, if_exists)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    def get_address_set(self, as_name):"},{"line_number":472,"context_line":"        try:"},{"line_number":473,"context_line":"            return self.lookup(\u0027Address_Set\u0027, as_name)"},{"line_number":474,"context_line":"        except idlutils.RowNotFound:"}],"source_content_type":"text/x-python","patch_set":10,"id":"d8cde316_339fe505","line":471,"in_reply_to":"e5b5a67f_38b7be79","updated":"2023-05-26 14:14:22.000000000","message":"Perhaps we could fix that in ovsdbapp for this command. But we still can use base commands to poppulate any column. For example, we can use db_set() again in this case. I just tested you can pass any string there:\n\n```\nwith api.transaction(check_error\u003dTrue) as txn:                                                                                                                                                \n    txn.add(api.address_set_add(\u0027test_as\u0027))     \n    txn.add(api.db_set(\u0027Address_Set\u0027, \u0027test_as\u0027, (\u0027external_ids\u0027, {\u0027oi\u0027: \u0027ola\u0027})))\n    txn.add(api.db_set(\u0027Address_Set\u0027, \u0027test_as\u0027, (\u0027addresses\u0027, [\u002710.0.8.2\u0027, \u0027192.168.1.0/24\u0027, \u0027banana\u0027])))\n```\n\n```\nstack@central:~/devstack$ sudo ovn-nbctl list Address_Set\n_uuid               : 3e03315b-9d0f-4e1e-abd8-e5a86f2350a0\naddresses           : [\"10.0.8.2\", \"192.168.1.0/24\", banana]\nexternal_ids        : {oi\u003dola}\nname                : test_as\n```","commit_id":"cd0edfc0e598726dbf78d7a3e78cf990f76ad040"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"898eacbc2ec8d20dbe48b515691a93a769aa51e0","unresolved":true,"context_lines":[{"line_number":468,"context_line":"    def delete_address_set(self, name, if_exists\u003dTrue, **columns):"},{"line_number":469,"context_line":"        return cmd.DelAddrSetCommand(self, name, if_exists)"},{"line_number":470,"context_line":""},{"line_number":471,"context_line":"    def get_address_set(self, as_name):"},{"line_number":472,"context_line":"        try:"},{"line_number":473,"context_line":"            return self.lookup(\u0027Address_Set\u0027, as_name)"},{"line_number":474,"context_line":"        except idlutils.RowNotFound:"}],"source_content_type":"text/x-python","patch_set":10,"id":"d20f989c_24ad481b","line":471,"in_reply_to":"f448115f_c520eb12","updated":"2023-05-26 03:07:44.000000000","message":"OK, it\u0027s a good iead, i will upgrade it in next patch.","commit_id":"cd0edfc0e598726dbf78d7a3e78cf990f76ad040"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2dbf6bd7d2717b7ddbc03eddd9be7f794391fb6e","unresolved":true,"context_lines":[{"line_number":465,"context_line":"        return cmd.DelStaticRouteCommand(self, lrouter, ip_prefix, nexthop,"},{"line_number":466,"context_line":"                                         if_exists)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def update_address_set(self, name, addrs_add, addrs_remove,"},{"line_number":469,"context_line":"                           if_exists\u003dTrue):"},{"line_number":470,"context_line":"        # TODO(liushy): This func should be deleted once ovsdbapp could"},{"line_number":471,"context_line":"        # add/remove CIDR type address and we should call the related"}],"source_content_type":"text/x-python","patch_set":12,"id":"9fe6828f_0e731000","line":468,"range":{"start_line":468,"start_character":8,"end_line":468,"end_character":26},"updated":"2023-07-19 16:11:48.000000000","message":"Same here: please add a FT test","commit_id":"7de229609efe1f6c5629ff2d11caa11324555d76"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"8ef5034099dc0fe3958a297572e48429811283c9","unresolved":false,"context_lines":[{"line_number":465,"context_line":"        return cmd.DelStaticRouteCommand(self, lrouter, ip_prefix, nexthop,"},{"line_number":466,"context_line":"                                         if_exists)"},{"line_number":467,"context_line":""},{"line_number":468,"context_line":"    def update_address_set(self, name, addrs_add, addrs_remove,"},{"line_number":469,"context_line":"                           if_exists\u003dTrue):"},{"line_number":470,"context_line":"        # TODO(liushy): This func should be deleted once ovsdbapp could"},{"line_number":471,"context_line":"        # add/remove CIDR type address and we should call the related"}],"source_content_type":"text/x-python","patch_set":12,"id":"732a4fd8_594290ff","line":468,"range":{"start_line":468,"start_character":8,"end_line":468,"end_character":26},"in_reply_to":"9fe6828f_0e731000","updated":"2023-08-04 09:50:58.000000000","message":"Done","commit_id":"7de229609efe1f6c5629ff2d11caa11324555d76"},{"author":{"_account_id":6773,"name":"Lucas Alvares Gomes","email":"lucasagomes@gmail.com","username":"lucasagomes"},"change_message_id":"c00e98d1f069d6bbd42d134bc17768afd95dbb27","unresolved":true,"context_lines":[{"line_number":470,"context_line":"                           if_exists\u003dTrue):"},{"line_number":471,"context_line":"        # TODO(liushy): This func should be deleted once ovsdbapp could"},{"line_number":472,"context_line":"        # add/remove CIDR type address and we should call the related"},{"line_number":473,"context_line":"        # func from ovsdbapp."},{"line_number":474,"context_line":"        return cmd.UpdateAddrSetCommand(self, name, addrs_add, addrs_remove,"},{"line_number":475,"context_line":"                                        if_exists)"},{"line_number":476,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5002f4a7_3d974762","line":473,"updated":"2024-01-08 09:34:47.000000000","message":"Is there a patch for it already in ovsdbapp ?","commit_id":"8e79b90b8406ef634e1fc990e45d58b46154be63"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"4ebdc238e5c85464cfeb585b303ceab6ab4755ab","unresolved":false,"context_lines":[{"line_number":470,"context_line":"                           if_exists\u003dTrue):"},{"line_number":471,"context_line":"        # TODO(liushy): This func should be deleted once ovsdbapp could"},{"line_number":472,"context_line":"        # add/remove CIDR type address and we should call the related"},{"line_number":473,"context_line":"        # func from ovsdbapp."},{"line_number":474,"context_line":"        return cmd.UpdateAddrSetCommand(self, name, addrs_add, addrs_remove,"},{"line_number":475,"context_line":"                                        if_exists)"},{"line_number":476,"context_line":""}],"source_content_type":"text/x-python","patch_set":21,"id":"5bf3e543_cdb258b1","line":473,"in_reply_to":"5002f4a7_3d974762","updated":"2024-01-08 11:28:09.000000000","message":"There is no related patch in ovsdbapp.","commit_id":"8e79b90b8406ef634e1fc990e45d58b46154be63"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/maintenance.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"291d93ce01fd9de7502319eabd85ab3883bc609c","unresolved":true,"context_lines":[{"line_number":285,"context_line":"                    revision_numbers_db.bump_revision(context, n_obj,"},{"line_number":286,"context_line":"                                                      row.resource_type)"},{"line_number":287,"context_line":"                elif row.resource_type \u003d\u003d ovn_const.TYPE_ADDRESS_GROUPS:"},{"line_number":288,"context_line":"                    need_bump \u003d False"},{"line_number":289,"context_line":"                    for obj in ovn_obj:"},{"line_number":290,"context_line":"                        if not obj:"},{"line_number":291,"context_line":"                            # NOTE(liushy): We create two Address_Sets for"}],"source_content_type":"text/x-python","patch_set":50,"id":"5d0203cd_0607374d","line":288,"range":{"start_line":288,"start_character":32,"end_line":288,"end_character":37},"updated":"2024-10-15 19:44:03.000000000","message":"nit: probably should have defaulted to True, then could remove L306. If we need to revisit can change that.","commit_id":"3a294ea2d395b86253aa438bcb22d3862499cb5f"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/ovn_client.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2dbf6bd7d2717b7ddbc03eddd9be7f794391fb6e","unresolved":true,"context_lines":[{"line_number":2324,"context_line":"        db_rev.delete_revision("},{"line_number":2325,"context_line":"            context, rule[\u0027id\u0027], ovn_const.TYPE_SECURITY_GROUP_RULES)"},{"line_number":2326,"context_line":""},{"line_number":2327,"context_line":"    def _checkout_ip_list(self, addresses):"},{"line_number":2328,"context_line":"        if not addresses:"},{"line_number":2329,"context_line":"            addresses \u003d []"},{"line_number":2330,"context_line":"        ip_addresses \u003d [netaddr.IPNetwork(ip)"}],"source_content_type":"text/x-python","patch_set":12,"id":"0cfe1e21_73112dec","line":2327,"range":{"start_line":2327,"start_character":8,"end_line":2327,"end_character":25},"updated":"2023-07-19 16:11:48.000000000","message":"Please add UTs to test this method. Also add a method description to know what is the input/output expected.","commit_id":"7de229609efe1f6c5629ff2d11caa11324555d76"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"8ef5034099dc0fe3958a297572e48429811283c9","unresolved":false,"context_lines":[{"line_number":2324,"context_line":"        db_rev.delete_revision("},{"line_number":2325,"context_line":"            context, rule[\u0027id\u0027], ovn_const.TYPE_SECURITY_GROUP_RULES)"},{"line_number":2326,"context_line":""},{"line_number":2327,"context_line":"    def _checkout_ip_list(self, addresses):"},{"line_number":2328,"context_line":"        if not addresses:"},{"line_number":2329,"context_line":"            addresses \u003d []"},{"line_number":2330,"context_line":"        ip_addresses \u003d [netaddr.IPNetwork(ip)"}],"source_content_type":"text/x-python","patch_set":12,"id":"e47f7961_736b3050","line":2327,"range":{"start_line":2327,"start_character":8,"end_line":2327,"end_character":25},"in_reply_to":"0cfe1e21_73112dec","updated":"2023-08-04 09:50:58.000000000","message":"Done","commit_id":"7de229609efe1f6c5629ff2d11caa11324555d76"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2dbf6bd7d2717b7ddbc03eddd9be7f794391fb6e","unresolved":true,"context_lines":[{"line_number":2337,"context_line":"                addr_map[const.IP_VERSION_4].append(str(addr.cidr))"},{"line_number":2338,"context_line":"        return addr_map"},{"line_number":2339,"context_line":""},{"line_number":2340,"context_line":"    def process_address_group(self, context, address_group,"},{"line_number":2341,"context_line":"                              addrs_add\u003dNone, addrs_del\u003dNone):"},{"line_number":2342,"context_line":"        addr_map_add \u003d self._checkout_ip_list(addrs_add)"},{"line_number":2343,"context_line":"        addr_map_del \u003d self._checkout_ip_list(addrs_del)"}],"source_content_type":"text/x-python","patch_set":12,"id":"45144a40_0c20c40a","line":2340,"range":{"start_line":2340,"start_character":8,"end_line":2340,"end_character":29},"updated":"2023-07-19 16:11:48.000000000","message":"Please add FT to check this method","commit_id":"7de229609efe1f6c5629ff2d11caa11324555d76"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"8ef5034099dc0fe3958a297572e48429811283c9","unresolved":false,"context_lines":[{"line_number":2337,"context_line":"                addr_map[const.IP_VERSION_4].append(str(addr.cidr))"},{"line_number":2338,"context_line":"        return addr_map"},{"line_number":2339,"context_line":""},{"line_number":2340,"context_line":"    def process_address_group(self, context, address_group,"},{"line_number":2341,"context_line":"                              addrs_add\u003dNone, addrs_del\u003dNone):"},{"line_number":2342,"context_line":"        addr_map_add \u003d self._checkout_ip_list(addrs_add)"},{"line_number":2343,"context_line":"        addr_map_del \u003d self._checkout_ip_list(addrs_del)"}],"source_content_type":"text/x-python","patch_set":12,"id":"942c9832_d28fc989","line":2340,"range":{"start_line":2340,"start_character":8,"end_line":2340,"end_character":29},"in_reply_to":"45144a40_0c20c40a","updated":"2023-08-04 09:50:58.000000000","message":"Done","commit_id":"7de229609efe1f6c5629ff2d11caa11324555d76"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2dbf6bd7d2717b7ddbc03eddd9be7f794391fb6e","unresolved":true,"context_lines":[{"line_number":2367,"context_line":"                    txn.add(self._nb_idl.db_set("},{"line_number":2368,"context_line":"                        \u0027Address_Set\u0027, as_name, *attrs))"},{"line_number":2369,"context_line":""},{"line_number":2370,"context_line":"    def delete_address_group(self, context, address_group_id):"},{"line_number":2371,"context_line":"        ipv4_as_name \u003d utils.ovn_ag_addrset_name(address_group_id, \u0027ip4\u0027)"},{"line_number":2372,"context_line":"        ipv6_as_name \u003d utils.ovn_ag_addrset_name(address_group_id, \u0027ip6\u0027)"},{"line_number":2373,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"}],"source_content_type":"text/x-python","patch_set":12,"id":"ad11ab7e_de90e5db","line":2370,"range":{"start_line":2370,"start_character":4,"end_line":2370,"end_character":62},"updated":"2023-07-19 16:11:48.000000000","message":"Please add FT to check this method","commit_id":"7de229609efe1f6c5629ff2d11caa11324555d76"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"8ef5034099dc0fe3958a297572e48429811283c9","unresolved":false,"context_lines":[{"line_number":2367,"context_line":"                    txn.add(self._nb_idl.db_set("},{"line_number":2368,"context_line":"                        \u0027Address_Set\u0027, as_name, *attrs))"},{"line_number":2369,"context_line":""},{"line_number":2370,"context_line":"    def delete_address_group(self, context, address_group_id):"},{"line_number":2371,"context_line":"        ipv4_as_name \u003d utils.ovn_ag_addrset_name(address_group_id, \u0027ip4\u0027)"},{"line_number":2372,"context_line":"        ipv6_as_name \u003d utils.ovn_ag_addrset_name(address_group_id, \u0027ip6\u0027)"},{"line_number":2373,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"}],"source_content_type":"text/x-python","patch_set":12,"id":"a64c25bd_a466794f","line":2370,"range":{"start_line":2370,"start_character":4,"end_line":2370,"end_character":62},"in_reply_to":"ad11ab7e_de90e5db","updated":"2023-08-04 09:50:58.000000000","message":"Done","commit_id":"7de229609efe1f6c5629ff2d11caa11324555d76"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c5b1d6886c619db44dfba0d485232507df136c4b","unresolved":true,"context_lines":[{"line_number":2587,"context_line":"                        }"},{"line_number":2588,"context_line":"        attrs \u003d [(\u0027external_ids\u0027, external_ids),]"},{"line_number":2589,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":2590,"context_line":"            for ip_version in [const.IP_VERSION_6, const.IP_VERSION_4]:"},{"line_number":2591,"context_line":"                as_name \u003d utils.ovn_ag_addrset_name(address_group[\u0027id\u0027],"},{"line_number":2592,"context_line":"                                                    \u0027ip\u0027 + str(ip_version))"},{"line_number":2593,"context_line":"                txn.add(self._nb_idl.address_set_add("}],"source_content_type":"text/x-python","patch_set":36,"id":"5ad4756e_5dd46bb5","line":2590,"range":{"start_line":2590,"start_character":12,"end_line":2590,"end_character":71},"updated":"2024-07-05 10:30:10.000000000","message":"nit: is it possible to have another value rather than 4 and 6?","commit_id":"5595e463af960643b02263f59135299cf3ac04b5"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"011827c435711fb41fef04690b33fcde33075edb","unresolved":true,"context_lines":[{"line_number":2587,"context_line":"                        }"},{"line_number":2588,"context_line":"        attrs \u003d [(\u0027external_ids\u0027, external_ids),]"},{"line_number":2589,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":2590,"context_line":"            for ip_version in [const.IP_VERSION_6, const.IP_VERSION_4]:"},{"line_number":2591,"context_line":"                as_name \u003d utils.ovn_ag_addrset_name(address_group[\u0027id\u0027],"},{"line_number":2592,"context_line":"                                                    \u0027ip\u0027 + str(ip_version))"},{"line_number":2593,"context_line":"                txn.add(self._nb_idl.address_set_add("}],"source_content_type":"text/x-python","patch_set":36,"id":"b01a5856_0671df8f","line":2590,"range":{"start_line":2590,"start_character":12,"end_line":2590,"end_character":71},"in_reply_to":"5ad4756e_5dd46bb5","updated":"2024-07-30 09:30:10.000000000","message":"not at present","commit_id":"5595e463af960643b02263f59135299cf3ac04b5"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0f314524e20cdf8f9afdb8117c0e82427ce65ddb","unresolved":true,"context_lines":[{"line_number":2573,"context_line":"            if addr.version \u003d\u003d const.IP_VERSION_6:"},{"line_number":2574,"context_line":"                addr_map[const.IP_VERSION_6].append(str(addr.cidr))"},{"line_number":2575,"context_line":"            elif addr.version \u003d\u003d const.IP_VERSION_4:"},{"line_number":2576,"context_line":"                addr_map[const.IP_VERSION_4].append(str(addr.cidr))"},{"line_number":2577,"context_line":"        return addr_map"},{"line_number":2578,"context_line":""},{"line_number":2579,"context_line":"    def update_address_group(self, context, address_group):"}],"source_content_type":"text/x-python","patch_set":42,"id":"c3dc15f6_6c119cbe","line":2576,"updated":"2024-08-19 20:21:06.000000000","message":"Why do we have to check addr.version? It can only be 4 or 6, right?\n\n  addr_map[addr.version].append(str(addr.cidr))","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"01616594771523bcb70ef8a1a89dab76fd1ce426","unresolved":false,"context_lines":[{"line_number":2573,"context_line":"            if addr.version \u003d\u003d const.IP_VERSION_6:"},{"line_number":2574,"context_line":"                addr_map[const.IP_VERSION_6].append(str(addr.cidr))"},{"line_number":2575,"context_line":"            elif addr.version \u003d\u003d const.IP_VERSION_4:"},{"line_number":2576,"context_line":"                addr_map[const.IP_VERSION_4].append(str(addr.cidr))"},{"line_number":2577,"context_line":"        return addr_map"},{"line_number":2578,"context_line":""},{"line_number":2579,"context_line":"    def update_address_group(self, context, address_group):"}],"source_content_type":"text/x-python","patch_set":42,"id":"85ad7329_62882402","line":2576,"in_reply_to":"94cc632b_19aaa0ac","updated":"2024-10-15 07:06:31.000000000","message":"Done","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"70d5efe02619fc1c5b4f21f3bd413ff845aa8011","unresolved":true,"context_lines":[{"line_number":2573,"context_line":"            if addr.version \u003d\u003d const.IP_VERSION_6:"},{"line_number":2574,"context_line":"                addr_map[const.IP_VERSION_6].append(str(addr.cidr))"},{"line_number":2575,"context_line":"            elif addr.version \u003d\u003d const.IP_VERSION_4:"},{"line_number":2576,"context_line":"                addr_map[const.IP_VERSION_4].append(str(addr.cidr))"},{"line_number":2577,"context_line":"        return addr_map"},{"line_number":2578,"context_line":""},{"line_number":2579,"context_line":"    def update_address_group(self, context, address_group):"}],"source_content_type":"text/x-python","patch_set":42,"id":"94cc632b_19aaa0ac","line":2576,"in_reply_to":"a9caba6c_cb2b9154","updated":"2024-09-03 07:30:28.000000000","message":"Because the address group may contain either IPv4 or IPv6 addresses, and A single Address_Set must contain addresses of the same type.\nI think creating two Address Sets for IPv4 and IPv6 types is a better solution.","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"76fc9a083d5f9078f61670b24fcaa72163c62afc","unresolved":true,"context_lines":[{"line_number":2573,"context_line":"            if addr.version \u003d\u003d const.IP_VERSION_6:"},{"line_number":2574,"context_line":"                addr_map[const.IP_VERSION_6].append(str(addr.cidr))"},{"line_number":2575,"context_line":"            elif addr.version \u003d\u003d const.IP_VERSION_4:"},{"line_number":2576,"context_line":"                addr_map[const.IP_VERSION_4].append(str(addr.cidr))"},{"line_number":2577,"context_line":"        return addr_map"},{"line_number":2578,"context_line":""},{"line_number":2579,"context_line":"    def update_address_group(self, context, address_group):"}],"source_content_type":"text/x-python","patch_set":42,"id":"a9caba6c_cb2b9154","line":2576,"in_reply_to":"acdf08c7_e4c3de33","updated":"2024-09-03 07:08:15.000000000","message":"And that\u0027s a question I have related to this: why do we need 2 Address_Set registers per Neutron address group? We can distinguish between IPv4 and IPv6 addresses, thus we can create one single Address_Set.\n\nFurthermore, we are breaking the 1-to-1 relationship between Neutron resources and OVN resources (ports - LSP, networks - LS, router - LR, FIP - NAT, etc)","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"6131bb9eba35c1fed00254a7e3d1225abd924886","unresolved":true,"context_lines":[{"line_number":2573,"context_line":"            if addr.version \u003d\u003d const.IP_VERSION_6:"},{"line_number":2574,"context_line":"                addr_map[const.IP_VERSION_6].append(str(addr.cidr))"},{"line_number":2575,"context_line":"            elif addr.version \u003d\u003d const.IP_VERSION_4:"},{"line_number":2576,"context_line":"                addr_map[const.IP_VERSION_4].append(str(addr.cidr))"},{"line_number":2577,"context_line":"        return addr_map"},{"line_number":2578,"context_line":""},{"line_number":2579,"context_line":"    def update_address_group(self, context, address_group):"}],"source_content_type":"text/x-python","patch_set":42,"id":"acdf08c7_e4c3de33","line":2576,"in_reply_to":"c3dc15f6_6c119cbe","updated":"2024-08-20 03:18:06.000000000","message":"yes, only IPv4 or IPv6","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0f314524e20cdf8f9afdb8117c0e82427ce65ddb","unresolved":true,"context_lines":[{"line_number":2601,"context_line":"            db_rev.bump_revision("},{"line_number":2602,"context_line":"                context, address_group, ovn_const.TYPE_ADDRESS_GROUPS)"},{"line_number":2603,"context_line":""},{"line_number":2604,"context_line":"    def create_address_group(self, context, address_group):"},{"line_number":2605,"context_line":"        addr_map_all \u003d self._checkout_ip_list("},{"line_number":2606,"context_line":"            address_group.get(\u0027addresses\u0027))"},{"line_number":2607,"context_line":"        external_ids \u003d {ovn_const.OVN_ADDRESS_GROUP_ID_KEY:"}],"source_content_type":"text/x-python","patch_set":42,"id":"26b139de_140bb21d","line":2604,"updated":"2024-08-19 20:21:06.000000000","message":"nit: create should be above update to track others in this file","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"6131bb9eba35c1fed00254a7e3d1225abd924886","unresolved":false,"context_lines":[{"line_number":2601,"context_line":"            db_rev.bump_revision("},{"line_number":2602,"context_line":"                context, address_group, ovn_const.TYPE_ADDRESS_GROUPS)"},{"line_number":2603,"context_line":""},{"line_number":2604,"context_line":"    def create_address_group(self, context, address_group):"},{"line_number":2605,"context_line":"        addr_map_all \u003d self._checkout_ip_list("},{"line_number":2606,"context_line":"            address_group.get(\u0027addresses\u0027))"},{"line_number":2607,"context_line":"        external_ids \u003d {ovn_const.OVN_ADDRESS_GROUP_ID_KEY:"}],"source_content_type":"text/x-python","patch_set":42,"id":"4848005f_37909245","line":2604,"in_reply_to":"26b139de_140bb21d","updated":"2024-08-20 03:18:06.000000000","message":"Done","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"01616594771523bcb70ef8a1a89dab76fd1ce426","unresolved":true,"context_lines":[{"line_number":2585,"context_line":"                        for ip in addresses]"},{"line_number":2586,"context_line":"        addr_map \u003d {const.IP_VERSION_4: [], const.IP_VERSION_6: []}"},{"line_number":2587,"context_line":"        for addr in ip_addresses:"},{"line_number":2588,"context_line":"            if addr.version \u003d\u003d const.IP_VERSION_6:"},{"line_number":2589,"context_line":"                addr_map[const.IP_VERSION_6].append(str(addr.cidr))"},{"line_number":2590,"context_line":"            elif addr.version \u003d\u003d const.IP_VERSION_4:"},{"line_number":2591,"context_line":"                addr_map[const.IP_VERSION_4].append(str(addr.cidr))"},{"line_number":2592,"context_line":"        return addr_map"},{"line_number":2593,"context_line":""},{"line_number":2594,"context_line":"    def create_address_group(self, context, address_group):"}],"source_content_type":"text/x-python","patch_set":49,"id":"595a60bc_b45f5dce","line":2591,"range":{"start_line":2588,"start_character":12,"end_line":2591,"end_character":67},"updated":"2024-10-15 07:06:31.000000000","message":"We have only ipv4 and ipv6 versions, you can directly\n  addr_map[addr.version].append(str(addr.cidr))","commit_id":"0c83d7b098694fc6204d3dc58e853ca5b055d0f6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9086659b54111a2c1f46b656ab820fa151da1f57","unresolved":false,"context_lines":[{"line_number":2585,"context_line":"                        for ip in addresses]"},{"line_number":2586,"context_line":"        addr_map \u003d {const.IP_VERSION_4: [], const.IP_VERSION_6: []}"},{"line_number":2587,"context_line":"        for addr in ip_addresses:"},{"line_number":2588,"context_line":"            if addr.version \u003d\u003d const.IP_VERSION_6:"},{"line_number":2589,"context_line":"                addr_map[const.IP_VERSION_6].append(str(addr.cidr))"},{"line_number":2590,"context_line":"            elif addr.version \u003d\u003d const.IP_VERSION_4:"},{"line_number":2591,"context_line":"                addr_map[const.IP_VERSION_4].append(str(addr.cidr))"},{"line_number":2592,"context_line":"        return addr_map"},{"line_number":2593,"context_line":""},{"line_number":2594,"context_line":"    def create_address_group(self, context, address_group):"}],"source_content_type":"text/x-python","patch_set":49,"id":"baf4022c_ecc5b73e","line":2591,"range":{"start_line":2588,"start_character":12,"end_line":2591,"end_character":67},"in_reply_to":"595a60bc_b45f5dce","updated":"2024-10-15 07:14:33.000000000","message":"Done","commit_id":"0c83d7b098694fc6204d3dc58e853ca5b055d0f6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"01616594771523bcb70ef8a1a89dab76fd1ce426","unresolved":true,"context_lines":[{"line_number":2602,"context_line":"                                ovn_const.TYPE_ADDRESS_GROUPS))"},{"line_number":2603,"context_line":"                        }"},{"line_number":2604,"context_line":"        attrs \u003d [(\u0027external_ids\u0027, external_ids),]"},{"line_number":2605,"context_line":"        for ip_version in [const.IP_VERSION_6, const.IP_VERSION_4]:"},{"line_number":2606,"context_line":"            as_name \u003d utils.ovn_ag_addrset_name(address_group[\u0027id\u0027],"},{"line_number":2607,"context_line":"                                                \u0027ip\u0027 + str(ip_version))"},{"line_number":2608,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"}],"source_content_type":"text/x-python","patch_set":49,"id":"e294ec16_2d8199de","line":2605,"range":{"start_line":2605,"start_character":26,"end_line":2605,"end_character":66},"updated":"2024-10-15 07:06:31.000000000","message":"nit: const.IP_ALLOWED_VERSIONS","commit_id":"0c83d7b098694fc6204d3dc58e853ca5b055d0f6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9086659b54111a2c1f46b656ab820fa151da1f57","unresolved":false,"context_lines":[{"line_number":2602,"context_line":"                                ovn_const.TYPE_ADDRESS_GROUPS))"},{"line_number":2603,"context_line":"                        }"},{"line_number":2604,"context_line":"        attrs \u003d [(\u0027external_ids\u0027, external_ids),]"},{"line_number":2605,"context_line":"        for ip_version in [const.IP_VERSION_6, const.IP_VERSION_4]:"},{"line_number":2606,"context_line":"            as_name \u003d utils.ovn_ag_addrset_name(address_group[\u0027id\u0027],"},{"line_number":2607,"context_line":"                                                \u0027ip\u0027 + str(ip_version))"},{"line_number":2608,"context_line":"            with self._nb_idl.transaction(check_error\u003dTrue) as txn:"}],"source_content_type":"text/x-python","patch_set":49,"id":"1cb44fe2_e9a6acea","line":2605,"range":{"start_line":2605,"start_character":26,"end_line":2605,"end_character":66},"in_reply_to":"e294ec16_2d8199de","updated":"2024-10-15 07:14:33.000000000","message":"Done","commit_id":"0c83d7b098694fc6204d3dc58e853ca5b055d0f6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"01616594771523bcb70ef8a1a89dab76fd1ce426","unresolved":true,"context_lines":[{"line_number":2616,"context_line":""},{"line_number":2617,"context_line":"    def update_address_group(self, context, address_group):"},{"line_number":2618,"context_line":"        addr_map_db \u003d self._checkout_ip_list(address_group[\u0027addresses\u0027])"},{"line_number":2619,"context_line":"        for ip_version in [const.IP_VERSION_6, const.IP_VERSION_4]:"},{"line_number":2620,"context_line":"            as_name \u003d utils.ovn_ag_addrset_name(address_group[\u0027id\u0027],"},{"line_number":2621,"context_line":"                                                \u0027ip\u0027 + str(ip_version))"},{"line_number":2622,"context_line":"            check_rev_cmd \u003d self._nb_idl.check_revision_number("}],"source_content_type":"text/x-python","patch_set":49,"id":"83ed54de_d675b27f","line":2619,"range":{"start_line":2619,"start_character":26,"end_line":2619,"end_character":66},"updated":"2024-10-15 07:06:31.000000000","message":"ditto","commit_id":"0c83d7b098694fc6204d3dc58e853ca5b055d0f6"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"9086659b54111a2c1f46b656ab820fa151da1f57","unresolved":false,"context_lines":[{"line_number":2616,"context_line":""},{"line_number":2617,"context_line":"    def update_address_group(self, context, address_group):"},{"line_number":2618,"context_line":"        addr_map_db \u003d self._checkout_ip_list(address_group[\u0027addresses\u0027])"},{"line_number":2619,"context_line":"        for ip_version in [const.IP_VERSION_6, const.IP_VERSION_4]:"},{"line_number":2620,"context_line":"            as_name \u003d utils.ovn_ag_addrset_name(address_group[\u0027id\u0027],"},{"line_number":2621,"context_line":"                                                \u0027ip\u0027 + str(ip_version))"},{"line_number":2622,"context_line":"            check_rev_cmd \u003d self._nb_idl.check_revision_number("}],"source_content_type":"text/x-python","patch_set":49,"id":"39f4d753_4ed547aa","line":2619,"range":{"start_line":2619,"start_character":26,"end_line":2619,"end_character":66},"in_reply_to":"83ed54de_d675b27f","updated":"2024-10-15 07:14:33.000000000","message":"Done","commit_id":"0c83d7b098694fc6204d3dc58e853ca5b055d0f6"}],"neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/ovsdb/test_ovn_client.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8eda69d1f90a0b8ac0c8ab0cd5383187e3194dfd","unresolved":true,"context_lines":[{"line_number":118,"context_line":"        ovn_client.process_address_group(self.context, ag,"},{"line_number":119,"context_line":"                                         addrs_add, addrs_del)"},{"line_number":120,"context_line":"        as_v4_new \u003d _find_address_set_for_ag()[0]"},{"line_number":121,"context_line":"        self.assertEqual([\u002720.0.0.1/32\u0027], as_v4_new.addresses)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Delete the address group"},{"line_number":124,"context_line":"        ovn_client.delete_address_group(self.context, ag[\u0027id\u0027])"},{"line_number":125,"context_line":"        self.assertEqual((None, None), _find_address_set_for_ag())"}],"source_content_type":"text/x-python","patch_set":25,"id":"0d48ac74_514044f3","line":122,"range":{"start_line":121,"start_character":8,"end_line":122,"end_character":1},"updated":"2024-03-06 08:25:45.000000000","message":"You should add another \"process_address_group\" call to check how an update works, adding new addresses and removing some of the existing ones.","commit_id":"312fe4bce471773ae3e76e58d0dce2752d91808f"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"a41b2047a553a7d1db161c5cf398b800d5f99d2b","unresolved":false,"context_lines":[{"line_number":118,"context_line":"        ovn_client.process_address_group(self.context, ag,"},{"line_number":119,"context_line":"                                         addrs_add, addrs_del)"},{"line_number":120,"context_line":"        as_v4_new \u003d _find_address_set_for_ag()[0]"},{"line_number":121,"context_line":"        self.assertEqual([\u002720.0.0.1/32\u0027], as_v4_new.addresses)"},{"line_number":122,"context_line":""},{"line_number":123,"context_line":"        # Delete the address group"},{"line_number":124,"context_line":"        ovn_client.delete_address_group(self.context, ag[\u0027id\u0027])"},{"line_number":125,"context_line":"        self.assertEqual((None, None), _find_address_set_for_ag())"}],"source_content_type":"text/x-python","patch_set":25,"id":"f56616f7_576fcca4","line":122,"range":{"start_line":121,"start_character":8,"end_line":122,"end_character":1},"in_reply_to":"0d48ac74_514044f3","updated":"2024-03-07 03:22:58.000000000","message":"Done","commit_id":"312fe4bce471773ae3e76e58d0dce2752d91808f"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0f314524e20cdf8f9afdb8117c0e82427ce65ddb","unresolved":true,"context_lines":[{"line_number":165,"context_line":"        ag[\u0027addresses\u0027] \u003d [\u002720.0.0.1/32\u0027, \u00272001:db8::/32\u0027]"},{"line_number":166,"context_line":"        ovn_client.update_address_group(self.context, ag)"},{"line_number":167,"context_line":"        as_v4_new \u003d _find_address_set_for_ag()[0]"},{"line_number":168,"context_line":"        self.assertEqual([\u002720.0.0.1/32\u0027], as_v4_new.addresses)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        # Delete the address group"},{"line_number":171,"context_line":"        ovn_client.delete_address_group(self.context, ag[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":42,"id":"f8e6dc95_1a7cfefc","line":168,"updated":"2024-08-19 20:21:06.000000000","message":"Missing test for v6","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"6131bb9eba35c1fed00254a7e3d1225abd924886","unresolved":false,"context_lines":[{"line_number":165,"context_line":"        ag[\u0027addresses\u0027] \u003d [\u002720.0.0.1/32\u0027, \u00272001:db8::/32\u0027]"},{"line_number":166,"context_line":"        ovn_client.update_address_group(self.context, ag)"},{"line_number":167,"context_line":"        as_v4_new \u003d _find_address_set_for_ag()[0]"},{"line_number":168,"context_line":"        self.assertEqual([\u002720.0.0.1/32\u0027], as_v4_new.addresses)"},{"line_number":169,"context_line":""},{"line_number":170,"context_line":"        # Delete the address group"},{"line_number":171,"context_line":"        ovn_client.delete_address_group(self.context, ag[\u0027id\u0027])"}],"source_content_type":"text/x-python","patch_set":42,"id":"e26bb58f_87640a17","line":168,"in_reply_to":"f8e6dc95_1a7cfefc","updated":"2024-08-20 03:18:06.000000000","message":"Done","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"}],"neutron/tests/unit/plugins/ml2/drivers/ovn/mech_driver/ovsdb/test_maintenance.py":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0f314524e20cdf8f9afdb8117c0e82427ce65ddb","unresolved":true,"context_lines":[{"line_number":339,"context_line":"        self._test_fix_create_update_address_group(ovn_rev\u003d-1, neutron_rev\u003d2)"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def test_fix_address_group_update(self):"},{"line_number":342,"context_line":"        self._test_fix_create_update_address_group(ovn_rev\u003d5, neutron_rev\u003d7)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    @mock.patch.object(maintenance, \u0027LOG\u0027)"},{"line_number":345,"context_line":"    def test__fix_create_update_no_sttd_attr(self, mock_log):"}],"source_content_type":"text/x-python","patch_set":42,"id":"386e983b_942f4843","line":342,"updated":"2024-08-19 20:21:06.000000000","message":"No test for delete?","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"},{"author":{"_account_id":28056,"name":"Liushy","email":"liuxie_11@163.com","username":"liuxie_11"},"change_message_id":"6131bb9eba35c1fed00254a7e3d1225abd924886","unresolved":true,"context_lines":[{"line_number":339,"context_line":"        self._test_fix_create_update_address_group(ovn_rev\u003d-1, neutron_rev\u003d2)"},{"line_number":340,"context_line":""},{"line_number":341,"context_line":"    def test_fix_address_group_update(self):"},{"line_number":342,"context_line":"        self._test_fix_create_update_address_group(ovn_rev\u003d5, neutron_rev\u003d7)"},{"line_number":343,"context_line":""},{"line_number":344,"context_line":"    @mock.patch.object(maintenance, \u0027LOG\u0027)"},{"line_number":345,"context_line":"    def test__fix_create_update_no_sttd_attr(self, mock_log):"}],"source_content_type":"text/x-python","patch_set":42,"id":"4e8eb06d_72f2fc5e","line":342,"in_reply_to":"386e983b_942f4843","updated":"2024-08-20 03:18:06.000000000","message":"yeah, I think no need tests for _fix_delte, and I didn\u0027t see any delete-related test cases in this file.","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"}],"releasenotes/notes/ovn-driver-support-address-group-fac3d96af5093a17.yaml":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"0f314524e20cdf8f9afdb8117c0e82427ce65ddb","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"features:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    Added support for the ``address-group`` in the OVN mechanism driver."}],"source_content_type":"text/x-yaml","patch_set":42,"id":"769ffbbd_38367732","line":4,"range":{"start_line":4,"start_character":4,"end_line":4,"end_character":26},"updated":"2024-08-19 20:21:06.000000000","message":"s/Add support for","commit_id":"eeb26732dc8d3a88779c63386889180e63059bc6"}]}
