)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e9d813fe3b0441f1e19e0605e8e7c4b65693f003","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":1,"id":"f0923630_f3bcb247","updated":"2026-08-18 19:13:32.000000000","message":"The patch looks good to me - putting just -1 to move the driver unittests to functional instead.","commit_id":"af127d10a691238ebc2061c49e4eeabf70610e69"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"32a99a05890dc00ac8e9eea887e47c144a5faa35","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":3,"id":"153c30e9_fa3c1788","updated":"2026-08-24 13:59:27.000000000","message":"LGTM, just one comment","commit_id":"f3b854df0f50c0dd62d5cf7b14b94accb8ee42b4"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"8ae4d7a8f78c8896980660c88e3903a204265591","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":3,"id":"231c8c0a_5f9b9e59","updated":"2026-08-24 14:36:58.000000000","message":"[This](https://opendev.org/openstack/neutron/src/branch/master/neutron/tests/functional/agent/linux/evpn_router/frr/test_frr_driver.py#L346) the class I had in mind for the functional test. You can add another test where you purposely, set a different password in one namespace and then assert that routes are not advertised.","commit_id":"f3b854df0f50c0dd62d5cf7b14b94accb8ee42b4"}],"neutron/agent/ovn/extensions/evpn/fsm_frr_driver.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e9d813fe3b0441f1e19e0605e8e7c4b65693f003","unresolved":true,"context_lines":[{"line_number":61,"context_line":"            bgp_password\u003dcfg.CONF.ovn_evpn.bgp_password,"},{"line_number":62,"context_line":"        )"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def create_router(self, vrf_name, vni) -\u003e None:"},{"line_number":65,"context_line":"        return super().create_evpn_router(self._router_config(vrf_name, vni))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def delete_router(self, vrf_name, vni) -\u003e None:"},{"line_number":68,"context_line":"        return super().delete_evpn_router(self._router_config(vrf_name, vni))"}],"source_content_type":"text/x-python","patch_set":1,"id":"6c9bb4d7_7b2f1c85","line":65,"range":{"start_line":64,"start_character":0,"end_line":65,"end_character":77},"updated":"2026-08-18 19:13:32.000000000","message":"Just a random comment: I find it weird for a super class to accept completely different parameters than its child.","commit_id":"af127d10a691238ebc2061c49e4eeabf70610e69"},{"author":{"_account_id":31291,"name":"Eduardo Olivares","email":"eolivare@redhat.com","username":"eolivare"},"change_message_id":"c5e9db552f34a24aacf8e158b5a3f1d528a8a9fa","unresolved":false,"context_lines":[{"line_number":61,"context_line":"            bgp_password\u003dcfg.CONF.ovn_evpn.bgp_password,"},{"line_number":62,"context_line":"        )"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def create_router(self, vrf_name, vni) -\u003e None:"},{"line_number":65,"context_line":"        return super().create_evpn_router(self._router_config(vrf_name, vni))"},{"line_number":66,"context_line":""},{"line_number":67,"context_line":"    def delete_router(self, vrf_name, vni) -\u003e None:"},{"line_number":68,"context_line":"        return super().delete_evpn_router(self._router_config(vrf_name, vni))"}],"source_content_type":"text/x-python","patch_set":1,"id":"01960408_81afd01e","line":65,"range":{"start_line":64,"start_character":0,"end_line":65,"end_character":77},"in_reply_to":"6c9bb4d7_7b2f1c85","updated":"2026-08-19 10:56:05.000000000","message":"It was not overriding the same method, but calling a different one. I have replaced `super()` with `self`, which I think looks cleaner.","commit_id":"af127d10a691238ebc2061c49e4eeabf70610e69"},{"author":{"_account_id":34271,"name":"Miro Tomaska","display_name":"Miro Tomaska","email":"mtomaska@redhat.com","username":"mtomaska"},"change_message_id":"32a99a05890dc00ac8e9eea887e47c144a5faa35","unresolved":true,"context_lines":[{"line_number":58,"context_line":"            bgp_router_id\u003dself._bgp_router_id,"},{"line_number":59,"context_line":"            vrf_name\u003dvrf_name,"},{"line_number":60,"context_line":"            vni\u003dvni,"},{"line_number":61,"context_line":"            bgp_password\u003dcfg.CONF.ovn_evpn.bgp_password,"},{"line_number":62,"context_line":"        )"},{"line_number":63,"context_line":""},{"line_number":64,"context_line":"    def create_router(self, vrf_name, vni) -\u003e None:"}],"source_content_type":"text/x-python","patch_set":3,"id":"8b0a7784_be1fb487","line":61,"updated":"2026-08-24 13:59:27.000000000","message":"To stay consistent, the `bgp_password` should be set it the `__init__` and then referenced here with `self._bgp_password`. Similar to `_asn`","commit_id":"f3b854df0f50c0dd62d5cf7b14b94accb8ee42b4"}],"neutron/conf/agent/ovn/evpn/config.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e9d813fe3b0441f1e19e0605e8e7c4b65693f003","unresolved":true,"context_lines":[{"line_number":30,"context_line":"               \u0027BGP peer session\u0027)),"},{"line_number":31,"context_line":"    cfg.StrOpt("},{"line_number":32,"context_line":"        \u0027bgp_password\u0027,"},{"line_number":33,"context_line":"        secret\u003dTrue,"},{"line_number":34,"context_line":"        help\u003d_(\u0027BGP neighbor password used when the EVPN agent creates the \u0027"},{"line_number":35,"context_line":"               \u0027fallback FRR BGP router. If unset, no password is \u0027"},{"line_number":36,"context_line":"               \u0027configured.\u0027)),"}],"source_content_type":"text/x-python","patch_set":1,"id":"76f47cfd_ad340254","line":33,"updated":"2026-08-18 19:13:32.000000000","message":"Shall we put `default\u003dNone` here as the code seems to be conditional and sets the password only if defined.","commit_id":"af127d10a691238ebc2061c49e4eeabf70610e69"},{"author":{"_account_id":31291,"name":"Eduardo Olivares","email":"eolivare@redhat.com","username":"eolivare"},"change_message_id":"c5e9db552f34a24aacf8e158b5a3f1d528a8a9fa","unresolved":false,"context_lines":[{"line_number":30,"context_line":"               \u0027BGP peer session\u0027)),"},{"line_number":31,"context_line":"    cfg.StrOpt("},{"line_number":32,"context_line":"        \u0027bgp_password\u0027,"},{"line_number":33,"context_line":"        secret\u003dTrue,"},{"line_number":34,"context_line":"        help\u003d_(\u0027BGP neighbor password used when the EVPN agent creates the \u0027"},{"line_number":35,"context_line":"               \u0027fallback FRR BGP router. If unset, no password is \u0027"},{"line_number":36,"context_line":"               \u0027configured.\u0027)),"}],"source_content_type":"text/x-python","patch_set":1,"id":"8e7689d6_90261957","line":33,"in_reply_to":"76f47cfd_ad340254","updated":"2026-08-19 10:56:05.000000000","message":"Done","commit_id":"af127d10a691238ebc2061c49e4eeabf70610e69"}],"neutron/tests/unit/agent/ovn/extensions/evpn/test_fsm_frr_driver.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"e9d813fe3b0441f1e19e0605e8e7c4b65693f003","unresolved":true,"context_lines":[{"line_number":23,"context_line":"from neutron.tests import base"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TestFsmFrrVtyshDriver(base.BaseTestCase):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def setUp(self):"},{"line_number":29,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":1,"id":"09d857fa_1020bb3a","line":26,"updated":"2026-08-18 19:13:32.000000000","message":"These tests would fit better to https://review.opendev.org/c/openstack/neutron/+/1001375/1/neutron/tests/functional/agent/linux/evpn_router/frr/test_frr_driver.py#246","commit_id":"af127d10a691238ebc2061c49e4eeabf70610e69"},{"author":{"_account_id":31291,"name":"Eduardo Olivares","email":"eolivare@redhat.com","username":"eolivare"},"change_message_id":"c5e9db552f34a24aacf8e158b5a3f1d528a8a9fa","unresolved":false,"context_lines":[{"line_number":23,"context_line":"from neutron.tests import base"},{"line_number":24,"context_line":""},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"class TestFsmFrrVtyshDriver(base.BaseTestCase):"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":"    def setUp(self):"},{"line_number":29,"context_line":"        super().setUp()"}],"source_content_type":"text/x-python","patch_set":1,"id":"a0ec6557_09b82fa9","line":26,"in_reply_to":"09d857fa_1020bb3a","updated":"2026-08-19 10:56:05.000000000","message":"Done","commit_id":"af127d10a691238ebc2061c49e4eeabf70610e69"}]}
