)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"ee6cbc7735233b6a3a12da45cb8cbfb310c35fd3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"5f6b5453_b1e1f58a","updated":"2026-07-01 14:44:53.000000000","message":"I locally verified it with test which I proposed in https://review.opendev.org/c/openstack/neutron-tempest-plugin/+/995695 and it seems that all works fine","commit_id":"b639f2686ea2f5ad0de06ee6e271977207c86973"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"678e65cfd5a243b22e63bdfe101cab8935983a8e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"48a4ae8d_9ac947f0","updated":"2026-07-10 12:08:31.000000000","message":"This is tested now in https://review.opendev.org/c/openstack/neutron-tempest-plugin/+/995695 - one of the tests there is failing but that\u0027s due to the problem with test and environment configuration.","commit_id":"8f582ef09ccea7a9cd6b63b1cbf48820b2b66be5"},{"author":{"_account_id":8313,"name":"Lajos Katona","display_name":"lajoskatona","email":"katonalala@gmail.com","username":"elajkat","status":"Ericsson Software Technology"},"change_message_id":"a83d5e9b2e3d49289fdb2122da0613ca9010f577","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"cfedcdd8_2a003a86","updated":"2026-08-13 15:57:58.000000000","message":"recheck\nthe issue now seems like pbr messed up things","commit_id":"2e66988b4e478b93cd6d5a1f33865fcec0b2c8ac"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"61f6276e20ab29678c7e1408cdceb6ebe2746f42","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"a333390f_c4053512","updated":"2026-08-13 13:02:31.000000000","message":"recheck - errors don\u0027t look like related to this patch, it complains that some config files are missing","commit_id":"2e66988b4e478b93cd6d5a1f33865fcec0b2c8ac"}],"neutron_fwaas/services/firewall/rpc/serialization.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a14d99f8201bf2bcdb370ebfe3fd1a5542b2f611","unresolved":true,"context_lines":[{"line_number":72,"context_line":"                                     port_details\u003dNone, last_port\u003dNone):"},{"line_number":73,"context_line":"    \"\"\"Build an RPC payload using FWaaS OVO objects plus RPC metadata.\"\"\""},{"line_number":74,"context_line":"    fwg_ovo \u003d firewall_db.get_firewall_group(context, fwg_id)"},{"line_number":75,"context_line":"    fwg_dict \u003d firewall_db.make_firewall_group_dict_with_rules("},{"line_number":76,"context_line":"        context, fwg_id)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    return {"},{"line_number":79,"context_line":"        \u0027firewall_group\u0027: fwg_ovo,"}],"source_content_type":"text/x-python","patch_set":1,"id":"018481ca_67b45766","line":76,"range":{"start_line":75,"start_character":4,"end_line":76,"end_character":24},"updated":"2026-07-01 15:21:43.000000000","message":"I\u0027m not sure this is necessary. You can pass `fwg_ovo` to `_load_policy_rules`, right?","commit_id":"b639f2686ea2f5ad0de06ee6e271977207c86973"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2ce7e0f5c4e51dc536bf62bd7b8393f35e4ae4fe","unresolved":false,"context_lines":[{"line_number":72,"context_line":"                                     port_details\u003dNone, last_port\u003dNone):"},{"line_number":73,"context_line":"    \"\"\"Build an RPC payload using FWaaS OVO objects plus RPC metadata.\"\"\""},{"line_number":74,"context_line":"    fwg_ovo \u003d firewall_db.get_firewall_group(context, fwg_id)"},{"line_number":75,"context_line":"    fwg_dict \u003d firewall_db.make_firewall_group_dict_with_rules("},{"line_number":76,"context_line":"        context, fwg_id)"},{"line_number":77,"context_line":""},{"line_number":78,"context_line":"    return {"},{"line_number":79,"context_line":"        \u0027firewall_group\u0027: fwg_ovo,"}],"source_content_type":"text/x-python","patch_set":1,"id":"8892848d_8f10f4bc","line":76,"range":{"start_line":75,"start_character":4,"end_line":76,"end_character":24},"in_reply_to":"018481ca_67b45766","updated":"2026-07-08 14:51:06.000000000","message":"Done","commit_id":"b639f2686ea2f5ad0de06ee6e271977207c86973"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a14d99f8201bf2bcdb370ebfe3fd1a5542b2f611","unresolved":true,"context_lines":[{"line_number":79,"context_line":"        \u0027firewall_group\u0027: fwg_ovo,"},{"line_number":80,"context_line":"        \u0027ingress_rules\u0027: _load_policy_rules("},{"line_number":81,"context_line":"            firewall_db, context, fwg_dict, \u0027ingress_rule_list\u0027),"},{"line_number":82,"context_line":"        \u0027egress_rules\u0027: _load_policy_rules("},{"line_number":83,"context_line":"            firewall_db, context, fwg_dict, \u0027egress_rule_list\u0027),"},{"line_number":84,"context_line":"        \u0027add_port_ids\u0027: add_port_ids,"},{"line_number":85,"context_line":"        \u0027del_port_ids\u0027: del_port_ids,"}],"source_content_type":"text/x-python","patch_set":1,"id":"a8891d86_38e800b6","line":82,"range":{"start_line":82,"start_character":24,"end_line":82,"end_character":42},"updated":"2026-07-01 15:21:43.000000000","message":"nit: it is worth mentioning that this call is done twice and inside it we retrieve the same `firewall_db.get_firewall_rule`","commit_id":"b639f2686ea2f5ad0de06ee6e271977207c86973"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2ce7e0f5c4e51dc536bf62bd7b8393f35e4ae4fe","unresolved":false,"context_lines":[{"line_number":79,"context_line":"        \u0027firewall_group\u0027: fwg_ovo,"},{"line_number":80,"context_line":"        \u0027ingress_rules\u0027: _load_policy_rules("},{"line_number":81,"context_line":"            firewall_db, context, fwg_dict, \u0027ingress_rule_list\u0027),"},{"line_number":82,"context_line":"        \u0027egress_rules\u0027: _load_policy_rules("},{"line_number":83,"context_line":"            firewall_db, context, fwg_dict, \u0027egress_rule_list\u0027),"},{"line_number":84,"context_line":"        \u0027add_port_ids\u0027: add_port_ids,"},{"line_number":85,"context_line":"        \u0027del_port_ids\u0027: del_port_ids,"}],"source_content_type":"text/x-python","patch_set":1,"id":"35a2f494_9a712d44","line":82,"range":{"start_line":82,"start_character":24,"end_line":82,"end_character":42},"in_reply_to":"a8891d86_38e800b6","updated":"2026-07-08 14:51:06.000000000","message":"I\u0027ve changed this code slightly","commit_id":"b639f2686ea2f5ad0de06ee6e271977207c86973"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2b77ce1ef1769afaf380a43d04773b47a47e6247","unresolved":true,"context_lines":[{"line_number":29,"context_line":"        if host:"},{"line_number":30,"context_line":"            self._versions[host] \u003d version"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def get(self, host, default\u003dFWAAS_RPC_VERSION_LEGACY):"},{"line_number":33,"context_line":"        # TODO(ovo-migration): Remove legacy RPC dict format support when"},{"line_number":34,"context_line":"        # minimum supported agent RPC version is 1.1."},{"line_number":35,"context_line":"        return self._versions.get(host, default)"}],"source_content_type":"text/x-python","patch_set":6,"id":"4b4795a8_5f5322ba","line":32,"range":{"start_line":32,"start_character":24,"end_line":32,"end_character":56},"updated":"2026-08-26 09:53:39.000000000","message":"nit: actually this should not be a parameter, but a hardcoded value, IMO, inside the method","commit_id":"2e66988b4e478b93cd6d5a1f33865fcec0b2c8ac"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f1a4a7f1acbc408e733586ae2aedca32f44ec185","unresolved":false,"context_lines":[{"line_number":29,"context_line":"        if host:"},{"line_number":30,"context_line":"            self._versions[host] \u003d version"},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    def get(self, host, default\u003dFWAAS_RPC_VERSION_LEGACY):"},{"line_number":33,"context_line":"        # TODO(ovo-migration): Remove legacy RPC dict format support when"},{"line_number":34,"context_line":"        # minimum supported agent RPC version is 1.1."},{"line_number":35,"context_line":"        return self._versions.get(host, default)"}],"source_content_type":"text/x-python","patch_set":6,"id":"d64ecd22_5b954e3d","line":32,"range":{"start_line":32,"start_character":24,"end_line":32,"end_character":56},"in_reply_to":"4b4795a8_5f5322ba","updated":"2026-08-27 09:42:33.000000000","message":"this class is now gone as I addressed your comment below","commit_id":"2e66988b4e478b93cd6d5a1f33865fcec0b2c8ac"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"2b77ce1ef1769afaf380a43d04773b47a47e6247","unresolved":true,"context_lines":[{"line_number":44,"context_line":"        # minimum supported agent RPC version is 1.1."},{"line_number":45,"context_line":"        if not self._versions:"},{"line_number":46,"context_line":"            return FWAAS_RPC_VERSION_LEGACY"},{"line_number":47,"context_line":"        if any(v \u003d\u003d FWAAS_RPC_VERSION_LEGACY for v in self._versions.values()):"},{"line_number":48,"context_line":"            return FWAAS_RPC_VERSION_LEGACY"},{"line_number":49,"context_line":"        return FWAAS_RPC_VERSION_OVO"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"3817bde3_fc89f5e5","line":48,"range":{"start_line":47,"start_character":0,"end_line":48,"end_character":43},"updated":"2026-08-26 09:53:39.000000000","message":"This has a problem: if the first registered host is 1.1, it will send the information in this format.\n\nAlso hosts with version 1.0, won\u0027t send the `host` in some methods (`get_firewall_groups_for_project`, for example), and it won\u0027t be possible to register them as 1.0 hosts.\n\nI would keep 1.0 version during H and H+1 (I is slurp release), and change the default to 1.1 in H+2.","commit_id":"2e66988b4e478b93cd6d5a1f33865fcec0b2c8ac"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"f1a4a7f1acbc408e733586ae2aedca32f44ec185","unresolved":false,"context_lines":[{"line_number":44,"context_line":"        # minimum supported agent RPC version is 1.1."},{"line_number":45,"context_line":"        if not self._versions:"},{"line_number":46,"context_line":"            return FWAAS_RPC_VERSION_LEGACY"},{"line_number":47,"context_line":"        if any(v \u003d\u003d FWAAS_RPC_VERSION_LEGACY for v in self._versions.values()):"},{"line_number":48,"context_line":"            return FWAAS_RPC_VERSION_LEGACY"},{"line_number":49,"context_line":"        return FWAAS_RPC_VERSION_OVO"},{"line_number":50,"context_line":""},{"line_number":51,"context_line":""}],"source_content_type":"text/x-python","patch_set":6,"id":"e9a78795_75aeac22","line":48,"range":{"start_line":47,"start_character":0,"end_line":48,"end_character":43},"in_reply_to":"3817bde3_fc89f5e5","updated":"2026-08-27 09:42:33.000000000","message":"Done","commit_id":"2e66988b4e478b93cd6d5a1f33865fcec0b2c8ac"}],"neutron_fwaas/services/firewall/service_drivers/agents/l2/fwaas_v2.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a14d99f8201bf2bcdb370ebfe3fd1a5542b2f611","unresolved":true,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def __init__(self, topic, host):"},{"line_number":48,"context_line":"        super().__init__(topic, host)"},{"line_number":49,"context_line":"        self.client.target \u003d oslo_messaging.Target("},{"line_number":50,"context_line":"            topic\u003dtopic, version\u003dself.FWAAS_RPC_VERSION)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def get_firewall_group_for_port(self, context, port_id, host):"},{"line_number":53,"context_line":"        \"\"\"Get firewall group is associated with a port\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"f979ecf8_8ec07c02","line":50,"range":{"start_line":49,"start_character":8,"end_line":50,"end_character":56},"updated":"2026-07-01 15:21:43.000000000","message":"I think we should change `FWaaSPluginApiMixin` instead and allow to pass the version. That will prevent from creating 2 targets in 2 different versions.","commit_id":"b639f2686ea2f5ad0de06ee6e271977207c86973"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2ce7e0f5c4e51dc536bf62bd7b8393f35e4ae4fe","unresolved":false,"context_lines":[{"line_number":46,"context_line":""},{"line_number":47,"context_line":"    def __init__(self, topic, host):"},{"line_number":48,"context_line":"        super().__init__(topic, host)"},{"line_number":49,"context_line":"        self.client.target \u003d oslo_messaging.Target("},{"line_number":50,"context_line":"            topic\u003dtopic, version\u003dself.FWAAS_RPC_VERSION)"},{"line_number":51,"context_line":""},{"line_number":52,"context_line":"    def get_firewall_group_for_port(self, context, port_id, host):"},{"line_number":53,"context_line":"        \"\"\"Get firewall group is associated with a port\"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"384ce44b_c7adbdb5","line":50,"range":{"start_line":49,"start_character":8,"end_line":50,"end_character":56},"in_reply_to":"f979ecf8_8ec07c02","updated":"2026-07-08 14:51:06.000000000","message":"Done","commit_id":"b639f2686ea2f5ad0de06ee6e271977207c86973"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"a14d99f8201bf2bcdb370ebfe3fd1a5542b2f611","unresolved":true,"context_lines":[{"line_number":87,"context_line":"    def initialize(self, connection, driver_type):"},{"line_number":88,"context_line":"        \"\"\"Perform Agent Extension initialization\"\"\""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        register_objects()"},{"line_number":91,"context_line":"        self.conf \u003d cfg.CONF"},{"line_number":92,"context_line":"        self.vlan_manager \u003d vlanmanager.LocalVlanManager()"},{"line_number":93,"context_line":"        fw_l2_driver_cls \u003d self._load_l2_driver_class(driver_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"8227b0c1_4e98556b","line":90,"range":{"start_line":90,"start_character":8,"end_line":90,"end_character":26},"updated":"2026-07-01 15:21:43.000000000","message":"Why here?","commit_id":"b639f2686ea2f5ad0de06ee6e271977207c86973"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"2ce7e0f5c4e51dc536bf62bd7b8393f35e4ae4fe","unresolved":false,"context_lines":[{"line_number":87,"context_line":"    def initialize(self, connection, driver_type):"},{"line_number":88,"context_line":"        \"\"\"Perform Agent Extension initialization\"\"\""},{"line_number":89,"context_line":""},{"line_number":90,"context_line":"        register_objects()"},{"line_number":91,"context_line":"        self.conf \u003d cfg.CONF"},{"line_number":92,"context_line":"        self.vlan_manager \u003d vlanmanager.LocalVlanManager()"},{"line_number":93,"context_line":"        fw_l2_driver_cls \u003d self._load_l2_driver_class(driver_type)"}],"source_content_type":"text/x-python","patch_set":1,"id":"1c732d72_7a208985","line":90,"range":{"start_line":90,"start_character":8,"end_line":90,"end_character":26},"in_reply_to":"8227b0c1_4e98556b","updated":"2026-07-08 14:51:06.000000000","message":"removed","commit_id":"b639f2686ea2f5ad0de06ee6e271977207c86973"}],"releasenotes/notes/migration-to-ovo-2033806f232dbea6.yaml":[{"author":{"_account_id":13861,"name":"yatin","email":"ykarel@redhat.com","username":"yatinkarel"},"change_message_id":"94dc31fe30ff1832670e693d83fdd12ed7ce2f1c","unresolved":true,"context_lines":[{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    FWaaS has been migrated to Oslo Versioned Objects (OVO) for database"},{"line_number":5,"context_line":"    access and agent communication. The REST API is unchanged; operators"},{"line_number":6,"context_line":"    upgrading a running cloud should follow the upgrade notes below."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"34539b5f_71a91a37","line":6,"range":{"start_line":5,"start_character":63,"end_line":6,"end_character":68},"updated":"2026-08-13 11:10:46.000000000","message":"but no notes below ?","commit_id":"8d145ca50115edd9128b162bbc4f71540abbe772"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"61f6276e20ab29678c7e1408cdceb6ebe2746f42","unresolved":false,"context_lines":[{"line_number":2,"context_line":"other:"},{"line_number":3,"context_line":"  - |"},{"line_number":4,"context_line":"    FWaaS has been migrated to Oslo Versioned Objects (OVO) for database"},{"line_number":5,"context_line":"    access and agent communication. The REST API is unchanged; operators"},{"line_number":6,"context_line":"    upgrading a running cloud should follow the upgrade notes below."}],"source_content_type":"text/x-yaml","patch_set":5,"id":"630f9c90_4d9e9f30","line":6,"range":{"start_line":5,"start_character":63,"end_line":6,"end_character":68},"in_reply_to":"34539b5f_71a91a37","updated":"2026-08-13 13:02:31.000000000","message":"updated :)","commit_id":"8d145ca50115edd9128b162bbc4f71540abbe772"}]}
