)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"23bd0225f448661a67ea1d33ce63a57e4b6101e5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bc67e3bb_f8fb15b9","updated":"2026-06-15 13:47:10.000000000","message":"Thanks!","commit_id":"c887765720a1e6480cf750f556185bd30595497b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"b7837ef6ca150a63ea601749ef6bbcc47818f35b","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"62df6909_bea755cf","updated":"2026-06-15 19:39:12.000000000","message":"recheck neutron-functional","commit_id":"c887765720a1e6480cf750f556185bd30595497b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"d5f34afa5c25597165e8f6362d7f331cc0213e01","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"bc5fb321_fea63913","updated":"2026-06-15 13:34:16.000000000","message":"recheck zuul","commit_id":"c887765720a1e6480cf750f556185bd30595497b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"cc032bfe3d5f34909a9613deffb8caf5a20a773e","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"729ad469_ebb77361","updated":"2026-06-15 19:26:05.000000000","message":"u","commit_id":"c887765720a1e6480cf750f556185bd30595497b"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"1bdef163839c1cc84a3196ad28090e25133c18cf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"106ce334_0ed51fd9","updated":"2026-06-16 12:42:44.000000000","message":"functional test failures seems related to this change for me, please check them","commit_id":"16ce4840712f4d2981f4569549df90a5f995f13e"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"06d203e2acdb06d3533dc09e93e773c584649dea","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":2,"id":"c50238b8_fbdf4c29","in_reply_to":"106ce334_0ed51fd9","updated":"2026-06-16 12:46:01.000000000","message":"Right!","commit_id":"16ce4840712f4d2981f4569549df90a5f995f13e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"6627d250a413d234aa70f8252a2517555a87bedf","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"1dd97703_797f8917","updated":"2026-06-16 16:18:26.000000000","message":"What was wrong with PS2 ?","commit_id":"4081f5de797b445c92b318f6500343f88410f747"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"721157e54380cc14022a354e27fccb1a08cad249","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"81034c99_c5fab606","in_reply_to":"1dd97703_797f8917","updated":"2026-06-16 16:30:07.000000000","message":"It broke functional tests.","commit_id":"4081f5de797b445c92b318f6500343f88410f747"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0a55da220ef372b7f54c3a62b7268de67ed3b72c","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":4,"id":"454d88d2_c62b0d83","in_reply_to":"81034c99_c5fab606","updated":"2026-06-16 16:33:07.000000000","message":"The tests became wrong with this patch. The do not mimic how Neutron deletes resources. The test should do whatever Neutron does and then call the DeleteCommand.","commit_id":"4081f5de797b445c92b318f6500343f88410f747"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"64d96b7947241fd0cf9575afe618283fb8a3ebab","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":8,"id":"aa4bccc1_c19d8740","updated":"2026-06-23 17:30:22.000000000","message":"Thanks!","commit_id":"0b3798e8216430872e30b237fa8f6c0c869da772"}],"neutron/plugins/ml2/drivers/ovn/mech_driver/ovsdb/commands.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"28105b2f85ab94e8a4977af759a602f4ec768cfa","unresolved":false,"context_lines":[{"line_number":29,"context_line":"from neutron.common.ovn import exceptions as ovn_exc"},{"line_number":30,"context_line":"from neutron.common.ovn import utils"},{"line_number":31,"context_line":"from neutron.services.portforwarding.constants import PORT_FORWARDING_PREFIX"},{"line_number":32,"context_line":"from neutron.services.evpn import commands as evpn_commands"},{"line_number":33,"context_line":""},{"line_number":34,"context_line":"from oslo_log import log"},{"line_number":35,"context_line":""}],"source_content_type":"text/x-python","patch_set":4,"id":"52e74815_85b073e1","line":32,"updated":"2026-06-16 17:43:58.000000000","message":"pep8: H306: imports not in alphabetical order (neutron.services.portforwarding.constants.port_forwarding_prefix, neutron.services.evpn.commands)","commit_id":"4081f5de797b445c92b318f6500343f88410f747"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"45f17de788c37c2311a8e4e5fb11228acec2c669","unresolved":true,"context_lines":[{"line_number":566,"context_line":"        hcg \u003d self.api.lookup(\u0027HA_Chassis_Group\u0027, self.router, default\u003dNone)"},{"line_number":567,"context_line":"        if not hcg:"},{"line_number":568,"context_line":"            router_id \u003d utils.get_neutron_name(self.router)"},{"line_number":569,"context_line":"            hcg_name \u003d evpn_commands.evpn_hcg_name(router_id)"},{"line_number":570,"context_line":"            # HCG created by the EVPN service."},{"line_number":571,"context_line":"            hcg \u003d self.api.lookup(\u0027HA_Chassis_Group\u0027, hcg_name, default\u003dNone)"},{"line_number":572,"context_line":"        if hcg:"}],"source_content_type":"text/x-python","patch_set":4,"id":"9b002f39_60e7306e","line":569,"updated":"2026-06-16 16:17:57.000000000","message":"We should not pollute OVN mech driver with EVPN service plugin specifics.","commit_id":"4081f5de797b445c92b318f6500343f88410f747"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"bcfb8f107d2c68e6ddb23cf3c3f697f334e9b93e","unresolved":false,"context_lines":[{"line_number":566,"context_line":"        hcg \u003d self.api.lookup(\u0027HA_Chassis_Group\u0027, self.router, default\u003dNone)"},{"line_number":567,"context_line":"        if not hcg:"},{"line_number":568,"context_line":"            router_id \u003d utils.get_neutron_name(self.router)"},{"line_number":569,"context_line":"            hcg_name \u003d evpn_commands.evpn_hcg_name(router_id)"},{"line_number":570,"context_line":"            # HCG created by the EVPN service."},{"line_number":571,"context_line":"            hcg \u003d self.api.lookup(\u0027HA_Chassis_Group\u0027, hcg_name, default\u003dNone)"},{"line_number":572,"context_line":"        if hcg:"}],"source_content_type":"text/x-python","patch_set":4,"id":"c0b18809_541f1502","line":569,"in_reply_to":"11074f53_bad5a107","updated":"2026-06-17 12:31:30.000000000","message":"How about changing the command tests to delete the router, just like Neutron does. Would be fine with me because the EVPN and Neutron resources are handled in two different transaction.","commit_id":"4081f5de797b445c92b318f6500343f88410f747"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"50b117a9cf13046409580027ce4f173203c9b2ca","unresolved":false,"context_lines":[{"line_number":566,"context_line":"        hcg \u003d self.api.lookup(\u0027HA_Chassis_Group\u0027, self.router, default\u003dNone)"},{"line_number":567,"context_line":"        if not hcg:"},{"line_number":568,"context_line":"            router_id \u003d utils.get_neutron_name(self.router)"},{"line_number":569,"context_line":"            hcg_name \u003d evpn_commands.evpn_hcg_name(router_id)"},{"line_number":570,"context_line":"            # HCG created by the EVPN service."},{"line_number":571,"context_line":"            hcg \u003d self.api.lookup(\u0027HA_Chassis_Group\u0027, hcg_name, default\u003dNone)"},{"line_number":572,"context_line":"        if hcg:"}],"source_content_type":"text/x-python","patch_set":4,"id":"11074f53_bad5a107","line":569,"in_reply_to":"9b002f39_60e7306e","updated":"2026-06-17 11:11:16.000000000","message":"I need to find another way:\n* Unset always the LRPs HCG\n* Delete the HCG in the `DeleteEVPNRouterCommand`, as before. But no LRP will have any reference to a HCG","commit_id":"4081f5de797b445c92b318f6500343f88410f747"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"510453939bf8cb953f3c73ccfe81c1966fbfab3c","unresolved":false,"context_lines":[{"line_number":561,"context_line":"    def run_idl(self, txn):"},{"line_number":562,"context_line":"        # Unset the ``HA_Chassis_Group`` from all the gateway"},{"line_number":563,"context_line":"        # ``Logical_Router_Port`` before deleting it."},{"line_number":564,"context_line":"        lr \u003d self.api.lookup(\u0027Logical_Router\u0027, self.router, default\u003dNone)"},{"line_number":565,"context_line":"        if lr:"},{"line_number":566,"context_line":"            for lrp in lr.ports:"},{"line_number":567,"context_line":"                lrp.ha_chassis_group \u003d []"},{"line_number":568,"context_line":""},{"line_number":569,"context_line":"        hcg \u003d self.api.lookup(\u0027HA_Chassis_Group\u0027, self.router, default\u003dNone)"},{"line_number":570,"context_line":"        if hcg:"},{"line_number":571,"context_line":"            # Now the ``HA_Chassis_Group`` can be deleted."}],"source_content_type":"text/x-python","patch_set":6,"id":"1d33527c_eed28c1b","line":568,"range":{"start_line":564,"start_character":8,"end_line":568,"end_character":1},"updated":"2026-06-23 14:28:57.000000000","message":"This is only needed for testing. The EVPN HCG is deleted when the router is already deleted, thus this is not needed.","commit_id":"9840f3866e469688cc12ae1eba03482c8ec7010a"}],"neutron/services/evpn/commands.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e143fa360f35bc8092d35588cbb126af0f601550","unresolved":true,"context_lines":[{"line_number":209,"context_line":"            self.api, ls_name, if_exists\u003dTrue).run_idl(txn)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        hcg_name \u003d _evpn_hcg_name(self.router_id)"},{"line_number":212,"context_line":"        ovn_nb_commands.HAChassisGroupDelCommand("},{"line_number":213,"context_line":"            self.api, hcg_name, if_exists\u003dTrue).run_idl(txn)"}],"source_content_type":"text/x-python","patch_set":1,"id":"221701d2_f44b5f6c","line":212,"updated":"2026-06-15 19:10:30.000000000","message":"You\u0027ll need to clear the HACG from the LR.ha_chassis_group anyway, so might as well read that from the LR, clear the column, then use it to delete the row.","commit_id":"c887765720a1e6480cf750f556185bd30595497b"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"c38a237ffee7fa68645f019d8af65011e18f58e8","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            self.api, ls_name, if_exists\u003dTrue).run_idl(txn)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        hcg_name \u003d _evpn_hcg_name(self.router_id)"},{"line_number":212,"context_line":"        ovn_nb_commands.HAChassisGroupDelCommand("},{"line_number":213,"context_line":"            self.api, hcg_name, if_exists\u003dTrue).run_idl(txn)"}],"source_content_type":"text/x-python","patch_set":1,"id":"5750d807_58416bda","line":212,"in_reply_to":"12709f4f_28659ab0","updated":"2026-06-16 14:48:56.000000000","message":"Then LS. Something has a reference to the HACG and is preventing it from being deleted.","commit_id":"c887765720a1e6480cf750f556185bd30595497b"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"cc032bfe3d5f34909a9613deffb8caf5a20a773e","unresolved":true,"context_lines":[{"line_number":209,"context_line":"            self.api, ls_name, if_exists\u003dTrue).run_idl(txn)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        hcg_name \u003d _evpn_hcg_name(self.router_id)"},{"line_number":212,"context_line":"        ovn_nb_commands.HAChassisGroupDelCommand("},{"line_number":213,"context_line":"            self.api, hcg_name, if_exists\u003dTrue).run_idl(txn)"}],"source_content_type":"text/x-python","patch_set":1,"id":"c9d85fe0_c22e360f","line":212,"in_reply_to":"221701d2_f44b5f6c","updated":"2026-06-15 19:26:05.000000000","message":"I think the LR is gone at this point.","commit_id":"c887765720a1e6480cf750f556185bd30595497b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"c3b4ce3400aaa407eedaac7c742d7bcf56506803","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            self.api, ls_name, if_exists\u003dTrue).run_idl(txn)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        hcg_name \u003d _evpn_hcg_name(self.router_id)"},{"line_number":212,"context_line":"        ovn_nb_commands.HAChassisGroupDelCommand("},{"line_number":213,"context_line":"            self.api, hcg_name, if_exists\u003dTrue).run_idl(txn)"}],"source_content_type":"text/x-python","patch_set":1,"id":"cf425388_dffe3092","line":212,"in_reply_to":"5750d807_58416bda","updated":"2026-06-16 14:56:59.000000000","message":"I\u0027ve proposed something different in PS4: using the same LR+HCG deletion method we have in Neutron, find the EVPN HCG, if present, unset it from the LRPs, and delete it.","commit_id":"c887765720a1e6480cf750f556185bd30595497b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"88f364638f820ecf02ff1ce24cb0188c571e798c","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            self.api, ls_name, if_exists\u003dTrue).run_idl(txn)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        hcg_name \u003d _evpn_hcg_name(self.router_id)"},{"line_number":212,"context_line":"        ovn_nb_commands.HAChassisGroupDelCommand("},{"line_number":213,"context_line":"            self.api, hcg_name, if_exists\u003dTrue).run_idl(txn)"}],"source_content_type":"text/x-python","patch_set":1,"id":"12709f4f_28659ab0","line":212,"in_reply_to":"c9d85fe0_c22e360f","updated":"2026-06-15 19:38:43.000000000","message":"We have committed the txn, the LR and all the LRPs are deleted now.\n\nI can add more FTs if needed.","commit_id":"c887765720a1e6480cf750f556185bd30595497b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"50b117a9cf13046409580027ce4f173203c9b2ca","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            self.api, ls_name, if_exists\u003dTrue).run_idl(txn)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        hcg_name \u003d _evpn_hcg_name(self.router_id)"},{"line_number":212,"context_line":"        ovn_nb_commands.HAChassisGroupDelCommand("},{"line_number":213,"context_line":"            self.api, hcg_name, if_exists\u003dTrue).run_idl(txn)"}],"source_content_type":"text/x-python","patch_set":1,"id":"b1ece33f_ea8570c1","line":212,"in_reply_to":"ce455fc0_e03d46c3","updated":"2026-06-17 11:11:16.000000000","message":"Yes, I tried to fix that in the latest PS. But Jakub mad a good point not polluting the commands with service specific code.","commit_id":"c887765720a1e6480cf750f556185bd30595497b"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"62990341852f47354e5fb939550c3fd370d75dc2","unresolved":true,"context_lines":[{"line_number":209,"context_line":"            self.api, ls_name, if_exists\u003dTrue).run_idl(txn)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        hcg_name \u003d _evpn_hcg_name(self.router_id)"},{"line_number":212,"context_line":"        ovn_nb_commands.HAChassisGroupDelCommand("},{"line_number":213,"context_line":"            self.api, hcg_name, if_exists\u003dTrue).run_idl(txn)"}],"source_content_type":"text/x-python","patch_set":1,"id":"ce455fc0_e03d46c3","line":212,"in_reply_to":"cf425388_dffe3092","updated":"2026-06-16 17:30:50.000000000","message":"I was just saying that the test needed to be fixed in PS2. The issue was that the LRP.ha_chassis_group was still set, so hcg.delete() would fail. Example db output:``` {\"HA_Chassis_Group\":{\"ec756e03-627d-46ab-b3cc-9ccc3c2fb7a9\":{\"name\":\"evpn-hcg-20e43e8a-a18f-40fb-9709-23fdbc5e973a\",\"external_ids\":[\"map\",[[\"neutron:router_id\",\"20e43e8a-a18f-40fb-9709-23fdbc5e973a\"]]]}},\"_date\":1781604883147,\"Logical_Router\":{\"87073f37-9292-48b1-b9e9-9b96c6a4b7bb\":{\"ports\":[\"uuid\",\"77ca3d2b-eafe-49da-bc50-84268b2f0983\"],\"options\":[\"map\",[[\"dynamic-routing\",\"true\"],[\"dynamic-routing-vrf-id\",\"6000\"],[\"dynamic-routing-vrf-name\",\"vr20e43e8a-a18f\"]]]}},\"Logical_Switch\":{\"d851ac52-fa88-44dd-a246-6dd461113c1d\":{\"ports\":[\"uuid\",\"9a693bdb-74ba-4948-93e1-b01c6b779088\"],\"name\":\"evpn-ls-6000\",\"other_config\":[\"map\",[[\"dynamic-routing-bridge-ifname\",\"vl-0-200\"],[\"dynamic-routing-vni\",\"6000\"],[\"dynamic-routing-vxlan-ifname\",\"vxlanevpn-0\"]]]}},\"_is_diff\":true,\"Logical_Switch_Port\":{\"9a693bdb-74ba-4948-93e1-b01c6b779088\":{\"name\":\"evpn-lsp-evpn-ls-6000-to-20e43e8a-a18\",\"addresses\":\"router\",\"options\":[\"map\",[[\"router-port\",\"evpn-lrp-20e43e8a-a18-to-evpn-ls-6000\"]]],\"type\":\"router\"}},\"Logical_Router_Port\":{\"77ca3d2b-eafe-49da-bc50-84268b2f0983\":{\"name\":\"evpn-lrp-20e43e8a-a18-to-evpn-ls-6000\",\"mac\":\"fa:16:3e:62:ef:2d\",\"ha_chassis_group\":[\"uuid\",\"ec756e03-627d-46ab-b3cc-9ccc3c2fb7a9\"],\"options\":[\"map\",[[\"dynamic-routing-maintain-vrf\",\"true\"]]],\"external_ids\":[\"map\",[[\"vlan\",\"200\"],[\"vni\",\"6000\"]]]}}}```","commit_id":"c887765720a1e6480cf750f556185bd30595497b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"541d7fc5ed978838edd9ba136518f74d45bd5b0c","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            self.api, ls_name, if_exists\u003dTrue).run_idl(txn)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        hcg_name \u003d _evpn_hcg_name(self.router_id)"},{"line_number":212,"context_line":"        ovn_nb_commands.HAChassisGroupDelCommand("},{"line_number":213,"context_line":"            self.api, hcg_name, if_exists\u003dTrue).run_idl(txn)"}],"source_content_type":"text/x-python","patch_set":2,"id":"46acfc90_62d3d4e7","line":213,"range":{"start_line":212,"start_character":8,"end_line":213,"end_character":60},"updated":"2026-06-16 12:57:04.000000000","message":"FTs are failing because everything in `run_idl` is executed inside the same transaction. When this deletion is executed, there are still references of the HCG on the LRPs.","commit_id":"16ce4840712f4d2981f4569549df90a5f995f13e"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"92dbff9863847515bb1bc54cd3f22575a52ec80d","unresolved":false,"context_lines":[{"line_number":209,"context_line":"            self.api, ls_name, if_exists\u003dTrue).run_idl(txn)"},{"line_number":210,"context_line":""},{"line_number":211,"context_line":"        hcg_name \u003d _evpn_hcg_name(self.router_id)"},{"line_number":212,"context_line":"        ovn_nb_commands.HAChassisGroupDelCommand("},{"line_number":213,"context_line":"            self.api, hcg_name, if_exists\u003dTrue).run_idl(txn)"}],"source_content_type":"text/x-python","patch_set":2,"id":"0a1e12b2_0edd7f46","line":213,"range":{"start_line":212,"start_character":8,"end_line":213,"end_character":60},"in_reply_to":"46acfc90_62d3d4e7","updated":"2026-06-16 14:34:56.000000000","message":"Right, in production the router is deleted by Neutron OVN mech driver but it\u0027s a different transaction than the one EVPN resources are deleted in.","commit_id":"16ce4840712f4d2981f4569549df90a5f995f13e"}],"neutron/services/evpn/plugin.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e143fa360f35bc8092d35588cbb126af0f601550","unresolved":true,"context_lines":[{"line_number":160,"context_line":"        if not vni:"},{"line_number":161,"context_line":"            return"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        router_id \u003d payload.resource_id"},{"line_number":164,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":165,"context_line":"            txn.add(evpn_ovn.DeleteEVPNRouterCommand("},{"line_number":166,"context_line":"                self._nb_idl, router_id, vni))"}],"source_content_type":"text/x-python","patch_set":1,"id":"ad872d60_de520ce7","line":163,"range":{"start_line":163,"start_character":0,"end_line":163,"end_character":39},"updated":"2026-06-15 19:10:30.000000000","message":"nit: the C developer in me frowns at unnecessary variable assignments (and this one doesn\u0027t contribute to fixing a line-length issue or something like that, it\u0027s basically a runtime code comment)","commit_id":"c887765720a1e6480cf750f556185bd30595497b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6ee99c5d2a6b7609ed16d3697432e15a6923b5cd","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        if not vni:"},{"line_number":161,"context_line":"            return"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        router_id \u003d payload.resource_id"},{"line_number":164,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":165,"context_line":"            txn.add(evpn_ovn.DeleteEVPNRouterCommand("},{"line_number":166,"context_line":"                self._nb_idl, router_id, vni))"}],"source_content_type":"text/x-python","patch_set":1,"id":"09385f24_4cd67b86","line":163,"range":{"start_line":163,"start_character":0,"end_line":163,"end_character":39},"in_reply_to":"5bb2947a_11a068eb","updated":"2026-06-16 09:29:46.000000000","message":"Done","commit_id":"c887765720a1e6480cf750f556185bd30595497b"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"88f364638f820ecf02ff1ce24cb0188c571e798c","unresolved":false,"context_lines":[{"line_number":160,"context_line":"        if not vni:"},{"line_number":161,"context_line":"            return"},{"line_number":162,"context_line":""},{"line_number":163,"context_line":"        router_id \u003d payload.resource_id"},{"line_number":164,"context_line":"        with self._nb_idl.transaction(check_error\u003dTrue) as txn:"},{"line_number":165,"context_line":"            txn.add(evpn_ovn.DeleteEVPNRouterCommand("},{"line_number":166,"context_line":"                self._nb_idl, router_id, vni))"}],"source_content_type":"text/x-python","patch_set":1,"id":"5bb2947a_11a068eb","line":163,"range":{"start_line":163,"start_character":0,"end_line":163,"end_character":39},"in_reply_to":"ad872d60_de520ce7","updated":"2026-06-15 19:38:43.000000000","message":"Yes, you are right. If I need to respin this patch, I\u0027ll use `payload.resource_id` directly.","commit_id":"c887765720a1e6480cf750f556185bd30595497b"}],"neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/ovsdb/test_impl_idl.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1d09fbd6fb754562b75c71f522e4533fb3eadd8d","unresolved":true,"context_lines":[{"line_number":598,"context_line":"        router_name \u003d ovn_utils.ovn_name(uuidutils.generate_uuid())"},{"line_number":599,"context_line":"        self._test_delete_lrouter(router_name, router_name)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"    def test_delete_lrouter_evpn(self):"},{"line_number":602,"context_line":"        router_id \u003d uuidutils.generate_uuid()"},{"line_number":603,"context_line":"        router_name \u003d ovn_utils.ovn_name(router_id)"},{"line_number":604,"context_line":"        hcg_name \u003d evpn_commands._evpn_hcg_name(router_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"0a066317_537391a2","line":601,"updated":"2026-06-23 16:43:48.000000000","message":"I don\u0027t think this test belongs here. We shouldn\u0027t import evpn into the mech driver tests\n\nI\u0027d be fine with this change not changing this module at all and let the change tested in the evpn tests.","commit_id":"9840f3866e469688cc12ae1eba03482c8ec7010a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"1093cbc71ae8081dd1e11cbe05356a3c9b8636f0","unresolved":false,"context_lines":[{"line_number":598,"context_line":"        router_name \u003d ovn_utils.ovn_name(uuidutils.generate_uuid())"},{"line_number":599,"context_line":"        self._test_delete_lrouter(router_name, router_name)"},{"line_number":600,"context_line":""},{"line_number":601,"context_line":"    def test_delete_lrouter_evpn(self):"},{"line_number":602,"context_line":"        router_id \u003d uuidutils.generate_uuid()"},{"line_number":603,"context_line":"        router_name \u003d ovn_utils.ovn_name(router_id)"},{"line_number":604,"context_line":"        hcg_name \u003d evpn_commands._evpn_hcg_name(router_id)"}],"source_content_type":"text/x-python","patch_set":6,"id":"74cb0d52_0921d53d","line":601,"in_reply_to":"0a066317_537391a2","updated":"2026-06-23 17:23:36.000000000","message":"No, not anymore. This is a leftover of the previous implementation.","commit_id":"9840f3866e469688cc12ae1eba03482c8ec7010a"}],"neutron/tests/functional/services/evpn/test_commands.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"64d96b7947241fd0cf9575afe618283fb8a3ebab","unresolved":true,"context_lines":[{"line_number":247,"context_line":"        lr \u003d self.nb_api.lookup(\u0027Logical_Router\u0027, router_name)"},{"line_number":248,"context_line":"        with self.nb_api.transaction(check_error\u003dTrue) as txn:"},{"line_number":249,"context_line":"            for lrp in lr.ports:"},{"line_number":250,"context_line":"                txn.add(commands.UpdateLRouterPortCommand("},{"line_number":251,"context_line":"                    self.nb_api, lrp.name, if_exists\u003dTrue,"},{"line_number":252,"context_line":"                    ha_chassis_group\u003d[]))"},{"line_number":253,"context_line":""}],"source_content_type":"text/x-python","patch_set":8,"id":"a3e2ea21_32a844fc","line":250,"updated":"2026-06-23 17:30:22.000000000","message":"nit: UpdateLRouterPortCommand is quite heavy, `db_clear` would fit better here","commit_id":"0b3798e8216430872e30b237fa8f6c0c869da772"}]}
