)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"071c3f8b2543cbb7ac1d19b205ea7b60244ab266","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"22e70fae_58e7a974","updated":"2026-01-28 09:59:14.000000000","message":"recheck neutron-ovs-tempest-dvr-ha-multinode-full","commit_id":"f1afc7fcfb02e85c31c77530109f778098833e80"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6c4f9b10f2d9abc3d3539d9dfdf4c2cac89c7f92","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"dc04afc7_9b0c7f27","updated":"2026-01-29 12:23:30.000000000","message":"Minor comments","commit_id":"61b7c54b897dc15bbfc08c82bda6556a45a4a61a"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"48b8d4e484c1480b94cae04e2c237b0ae64b1a51","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"33d2ba1c_1ac1873d","updated":"2026-01-30 14:40:51.000000000","message":"lgtm","commit_id":"a73f10ac03f7ae848a0aef7536d95f9b64d2c04b"}],"neutron/agent/ovn/extensions/bgp/__init__.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0c2266e336beac20f6cbe28097cc93a0f85a9547","unresolved":true,"context_lines":[{"line_number":90,"context_line":"                    \"with ofport %d, removing the onetime event from the \""},{"line_number":91,"context_line":"                    \"queue.\", bgp_bridge.name, patch_ports_ofports[0])"},{"line_number":92,"context_line":"                event_handler.unwatch_event(event)"},{"line_number":93,"context_line":"                bgp_bridge.patch_port_ofport \u003d patch_ports_ofports[0]"},{"line_number":94,"context_line":"                bgp_bridge.configure_flows()"},{"line_number":95,"context_line":"        else:"},{"line_number":96,"context_line":"            LOG.debug(\"The BGP bridge %s already has a patch port with ofport\""}],"source_content_type":"text/x-python","patch_set":12,"id":"9c4611db_6336f818","line":93,"updated":"2026-01-28 16:25:51.000000000","message":"This should go away too","commit_id":"f1afc7fcfb02e85c31c77530109f778098833e80"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ec2a03af84505923d3e90c0af80583fd48a7354d","unresolved":false,"context_lines":[{"line_number":90,"context_line":"                    \"with ofport %d, removing the onetime event from the \""},{"line_number":91,"context_line":"                    \"queue.\", bgp_bridge.name, patch_ports_ofports[0])"},{"line_number":92,"context_line":"                event_handler.unwatch_event(event)"},{"line_number":93,"context_line":"                bgp_bridge.patch_port_ofport \u003d patch_ports_ofports[0]"},{"line_number":94,"context_line":"                bgp_bridge.configure_flows()"},{"line_number":95,"context_line":"        else:"},{"line_number":96,"context_line":"            LOG.debug(\"The BGP bridge %s already has a patch port with ofport\""}],"source_content_type":"text/x-python","patch_set":12,"id":"34285e5f_a33f514b","line":93,"in_reply_to":"9c4611db_6336f818","updated":"2026-01-28 22:04:51.000000000","message":"Done","commit_id":"f1afc7fcfb02e85c31c77530109f778098833e80"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"0c2266e336beac20f6cbe28097cc93a0f85a9547","unresolved":true,"context_lines":[{"line_number":95,"context_line":"        else:"},{"line_number":96,"context_line":"            LOG.debug(\"The BGP bridge %s already has a patch port with ofport\""},{"line_number":97,"context_line":"                      \" %d\", bgp_bridge.name, patch_ports_ofports[0])"},{"line_number":98,"context_line":"            bgp_bridge.patch_port_ofport \u003d patch_ports_ofports[0]"},{"line_number":99,"context_line":"            bgp_bridge.configure_flows()"}],"source_content_type":"text/x-python","patch_set":12,"id":"4ad53798_d05bc8af","line":98,"updated":"2026-01-28 16:25:51.000000000","message":"This should go away too","commit_id":"f1afc7fcfb02e85c31c77530109f778098833e80"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"ec2a03af84505923d3e90c0af80583fd48a7354d","unresolved":false,"context_lines":[{"line_number":95,"context_line":"        else:"},{"line_number":96,"context_line":"            LOG.debug(\"The BGP bridge %s already has a patch port with ofport\""},{"line_number":97,"context_line":"                      \" %d\", bgp_bridge.name, patch_ports_ofports[0])"},{"line_number":98,"context_line":"            bgp_bridge.patch_port_ofport \u003d patch_ports_ofports[0]"},{"line_number":99,"context_line":"            bgp_bridge.configure_flows()"}],"source_content_type":"text/x-python","patch_set":12,"id":"79c321cf_a8e4f38e","line":98,"in_reply_to":"4ad53798_d05bc8af","updated":"2026-01-28 22:04:51.000000000","message":"Done","commit_id":"f1afc7fcfb02e85c31c77530109f778098833e80"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6c4f9b10f2d9abc3d3539d9dfdf4c2cac89c7f92","unresolved":true,"context_lines":[{"line_number":82,"context_line":"            event_handler.watch_event(event)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"            # Check the port again in case it was created in the meantime"},{"line_number":85,"context_line":"            ports_ofports \u003d ("},{"line_number":86,"context_line":"                bgp_bridge.ovs_bridge.get_iface_ofports_by_type(port_type))"},{"line_number":87,"context_line":"            if ports_ofports:"},{"line_number":88,"context_line":"                LOG.debug("},{"line_number":89,"context_line":"                    \"The %s port was created in the meantime on bridge %s \""},{"line_number":90,"context_line":"                    \"with ofport %d, removing the onetime event from the \""}],"source_content_type":"text/x-python","patch_set":13,"id":"79e633f9_26e87c99","line":87,"range":{"start_line":85,"start_character":12,"end_line":87,"end_character":29},"updated":"2026-01-29 12:23:30.000000000","message":"Why trying again? You have already added the event. This (re-try + the event) can execute the `configure_flows` twice.","commit_id":"61b7c54b897dc15bbfc08c82bda6556a45a4a61a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9b301c1f51c707a111d040d79bfc3e155d4b9e62","unresolved":true,"context_lines":[{"line_number":82,"context_line":"            event_handler.watch_event(event)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"            # Check the port again in case it was created in the meantime"},{"line_number":85,"context_line":"            ports_ofports \u003d ("},{"line_number":86,"context_line":"                bgp_bridge.ovs_bridge.get_iface_ofports_by_type(port_type))"},{"line_number":87,"context_line":"            if ports_ofports:"},{"line_number":88,"context_line":"                LOG.debug("},{"line_number":89,"context_line":"                    \"The %s port was created in the meantime on bridge %s \""},{"line_number":90,"context_line":"                    \"with ofport %d, removing the onetime event from the \""}],"source_content_type":"text/x-python","patch_set":13,"id":"d4e2f99d_f3327ba7","line":87,"range":{"start_line":85,"start_character":12,"end_line":87,"end_character":29},"in_reply_to":"79e633f9_26e87c99","updated":"2026-01-29 13:42:31.000000000","message":"It\u0027s a good point, I\u0027ll need to dig deeper to this. thanks","commit_id":"61b7c54b897dc15bbfc08c82bda6556a45a4a61a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"4ee707e62877acc340ee15fba1a891b0e8ea03d9","unresolved":false,"context_lines":[{"line_number":82,"context_line":"            event_handler.watch_event(event)"},{"line_number":83,"context_line":""},{"line_number":84,"context_line":"            # Check the port again in case it was created in the meantime"},{"line_number":85,"context_line":"            ports_ofports \u003d ("},{"line_number":86,"context_line":"                bgp_bridge.ovs_bridge.get_iface_ofports_by_type(port_type))"},{"line_number":87,"context_line":"            if ports_ofports:"},{"line_number":88,"context_line":"                LOG.debug("},{"line_number":89,"context_line":"                    \"The %s port was created in the meantime on bridge %s \""},{"line_number":90,"context_line":"                    \"with ofport %d, removing the onetime event from the \""}],"source_content_type":"text/x-python","patch_set":13,"id":"f1900042_e0a1d6e9","line":87,"range":{"start_line":85,"start_character":12,"end_line":87,"end_character":29},"in_reply_to":"d4e2f99d_f3327ba7","updated":"2026-01-29 16:49:42.000000000","message":"Left a FIXME","commit_id":"61b7c54b897dc15bbfc08c82bda6556a45a4a61a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"fcc8728b56ec687a9c4e933c857a4c65de6bc6be","unresolved":false,"context_lines":[{"line_number":85,"context_line":"            ports_ofports \u003d ("},{"line_number":86,"context_line":"                bgp_bridge.ovs_bridge.get_iface_ofports_by_type(port_type))"},{"line_number":87,"context_line":""},{"line_number":88,"context_line":"            # FIXME(jlibosva): Check if there could be a race condition here"},{"line_number":89,"context_line":"            #                  where we receive the event, it configures the"},{"line_number":90,"context_line":"            #                  flows but then we still check here and configure"},{"line_number":91,"context_line":"            #                  the flows again."}],"source_content_type":"text/x-python","patch_set":14,"id":"bf0b9e35_38150f26","line":88,"range":{"start_line":88,"start_character":14,"end_line":88,"end_character":19},"updated":"2026-01-30 14:16:40.000000000","message":"+1","commit_id":"a73f10ac03f7ae848a0aef7536d95f9b64d2c04b"}],"neutron/agent/ovn/extensions/bgp/bridge.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"2b910203ef5a26576d8d115cc6ca3ab6c17bfb5e","unresolved":true,"context_lines":[{"line_number":55,"context_line":"    __repr__ \u003d __str__"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def bridge_ifaces(self):"},{"line_number":58,"context_line":"        ifaces \u003d self.ovs_bridge.get_iface_name_list()"},{"line_number":59,"context_line":"        if not ifaces:"},{"line_number":60,"context_line":"            return []"},{"line_number":61,"context_line":"        return self.ovs_idl.db_list("}],"source_content_type":"text/x-python","patch_set":10,"id":"75a427e7_64e1e7eb","line":58,"updated":"2026-01-23 21:25:14.000000000","message":"We do this kind of thing all over the place, so one more isn\u0027t likely to hurt. But ultimately, doing related lookups in multiple transactions is inherently a little unsafe. E.g., we can look up these iface names, the thread that updates from the connection can get a change and updates the internal copy of the db, and then we pass the data we pulled from the other txn into another txn and it fails.\n\nThe \"safe\" way to do this would be just make a Command that retrieves what you want based on your input, which would basically be ListIfacesCommand in ovs_lib, but returning the interface instead of just its name.","commit_id":"6a5d4366e41cccb1a627edd7692b109df6307c99"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9ee1c2d6d6c85b58672b5084bfcbd7e4045b20aa","unresolved":false,"context_lines":[{"line_number":55,"context_line":"    __repr__ \u003d __str__"},{"line_number":56,"context_line":""},{"line_number":57,"context_line":"    def bridge_ifaces(self):"},{"line_number":58,"context_line":"        ifaces \u003d self.ovs_bridge.get_iface_name_list()"},{"line_number":59,"context_line":"        if not ifaces:"},{"line_number":60,"context_line":"            return []"},{"line_number":61,"context_line":"        return self.ovs_idl.db_list("}],"source_content_type":"text/x-python","patch_set":10,"id":"7d687efa_7050272f","line":58,"in_reply_to":"75a427e7_64e1e7eb","updated":"2026-01-26 23:27:12.000000000","message":"Done","commit_id":"6a5d4366e41cccb1a627edd7692b109df6307c99"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"2b910203ef5a26576d8d115cc6ca3ab6c17bfb5e","unresolved":true,"context_lines":[{"line_number":70,"context_line":"                check_error\u003dTrue)"},{"line_number":71,"context_line":"        for pb in port_bindings:"},{"line_number":72,"context_line":"            if (pb.external_ids.get("},{"line_number":73,"context_line":"                    constants.LRP_NETWORK_NAME_EXT_ID_KEY) \u003d\u003d self.name):"},{"line_number":74,"context_line":"                return pb.mac[0].split(\u0027 \u0027, 1)[0]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        LOG.debug(\"LRP MAC does not exist yet for %s\", self.name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"02e13ca8_5b3e72bc","line":73,"updated":"2026-01-23 21:25:14.000000000","message":"This should be redundant since it is already part of the db_find_rows call.","commit_id":"6a5d4366e41cccb1a627edd7692b109df6307c99"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9ee1c2d6d6c85b58672b5084bfcbd7e4045b20aa","unresolved":false,"context_lines":[{"line_number":70,"context_line":"                check_error\u003dTrue)"},{"line_number":71,"context_line":"        for pb in port_bindings:"},{"line_number":72,"context_line":"            if (pb.external_ids.get("},{"line_number":73,"context_line":"                    constants.LRP_NETWORK_NAME_EXT_ID_KEY) \u003d\u003d self.name):"},{"line_number":74,"context_line":"                return pb.mac[0].split(\u0027 \u0027, 1)[0]"},{"line_number":75,"context_line":""},{"line_number":76,"context_line":"        LOG.debug(\"LRP MAC does not exist yet for %s\", self.name)"}],"source_content_type":"text/x-python","patch_set":10,"id":"ff26fe1c_e37bdce0","line":73,"in_reply_to":"02e13ca8_5b3e72bc","updated":"2026-01-26 23:27:12.000000000","message":"Done","commit_id":"6a5d4366e41cccb1a627edd7692b109df6307c99"},{"author":{"_account_id":11975,"name":"Slawek Kaplonski","email":"skaplons@redhat.com","username":"slaweq"},"change_message_id":"30c3fb4a507466cbe1bc40779ce318acb58c5f93","unresolved":true,"context_lines":[{"line_number":76,"context_line":"        LOG.debug(\"LRP MAC does not exist yet for %s\", self.name)"},{"line_number":77,"context_line":"        return None"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def _get_bridge_ofports_per_type(self, type):"},{"line_number":80,"context_line":"        return ["},{"line_number":81,"context_line":"            iface[\u0027ofport\u0027] for iface in self.bridge_ifaces()"},{"line_number":82,"context_line":"            if iface[\u0027type\u0027] \u003d\u003d type]"}],"source_content_type":"text/x-python","patch_set":10,"id":"d99e16ae_ece3ed60","line":79,"range":{"start_line":79,"start_character":43,"end_line":79,"end_character":47},"updated":"2026-01-23 08:43:31.000000000","message":"nit: \"type\" is built-in class in Python, maybe you could change that name to avoid confusion","commit_id":"6a5d4366e41cccb1a627edd7692b109df6307c99"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9ee1c2d6d6c85b58672b5084bfcbd7e4045b20aa","unresolved":false,"context_lines":[{"line_number":76,"context_line":"        LOG.debug(\"LRP MAC does not exist yet for %s\", self.name)"},{"line_number":77,"context_line":"        return None"},{"line_number":78,"context_line":""},{"line_number":79,"context_line":"    def _get_bridge_ofports_per_type(self, type):"},{"line_number":80,"context_line":"        return ["},{"line_number":81,"context_line":"            iface[\u0027ofport\u0027] for iface in self.bridge_ifaces()"},{"line_number":82,"context_line":"            if iface[\u0027type\u0027] \u003d\u003d type]"}],"source_content_type":"text/x-python","patch_set":10,"id":"d5f24c60_13b9fbcf","line":79,"range":{"start_line":79,"start_character":43,"end_line":79,"end_character":47},"in_reply_to":"d99e16ae_ece3ed60","updated":"2026-01-26 23:27:12.000000000","message":"Done","commit_id":"6a5d4366e41cccb1a627edd7692b109df6307c99"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"3e1af6d6999696f4ff058b11e503a7789b5bdfc3","unresolved":true,"context_lines":[{"line_number":89,"context_line":"        LOG.debug(\"LRP MAC does not exist yet for %s\", self.name)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _get_bridge_ofports_per_type(self, type_):"},{"line_number":92,"context_line":"        return [iface.ofport for iface in self.bridge_ifaces()"},{"line_number":93,"context_line":"                if iface.type \u003d\u003d type_]"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def configure_flows(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"fdc75afe_124707b7","line":92,"updated":"2026-01-27 18:54:38.000000000","message":"I wonder if the interface would be a little less weird with something like\n\n```\nofports \u003d [iface.ofport for iface in self.bridge_ifaces() if iface.type \u003d\u003d type]\nreturn itertools.chain(*ofports)\n```\n\nto get rid of the list-wrapped ofports (and remove any empty []). Could also add an optional type filter to the GetBridgeInterfacesCommand I guess.","commit_id":"e2bd8710b7af2310d588d73d61caf074010cde97"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"10e08f7b687b0ae1f2f88937d131bb70ed96fc9b","unresolved":false,"context_lines":[{"line_number":89,"context_line":"        LOG.debug(\"LRP MAC does not exist yet for %s\", self.name)"},{"line_number":90,"context_line":""},{"line_number":91,"context_line":"    def _get_bridge_ofports_per_type(self, type_):"},{"line_number":92,"context_line":"        return [iface.ofport for iface in self.bridge_ifaces()"},{"line_number":93,"context_line":"                if iface.type \u003d\u003d type_]"},{"line_number":94,"context_line":""},{"line_number":95,"context_line":"    def configure_flows(self):"}],"source_content_type":"text/x-python","patch_set":11,"id":"00daf466_0884254f","line":92,"in_reply_to":"fdc75afe_124707b7","updated":"2026-01-27 20:59:18.000000000","message":"I\u0027ve redone the Command to be very specific and return exactly just the list of ofports per type, which is what we need here.","commit_id":"e2bd8710b7af2310d588d73d61caf074010cde97"}],"neutron/agent/ovn/extensions/bgp/events.py":[{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"2b910203ef5a26576d8d115cc6ca3ab6c17bfb5e","unresolved":true,"context_lines":[{"line_number":238,"context_line":"    def run(self, event, row, old):"},{"line_number":239,"context_line":"        port_bridge_name \u003d self._get_port_bridge(row.name)"},{"line_number":240,"context_line":"        bgp_bridge \u003d self.bgp_agent.bgp_bridges[port_bridge_name]"},{"line_number":241,"context_line":"        bgp_bridge.patch_port_ofport \u003d row.ofport[0]"},{"line_number":242,"context_line":"        if bgp_bridge.lrp_mac:"},{"line_number":243,"context_line":"            bgp_bridge.configure_flows()"}],"source_content_type":"text/x-python","patch_set":10,"id":"aa28c6de_65253821","line":241,"range":{"start_line":241,"start_character":8,"end_line":241,"end_character":52},"updated":"2026-01-23 21:25:14.000000000","message":"Seems like instead of updating this attribute, it could always just be a property that accesses the port in memory w/o having to keep it synced.And in this case, since we don\u0027t handle UPDATE events, it could also *technically* change and then we\u0027d be out of sync (though that seems unlikely).","commit_id":"6a5d4366e41cccb1a627edd7692b109df6307c99"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9ee1c2d6d6c85b58672b5084bfcbd7e4045b20aa","unresolved":false,"context_lines":[{"line_number":238,"context_line":"    def run(self, event, row, old):"},{"line_number":239,"context_line":"        port_bridge_name \u003d self._get_port_bridge(row.name)"},{"line_number":240,"context_line":"        bgp_bridge \u003d self.bgp_agent.bgp_bridges[port_bridge_name]"},{"line_number":241,"context_line":"        bgp_bridge.patch_port_ofport \u003d row.ofport[0]"},{"line_number":242,"context_line":"        if bgp_bridge.lrp_mac:"},{"line_number":243,"context_line":"            bgp_bridge.configure_flows()"}],"source_content_type":"text/x-python","patch_set":10,"id":"71b5cc91_770ca97a","line":241,"range":{"start_line":241,"start_character":8,"end_line":241,"end_character":52},"in_reply_to":"aa28c6de_65253821","updated":"2026-01-26 23:27:12.000000000","message":"Done","commit_id":"6a5d4366e41cccb1a627edd7692b109df6307c99"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"6c4f9b10f2d9abc3d3539d9dfdf4c2cac89c7f92","unresolved":true,"context_lines":[{"line_number":228,"context_line":"        return some_bridge.ovs_bridge.get_bridge_for_iface(port_name)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def match_fn(self, event, row, old):"},{"line_number":231,"context_line":"        if not super().match_fn(event, row, old):"},{"line_number":232,"context_line":"            return False"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        if row.type !\u003d self.port_type:"},{"line_number":235,"context_line":"            return False"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"98417c84_6b393b32","line":233,"range":{"start_line":231,"start_character":8,"end_line":233,"end_character":1},"updated":"2026-01-29 12:23:30.000000000","message":"Why do you call this? You are not adding any explicit condition in the `__init__` of this event","commit_id":"61b7c54b897dc15bbfc08c82bda6556a45a4a61a"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"9b301c1f51c707a111d040d79bfc3e155d4b9e62","unresolved":true,"context_lines":[{"line_number":228,"context_line":"        return some_bridge.ovs_bridge.get_bridge_for_iface(port_name)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def match_fn(self, event, row, old):"},{"line_number":231,"context_line":"        if not super().match_fn(event, row, old):"},{"line_number":232,"context_line":"            return False"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        if row.type !\u003d self.port_type:"},{"line_number":235,"context_line":"            return False"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"c8415c82_381306b4","line":233,"range":{"start_line":231,"start_character":8,"end_line":233,"end_character":1},"in_reply_to":"98417c84_6b393b32","updated":"2026-01-29 13:42:31.000000000","message":"Just a good practice if the superclass, whatever that is, decides this event is not for us. I do it everywhere for all events.","commit_id":"61b7c54b897dc15bbfc08c82bda6556a45a4a61a"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f6c2b9f1a9d6857f61003a1ed0e5c90745ba391d","unresolved":false,"context_lines":[{"line_number":228,"context_line":"        return some_bridge.ovs_bridge.get_bridge_for_iface(port_name)"},{"line_number":229,"context_line":""},{"line_number":230,"context_line":"    def match_fn(self, event, row, old):"},{"line_number":231,"context_line":"        if not super().match_fn(event, row, old):"},{"line_number":232,"context_line":"            return False"},{"line_number":233,"context_line":""},{"line_number":234,"context_line":"        if row.type !\u003d self.port_type:"},{"line_number":235,"context_line":"            return False"},{"line_number":236,"context_line":""}],"source_content_type":"text/x-python","patch_set":13,"id":"17bf4eb5_d3e11c33","line":233,"range":{"start_line":231,"start_character":8,"end_line":233,"end_character":1},"in_reply_to":"c8415c82_381306b4","updated":"2026-01-29 16:13:56.000000000","message":"You are right, that should be done always.","commit_id":"61b7c54b897dc15bbfc08c82bda6556a45a4a61a"}]}
