)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c17f4f45232c821360d597f0faf140190f8820a9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"2cf68675_f5d7bf3a","updated":"2026-02-16 16:17:52.000000000","message":"FT test still failing, I need to check what is happening","commit_id":"26949f5ba79ae2748ace1b007981fd5d736da5d3"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a2e96f62e5e108e08e2f2cb119591f967df2fd6c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"65431ca9_2a29141c","updated":"2026-02-19 21:50:47.000000000","message":"recheck gate fixed","commit_id":"fe47ec951a7daeb7dad92660f0789f0a461eb682"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"989fac30d50ec4d16f51377026e5d0799ec9e024","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"34b52864_7f7239eb","updated":"2026-02-20 12:25:36.000000000","message":"recheck neutron-functional","commit_id":"fe47ec951a7daeb7dad92660f0789f0a461eb682"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8200608306ac597b406744f2b7d6d57fd6638eb2","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8c6421ea_96a5d3a1","updated":"2026-02-23 07:32:01.000000000","message":"recheck neutron-functional","commit_id":"fe47ec951a7daeb7dad92660f0789f0a461eb682"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"9e6d2b7f97c4b84399ab253bb2f4a70f57ceca62","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"f87d093a_00ec205a","updated":"2026-02-18 14:52:32.000000000","message":"thanks for the info, lgtm","commit_id":"fe47ec951a7daeb7dad92660f0789f0a461eb682"}],"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":"3622b9a43b17b4bee91ee3d8ed19e2904ebb702f","unresolved":true,"context_lines":[{"line_number":1141,"context_line":"                    ag[\u0027id\u0027], \u0027ip\u0027 + str(ip_version))"},{"line_number":1142,"context_line":"                if not self._nb_idl.lookup(\u0027Address_Set\u0027, as_name,"},{"line_number":1143,"context_line":"                                           default\u003dNone):"},{"line_number":1144,"context_line":"                    ag_missing_as.append(ag)"},{"line_number":1145,"context_line":"                    break"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"        # 2. Create the corresponding Address_Set (IPv4, IPv6) registers."}],"source_content_type":"text/x-python","patch_set":2,"id":"b2ed85be_da499824","line":1144,"updated":"2026-02-16 15:52:59.000000000","message":"My only nit is we could just save ag[\u0027id\u0027] as that\u0027s all we use in the loop and filter below from what I can tell.","commit_id":"a52a2426bd40413d5573150b43e83950998f4526"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8c144244f2def5b5baf710e278a20ffa3416738f","unresolved":false,"context_lines":[{"line_number":1141,"context_line":"                    ag[\u0027id\u0027], \u0027ip\u0027 + str(ip_version))"},{"line_number":1142,"context_line":"                if not self._nb_idl.lookup(\u0027Address_Set\u0027, as_name,"},{"line_number":1143,"context_line":"                                           default\u003dNone):"},{"line_number":1144,"context_line":"                    ag_missing_as.append(ag)"},{"line_number":1145,"context_line":"                    break"},{"line_number":1146,"context_line":""},{"line_number":1147,"context_line":"        # 2. Create the corresponding Address_Set (IPv4, IPv6) registers."}],"source_content_type":"text/x-python","patch_set":2,"id":"e91df3be_a6818e89","line":1144,"in_reply_to":"b2ed85be_da499824","updated":"2026-02-16 16:01:24.000000000","message":"Right, we only need the ID. I\u0027ll update it.","commit_id":"a52a2426bd40413d5573150b43e83950998f4526"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"600112a9f0fbff2f7cafe8a0f24547b729065d8d","unresolved":true,"context_lines":[{"line_number":1139,"context_line":"                if not self._nb_idl.lookup(\u0027Address_Set\u0027, as_name,"},{"line_number":1140,"context_line":"                                           default\u003dNone):"},{"line_number":1141,"context_line":"                    ag_ids_missing_as.append(ag[\u0027id\u0027])"},{"line_number":1142,"context_line":"                    break"},{"line_number":1143,"context_line":""},{"line_number":1144,"context_line":"        # 2. Create the corresponding Address_Set (IPv4, IPv6) registers."},{"line_number":1145,"context_line":"        # The ``create_address_group`` method calls ``address_set_add`` with"}],"source_content_type":"text/x-python","patch_set":5,"id":"d10d63e4_24902294","line":1142,"updated":"2026-02-17 17:55:23.000000000","message":"I didn\u0027t notice my first review, but do we want to break here? Won\u0027t we miss all the entries?","commit_id":"1d06d79858bbe1746bf85a43fd164898a28f0869"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2d5187e947e30e037b12738e5487f4c4fe4d4525","unresolved":false,"context_lines":[{"line_number":1139,"context_line":"                if not self._nb_idl.lookup(\u0027Address_Set\u0027, as_name,"},{"line_number":1140,"context_line":"                                           default\u003dNone):"},{"line_number":1141,"context_line":"                    ag_ids_missing_as.append(ag[\u0027id\u0027])"},{"line_number":1142,"context_line":"                    break"},{"line_number":1143,"context_line":""},{"line_number":1144,"context_line":"        # 2. Create the corresponding Address_Set (IPv4, IPv6) registers."},{"line_number":1145,"context_line":"        # The ``create_address_group`` method calls ``address_set_add`` with"}],"source_content_type":"text/x-python","patch_set":5,"id":"2dd929da_466ce310","line":1142,"in_reply_to":"d10d63e4_24902294","updated":"2026-02-18 08:53:48.000000000","message":"This will break the second `for`, the one that loops over `IP_ALLOWED_VERSIONS`. If we find that any of the ``Address_Set`` is missing (NOTE1), that means this Address Group does not have the corresponding ``Address_Set``.\n\nNOTE1: even if the Address Group has only IPv4 (or IPv6) addresses, we always create both. For example:\n```\nstack@u24ovn2:/tmp$ openstack address group create --address 10.0.10.20/32 ag20\n+-----------------+--------------------------------------+\n| Field           | Value                                |\n+-----------------+--------------------------------------+\n| addresses       | [\u002710.0.10.20/32\u0027]                    |\n| created_at      | 2026-02-18T08:50:20Z                 |\n| description     |                                      |\n| id              | 8afe3589-a693-47ed-a4a8-10297364492f |\n| name            | ag20                                 |\n| project_id      | 89d816cf5a6f4513958be26cd80075fb     |\n| revision_number | 1                                    |\n| updated_at      | 2026-02-18T08:50:21Z                 |\n+-----------------+--------------------------------------+\n\nroot@u24ovn2:~# ovn-nbctl list address-set ag_8afe3589_a693_47ed_a4a8_10297364492f_ip6\n_uuid               : 2ebcf212-330f-4e51-bd73-403699e152af\naddresses           : []\nexternal_ids        : {\"neutron:address_group_id\"\u003d\"8afe3589-a693-47ed-a4a8-10297364492f\", \"neutron:revision_number\"\u003d\"1\"}\nname                : ag_8afe3589_a693_47ed_a4a8_10297364492f_ip6\nroot@u24ovn2:~# \nroot@u24ovn2:~# \nroot@u24ovn2:~# ovn-nbctl list address-set ag_8afe3589_a693_47ed_a4a8_10297364492f_ip4\n_uuid               : 66085f1a-6ba6-4817-a9ff-86aadf3cf8a9\naddresses           : [\"10.0.10.20/32\"]\nexternal_ids        : {\"neutron:address_group_id\"\u003d\"8afe3589-a693-47ed-a4a8-10297364492f\", \"neutron:revision_number\"\u003d\"1\"}\nname                : ag_8afe3589_a693_47ed_a4a8_10297364492f_ip4\n```","commit_id":"1d06d79858bbe1746bf85a43fd164898a28f0869"}],"neutron/tests/functional/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":"3622b9a43b17b4bee91ee3d8ed19e2904ebb702f","unresolved":true,"context_lines":[{"line_number":240,"context_line":"    def _find_address_set_for_ag(self, ag_id):"},{"line_number":241,"context_line":"        _as \u003d []"},{"line_number":242,"context_line":"        for ip_version in (n_const.IP_VERSION_4,"},{"line_number":243,"context_line":"                           n_const.IP_VERSION_6):"},{"line_number":244,"context_line":"            as_name \u003d utils.ovn_ag_addrset_name(ag_id, \u0027ip\u0027 + str(ip_version))"},{"line_number":245,"context_line":"            _as.append(self.nb_api.lookup("},{"line_number":246,"context_line":"                \u0027Address_Set\u0027, as_name, default\u003dNone))"}],"source_content_type":"text/x-python","patch_set":2,"id":"6d5d5d88_6db03f09","line":243,"updated":"2026-02-16 15:52:59.000000000","message":"s/n_const.IP_ALLOWED_VERSIONS as below","commit_id":"a52a2426bd40413d5573150b43e83950998f4526"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8c144244f2def5b5baf710e278a20ffa3416738f","unresolved":false,"context_lines":[{"line_number":240,"context_line":"    def _find_address_set_for_ag(self, ag_id):"},{"line_number":241,"context_line":"        _as \u003d []"},{"line_number":242,"context_line":"        for ip_version in (n_const.IP_VERSION_4,"},{"line_number":243,"context_line":"                           n_const.IP_VERSION_6):"},{"line_number":244,"context_line":"            as_name \u003d utils.ovn_ag_addrset_name(ag_id, \u0027ip\u0027 + str(ip_version))"},{"line_number":245,"context_line":"            _as.append(self.nb_api.lookup("},{"line_number":246,"context_line":"                \u0027Address_Set\u0027, as_name, default\u003dNone))"}],"source_content_type":"text/x-python","patch_set":2,"id":"9457cca4_c9586693","line":243,"in_reply_to":"6d5d5d88_6db03f09","updated":"2026-02-16 16:01:24.000000000","message":"In this case I want to explicitly set the order. It is unlikely that `IP_ALLOWED_VERSIONS` change the current order (that is ipv4, ipv6), but it is better to be explicit here.","commit_id":"a52a2426bd40413d5573150b43e83950998f4526"}],"releasenotes/notes/ovn-acl-with-address-set-89d4a6b6614b52c4.yaml":[{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3622b9a43b17b4bee91ee3d8ed19e2904ebb702f","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    After `change 949854 https://review.opendev.org/c/openstack/neutron/+/949854`_,"},{"line_number":5,"context_line":"    the Address Groups were stored in OVN as ``Address_Set`` and the security"},{"line_number":6,"context_line":"    group rules referring them had a match pointing to the ``Address_Set``"},{"line_number":7,"context_line":"    register. Now the OVN maintenance task fixes the ``ACL`` registers created"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"c0c2b327_b2938872","line":4,"range":{"start_line":4,"start_character":10,"end_line":4,"end_character":24},"updated":"2026-02-16 15:52:59.000000000","message":"I think you need to move the ` to right before the number? at least the job failed with some context","commit_id":"a52a2426bd40413d5573150b43e83950998f4526"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8c144244f2def5b5baf710e278a20ffa3416738f","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    After `change 949854 https://review.opendev.org/c/openstack/neutron/+/949854`_,"},{"line_number":5,"context_line":"    the Address Groups were stored in OVN as ``Address_Set`` and the security"},{"line_number":6,"context_line":"    group rules referring them had a match pointing to the ``Address_Set``"},{"line_number":7,"context_line":"    register. Now the OVN maintenance task fixes the ``ACL`` registers created"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"4fdec094_6495ade1","line":4,"range":{"start_line":4,"start_character":10,"end_line":4,"end_character":24},"in_reply_to":"c0c2b327_b2938872","updated":"2026-02-16 16:01:24.000000000","message":"Upssss, I\u0027m missing the brackets for the URL.","commit_id":"a52a2426bd40413d5573150b43e83950998f4526"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3622b9a43b17b4bee91ee3d8ed19e2904ebb702f","unresolved":true,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    After `change 949854 https://review.opendev.org/c/openstack/neutron/+/949854`_,"},{"line_number":5,"context_line":"    the Address Groups were stored in OVN as ``Address_Set`` and the security"},{"line_number":6,"context_line":"    group rules referring them had a match pointing to the ``Address_Set``"},{"line_number":7,"context_line":"    register. Now the OVN maintenance task fixes the ``ACL`` registers created"},{"line_number":8,"context_line":"    before this patch, adding the corresponding ``Address_Set`` and updating"},{"line_number":9,"context_line":"    the ``ACL`` register. See the link below for more:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"45897c67_b8af16b8","line":6,"range":{"start_line":6,"start_character":26,"end_line":6,"end_character":30},"updated":"2026-02-16 15:52:59.000000000","message":"s/to them","commit_id":"a52a2426bd40413d5573150b43e83950998f4526"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8c144244f2def5b5baf710e278a20ffa3416738f","unresolved":false,"context_lines":[{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    After `change 949854 https://review.opendev.org/c/openstack/neutron/+/949854`_,"},{"line_number":5,"context_line":"    the Address Groups were stored in OVN as ``Address_Set`` and the security"},{"line_number":6,"context_line":"    group rules referring them had a match pointing to the ``Address_Set``"},{"line_number":7,"context_line":"    register. Now the OVN maintenance task fixes the ``ACL`` registers created"},{"line_number":8,"context_line":"    before this patch, adding the corresponding ``Address_Set`` and updating"},{"line_number":9,"context_line":"    the ``ACL`` register. See the link below for more:"}],"source_content_type":"text/x-yaml","patch_set":2,"id":"a07b0449_5dc13e9c","line":6,"range":{"start_line":6,"start_character":26,"end_line":6,"end_character":30},"in_reply_to":"45897c67_b8af16b8","updated":"2026-02-16 16:01:24.000000000","message":"Done","commit_id":"a52a2426bd40413d5573150b43e83950998f4526"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3622b9a43b17b4bee91ee3d8ed19e2904ebb702f","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":2,"id":"a41a41a2_9e1b3a77","line":11,"range":{"start_line":9,"start_character":26,"end_line":11,"end_character":1},"updated":"2026-02-16 15:52:59.000000000","message":"For more information, see bug: `2141589 \u003chttps://bugs.launchpad.net/neutron/+bug/2141589\u003e`_.","commit_id":"a52a2426bd40413d5573150b43e83950998f4526"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"8c144244f2def5b5baf710e278a20ffa3416738f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"6662861b_1fbbd51e","line":11,"range":{"start_line":9,"start_character":26,"end_line":11,"end_character":1},"in_reply_to":"a41a41a2_9e1b3a77","updated":"2026-02-16 16:01:24.000000000","message":"Done","commit_id":"a52a2426bd40413d5573150b43e83950998f4526"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"600112a9f0fbff2f7cafe8a0f24547b729065d8d","unresolved":true,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    After `change 949854 \u003chttps://review.opendev.org/c/openstack/neutron/+/949854\u003e`_,"},{"line_number":5,"context_line":"    the Address Groups were stored in OVN as ``Address_Set`` and the security"},{"line_number":6,"context_line":"    group rules referring to them had a match pointing to the ``Address_Set``"},{"line_number":7,"context_line":"    register. Now the OVN maintenance task fixes the ``ACL`` registers created"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"aa363a12_96e2ac09","line":4,"updated":"2026-02-17 17:55:23.000000000","message":"nit: could move tick after \u0027change\u0027 to only number is hyperlink but just a nit","commit_id":"1d06d79858bbe1746bf85a43fd164898a28f0869"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2d5187e947e30e037b12738e5487f4c4fe4d4525","unresolved":false,"context_lines":[{"line_number":1,"context_line":"---"},{"line_number":2,"context_line":"fixes:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    After `change 949854 \u003chttps://review.opendev.org/c/openstack/neutron/+/949854\u003e`_,"},{"line_number":5,"context_line":"    the Address Groups were stored in OVN as ``Address_Set`` and the security"},{"line_number":6,"context_line":"    group rules referring to them had a match pointing to the ``Address_Set``"},{"line_number":7,"context_line":"    register. Now the OVN maintenance task fixes the ``ACL`` registers created"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"e3963c54_b4a6f413","line":4,"in_reply_to":"aa363a12_96e2ac09","updated":"2026-02-18 08:53:48.000000000","message":"Done","commit_id":"1d06d79858bbe1746bf85a43fd164898a28f0869"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"600112a9f0fbff2f7cafe8a0f24547b729065d8d","unresolved":true,"context_lines":[{"line_number":7,"context_line":"    register. Now the OVN maintenance task fixes the ``ACL`` registers created"},{"line_number":8,"context_line":"    before this patch, adding the corresponding ``Address_Set`` and updating"},{"line_number":9,"context_line":"    the ``ACL`` register. For more information, see bug:"},{"line_number":10,"context_line":"    `2141589 \u003chttps://bugs.launchpad.net/neutron/+bug/2141589\u003e_`."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"1a4a8e42_91a50fd9","line":10,"range":{"start_line":10,"start_character":62,"end_line":10,"end_character":63},"updated":"2026-02-17 17:55:23.000000000","message":"_ has to go outside the `` else this is italics in relnote","commit_id":"1d06d79858bbe1746bf85a43fd164898a28f0869"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2d5187e947e30e037b12738e5487f4c4fe4d4525","unresolved":false,"context_lines":[{"line_number":7,"context_line":"    register. Now the OVN maintenance task fixes the ``ACL`` registers created"},{"line_number":8,"context_line":"    before this patch, adding the corresponding ``Address_Set`` and updating"},{"line_number":9,"context_line":"    the ``ACL`` register. For more information, see bug:"},{"line_number":10,"context_line":"    `2141589 \u003chttps://bugs.launchpad.net/neutron/+bug/2141589\u003e_`."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"f5a087fc_78342b01","line":10,"range":{"start_line":10,"start_character":62,"end_line":10,"end_character":63},"in_reply_to":"1a4a8e42_91a50fd9","updated":"2026-02-18 08:53:48.000000000","message":"Done","commit_id":"1d06d79858bbe1746bf85a43fd164898a28f0869"}]}
