)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c0e7fd969f500e5893389122f6c88903caf34e86","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"8463eb75_ac991312","updated":"2025-09-08 18:27:23.000000000","message":"Thanks Rodolfo!","commit_id":"6d5ba885b28dbfed59630b508e6651a9aa68fb20"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"3f94534a44d765ac65702d06a7ea2280573d87f9","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"ced3aa77_ac402315","updated":"2025-09-10 14:33:07.000000000","message":"We are past feature freeze so this should wait until RC1 is created","commit_id":"4ff16c83ee86e904b8659e86f01fdbb285063fe2"},{"author":{"_account_id":1131,"name":"Brian Haley","email":"haleyb.dev@gmail.com","username":"brian-haley"},"change_message_id":"223c4c65377768230c277bb72055260f9cc8f48f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"22e029d9_0a9a9797","in_reply_to":"1213cb8c_c4ca6581","updated":"2025-09-11 22:14:48.000000000","message":"Yes, gazpacho/2026.1. Once RC1 tag and stable/2025.2 branch created master can continue forward.","commit_id":"4ff16c83ee86e904b8659e86f01fdbb285063fe2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"de5b0fed03bf7c03d9a5f6109eff10b082357cc5","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"1213cb8c_c4ca6581","in_reply_to":"ced3aa77_ac402315","updated":"2025-09-11 13:12:04.000000000","message":"RC1 meaning a new RC branch is cut and then this will go to master, future Gazpacho, right?","commit_id":"4ff16c83ee86e904b8659e86f01fdbb285063fe2"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"468aa22fc7b94fd707ad462c4765db33de72c96f","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":15,"id":"0437d03c_c7fff1e8","updated":"2025-09-29 14:20:59.000000000","message":"recheck - this patch is not touching openvswitch mech driver code","commit_id":"5afbb740d6b456cfb2ef270eacfcaa9b64a0fae7"},{"author":{"_account_id":38298,"name":"Helen Chen","display_name":"Helen Chen","email":"ichen@redhat.com","username":"ingwherchen"},"change_message_id":"e15d1dfe77f99bb9208f4326269545239625c48a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"9e36c0a5_39077a15","updated":"2025-12-08 02:19:48.000000000","message":"I ran both the code and the unit/functional tests.","commit_id":"b23a3b1e3100203cc299dd0336ad919046f79000"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"e55bdbdb09fcccca59b55175f0846e16819defc6","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":19,"id":"b62c87e8_dc2ec1cd","updated":"2025-12-09 14:38:25.000000000","message":"Removing w+1, saw Rodolfo\u0027s previous +2s, and jumped the gun.","commit_id":"b23a3b1e3100203cc299dd0336ad919046f79000"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"fed8a25890d6ca73ed38e2d228491fc1993910ac","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":20,"id":"f32779df_90dceac9","updated":"2025-12-09 17:43:25.000000000","message":"lgtm","commit_id":"7fe015c8710d52bdec64b0b8fd16dcf9d366ba82"}],"neutron/services/bgp/config.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4b51e964fee88498b8189f0bb7b75213e7130d3a","unresolved":true,"context_lines":[{"line_number":1,"context_line":"# Copyright 2025 Red Hat, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"205347ec_25e3b691","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":2},"updated":"2025-09-06 06:56:50.000000000","message":"All configuration options should be under ``/neutron/conf``. This one in particular should be in ``/neutron/conf/services/bgp.py``","commit_id":"6d5ba885b28dbfed59630b508e6651a9aa68fb20"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c0e7fd969f500e5893389122f6c88903caf34e86","unresolved":false,"context_lines":[{"line_number":1,"context_line":"# Copyright 2025 Red Hat, Inc."},{"line_number":2,"context_line":"# All Rights Reserved."},{"line_number":3,"context_line":"#"},{"line_number":4,"context_line":"#    Licensed under the Apache License, Version 2.0 (the \"License\"); you may"}],"source_content_type":"text/x-python","patch_set":6,"id":"c78e982f_cdfb56da","line":1,"range":{"start_line":1,"start_character":0,"end_line":1,"end_character":2},"in_reply_to":"205347ec_25e3b691","updated":"2025-09-08 18:27:23.000000000","message":"Done","commit_id":"6d5ba885b28dbfed59630b508e6651a9aa68fb20"}],"neutron/services/bgp/ovn.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4b51e964fee88498b8189f0bb7b75213e7130d3a","unresolved":true,"context_lines":[{"line_number":33,"context_line":"OVN_SB_TABLES \u003d (\u0027Chassis\u0027,)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class OvnIdl(connection.OvsdbIdl):"},{"line_number":37,"context_line":"    LOCK_NAME \u003d \u0027bgp_topology_lock\u0027"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self, connection_string):"}],"source_content_type":"text/x-python","patch_set":6,"id":"c9e73a36_f441b74c","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":2},"updated":"2025-09-06 06:56:50.000000000","message":"Why not using ``Ml2OvnIdlBase`` and implement the ``from_server`` method with schema definition and tables registration, returning the class?","commit_id":"6d5ba885b28dbfed59630b508e6651a9aa68fb20"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c0e7fd969f500e5893389122f6c88903caf34e86","unresolved":true,"context_lines":[{"line_number":33,"context_line":"OVN_SB_TABLES \u003d (\u0027Chassis\u0027,)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class OvnIdl(connection.OvsdbIdl):"},{"line_number":37,"context_line":"    LOCK_NAME \u003d \u0027bgp_topology_lock\u0027"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self, connection_string):"}],"source_content_type":"text/x-python","patch_set":6,"id":"cfc9c598_71837336","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":2},"in_reply_to":"c9e73a36_f441b74c","updated":"2025-09-08 18:27:23.000000000","message":"To avoid the dependency on ml2 ovn mechanism driver. I\u0027m open to suggestions thought if there are benefits in doing so.","commit_id":"6d5ba885b28dbfed59630b508e6651a9aa68fb20"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3e19a61a67ad28244db48fc8ee64e80f7301e289","unresolved":false,"context_lines":[{"line_number":33,"context_line":"OVN_SB_TABLES \u003d (\u0027Chassis\u0027,)"},{"line_number":34,"context_line":""},{"line_number":35,"context_line":""},{"line_number":36,"context_line":"class OvnIdl(connection.OvsdbIdl):"},{"line_number":37,"context_line":"    LOCK_NAME \u003d \u0027bgp_topology_lock\u0027"},{"line_number":38,"context_line":""},{"line_number":39,"context_line":"    def __init__(self, connection_string):"}],"source_content_type":"text/x-python","patch_set":6,"id":"15f1b7a2_0a274dc3","line":36,"range":{"start_line":36,"start_character":0,"end_line":36,"end_character":2},"in_reply_to":"cfc9c598_71837336","updated":"2025-09-10 09:03:54.000000000","message":"Just to reuse the existing base classes. But if your goal if to avoid this dependency, that makes sense.","commit_id":"6d5ba885b28dbfed59630b508e6651a9aa68fb20"}],"neutron/services/bgp/reconciler.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4b51e964fee88498b8189f0bb7b75213e7130d3a","unresolved":true,"context_lines":[{"line_number":24,"context_line":"        self.sb_ovn \u003d sb_ovn"},{"line_number":25,"context_line":"        # We are doing full sync when the extension is started so we don\u0027t"},{"line_number":26,"context_line":"        # need to process all events when IDLs connect."},{"line_number":27,"context_line":"        self.register_events()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def register_events(self):"},{"line_number":30,"context_line":"        self.nb_ovn.register_events(self.nb_events)"},{"line_number":31,"context_line":"        self.sb_ovn.register_events(self.sb_events)"}],"source_content_type":"text/x-python","patch_set":6,"id":"45b51746_a283e63b","line":28,"range":{"start_line":27,"start_character":8,"end_line":28,"end_character":1},"updated":"2025-09-06 06:56:50.000000000","message":"Why are we calling it? We don\u0027t have any event","commit_id":"6d5ba885b28dbfed59630b508e6651a9aa68fb20"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c0e7fd969f500e5893389122f6c88903caf34e86","unresolved":true,"context_lines":[{"line_number":24,"context_line":"        self.sb_ovn \u003d sb_ovn"},{"line_number":25,"context_line":"        # We are doing full sync when the extension is started so we don\u0027t"},{"line_number":26,"context_line":"        # need to process all events when IDLs connect."},{"line_number":27,"context_line":"        self.register_events()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def register_events(self):"},{"line_number":30,"context_line":"        self.nb_ovn.register_events(self.nb_events)"},{"line_number":31,"context_line":"        self.sb_ovn.register_events(self.sb_events)"}],"source_content_type":"text/x-python","patch_set":6,"id":"4df65150_a8a61a8d","line":28,"range":{"start_line":27,"start_character":8,"end_line":28,"end_character":1},"in_reply_to":"45b51746_a283e63b","updated":"2025-09-08 18:27:23.000000000","message":"We will, this is mostly a stub, the prototype is huge so I want to commit in smaller reviewable pieces (failing doing that, heh) but if you want, I can try to make it the right way adding incremental changes.","commit_id":"6d5ba885b28dbfed59630b508e6651a9aa68fb20"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"3e19a61a67ad28244db48fc8ee64e80f7301e289","unresolved":false,"context_lines":[{"line_number":24,"context_line":"        self.sb_ovn \u003d sb_ovn"},{"line_number":25,"context_line":"        # We are doing full sync when the extension is started so we don\u0027t"},{"line_number":26,"context_line":"        # need to process all events when IDLs connect."},{"line_number":27,"context_line":"        self.register_events()"},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"    def register_events(self):"},{"line_number":30,"context_line":"        self.nb_ovn.register_events(self.nb_events)"},{"line_number":31,"context_line":"        self.sb_ovn.register_events(self.sb_events)"}],"source_content_type":"text/x-python","patch_set":6,"id":"de0232a1_44546154","line":28,"range":{"start_line":27,"start_character":8,"end_line":28,"end_character":1},"in_reply_to":"4df65150_a8a61a8d","updated":"2025-09-10 09:03:54.000000000","message":"Done","commit_id":"6d5ba885b28dbfed59630b508e6651a9aa68fb20"}],"neutron/services/bgp/worker.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"4b51e964fee88498b8189f0bb7b75213e7130d3a","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"b513902a_acff3e8a","line":49,"range":{"start_line":48,"start_character":8,"end_line":49,"end_character":1},"updated":"2025-09-06 06:56:50.000000000","message":"Shouldn\u0027t you check the status of the DB IDLs? I mean, not to duplicate connections","commit_id":"6d5ba885b28dbfed59630b508e6651a9aa68fb20"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"c0e7fd969f500e5893389122f6c88903caf34e86","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":6,"id":"ee0f3344_100283b9","line":49,"range":{"start_line":48,"start_character":8,"end_line":49,"end_character":1},"in_reply_to":"b513902a_acff3e8a","updated":"2025-09-08 18:27:23.000000000","message":"You mean calling `connection.stop()` at the `stop()` method and then recreating API only if the IDL is really stopped? I need to have a closer look how does the connection get closed as I know it\u0027s a class attribute - so even if we re-create IDL - the connection object remains the same.","commit_id":"6d5ba885b28dbfed59630b508e6651a9aa68fb20"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"1f4e88404c091f26481d448e7b0d1ae06d7bf0ed","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":6,"id":"278e4a41_d3e18552","line":49,"range":{"start_line":48,"start_character":8,"end_line":49,"end_character":1},"in_reply_to":"ee0f3344_100283b9","updated":"2025-09-09 15:57:04.000000000","message":"Done","commit_id":"6d5ba885b28dbfed59630b508e6651a9aa68fb20"}],"pyproject.toml":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"fbcbc2c0c8a9280da667890938c9338ec89179c1","unresolved":true,"context_lines":[{"line_number":101,"context_line":"ovn-router \u003d \"neutron.services.ovn_l3.plugin:OVNL3RouterPlugin\""},{"line_number":102,"context_line":"local_ip \u003d \"neutron.services.local_ip.local_ip_plugin:LocalIPPlugin\""},{"line_number":103,"context_line":"ndp_proxy \u003d \"neutron.services.ndp_proxy.plugin:NDPProxyPlugin\""},{"line_number":104,"context_line":"bgp \u003d \"neutron.services.bgp.plugin:BGPServicePlugin\""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"[project.entry-points.\"neutron.ml2.type_drivers\"]"},{"line_number":107,"context_line":"flat \u003d \"neutron.plugins.ml2.drivers.type_flat:FlatTypeDriver\""}],"source_content_type":"text/x-toml","patch_set":13,"id":"db95f19e_6580f594","line":104,"range":{"start_line":104,"start_character":0,"end_line":104,"end_character":3},"updated":"2025-09-22 12:46:04.000000000","message":"This is already taken by the neutron-dynamic-routing, I need to rename it, perhaps `ovn-bgp`","commit_id":"8b1dc7f54f38dcb191fd7f2aaa13b4a35a5a722d"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"43ebf1960142d756fe312b5f90404e73f6cf6215","unresolved":false,"context_lines":[{"line_number":101,"context_line":"ovn-router \u003d \"neutron.services.ovn_l3.plugin:OVNL3RouterPlugin\""},{"line_number":102,"context_line":"local_ip \u003d \"neutron.services.local_ip.local_ip_plugin:LocalIPPlugin\""},{"line_number":103,"context_line":"ndp_proxy \u003d \"neutron.services.ndp_proxy.plugin:NDPProxyPlugin\""},{"line_number":104,"context_line":"bgp \u003d \"neutron.services.bgp.plugin:BGPServicePlugin\""},{"line_number":105,"context_line":""},{"line_number":106,"context_line":"[project.entry-points.\"neutron.ml2.type_drivers\"]"},{"line_number":107,"context_line":"flat \u003d \"neutron.plugins.ml2.drivers.type_flat:FlatTypeDriver\""}],"source_content_type":"text/x-toml","patch_set":13,"id":"c194179c_18f5be50","line":104,"range":{"start_line":104,"start_character":0,"end_line":104,"end_character":3},"in_reply_to":"db95f19e_6580f594","updated":"2025-09-22 20:51:21.000000000","message":"Done","commit_id":"8b1dc7f54f38dcb191fd7f2aaa13b4a35a5a722d"}]}
