)]}'
{"neutron/db/evpn_db.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"207516047bd590cac390515afedcca1a3e066e76","unresolved":true,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":185,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":186,"context_line":"    def get_all_evpn_instances(self, context):"},{"line_number":187,"context_line":"        \"\"\"Get all EVPN L3 instances with their VNI and VLAN allocations."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        :param context: Neutron request context"}],"source_content_type":"text/x-python","patch_set":3,"id":"b4286d92_807a33ba","line":186,"updated":"2026-07-31 19:49:22.000000000","message":"nit: I\u0027d go with `get_all_evpn_l3_instances` - as likely we\u0027ll implement l2 as well","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"fc6ec81e020fa4862616a1c840ea0eaba257b0da","unresolved":false,"context_lines":[{"line_number":183,"context_line":""},{"line_number":184,"context_line":"    @db_api.retry_if_session_inactive()"},{"line_number":185,"context_line":"    @db_api.CONTEXT_READER"},{"line_number":186,"context_line":"    def get_all_evpn_instances(self, context):"},{"line_number":187,"context_line":"        \"\"\"Get all EVPN L3 instances with their VNI and VLAN allocations."},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"        :param context: Neutron request context"}],"source_content_type":"text/x-python","patch_set":3,"id":"e4906267_e14c2584","line":186,"in_reply_to":"b4286d92_807a33ba","updated":"2026-08-03 13:52:23.000000000","message":"Done","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"}],"neutron/services/evpn/db_sync.py":[{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"207516047bd590cac390515afedcca1a3e066e76","unresolved":true,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _sync_topology(self, router_id, inst):"},{"line_number":81,"context_line":"        super()._sync_topology(router_id, inst)"},{"line_number":82,"context_line":"        LOG.warning(\"Repairing EVPN topology for router %s\","},{"line_number":83,"context_line":"                    router_id)"},{"line_number":84,"context_line":"        self._txn.add(evpn_commands.CreateEVPNRouterCommand("},{"line_number":85,"context_line":"            self.ovn_nb_api, router_id,"},{"line_number":86,"context_line":"            inst[\u0027vni\u0027], inst[\u0027vlan\u0027], self.gw_chassis))"}],"source_content_type":"text/x-python","patch_set":3,"id":"4f8ee2a8_7db775e9","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":30},"updated":"2026-07-31 19:49:22.000000000","message":"Do we want the warnings to be here? There is a warning message in the super() call","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"fc6ec81e020fa4862616a1c840ea0eaba257b0da","unresolved":true,"context_lines":[{"line_number":79,"context_line":""},{"line_number":80,"context_line":"    def _sync_topology(self, router_id, inst):"},{"line_number":81,"context_line":"        super()._sync_topology(router_id, inst)"},{"line_number":82,"context_line":"        LOG.warning(\"Repairing EVPN topology for router %s\","},{"line_number":83,"context_line":"                    router_id)"},{"line_number":84,"context_line":"        self._txn.add(evpn_commands.CreateEVPNRouterCommand("},{"line_number":85,"context_line":"            self.ovn_nb_api, router_id,"},{"line_number":86,"context_line":"            inst[\u0027vni\u0027], inst[\u0027vlan\u0027], self.gw_chassis))"}],"source_content_type":"text/x-python","patch_set":3,"id":"9b434dcc_9b44becb","line":83,"range":{"start_line":82,"start_character":0,"end_line":83,"end_character":30},"in_reply_to":"4f8ee2a8_7db775e9","updated":"2026-08-03 13:52:23.000000000","message":"I did it on purpose, anyway. The ones above are the \"it\u0027s missing\" and the ones here are the \"We\u0027re fixing it.\" which is similar to rules on ovn_db_sync, like _add_routers_del_txn, etc.","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"207516047bd590cac390515afedcca1a3e066e76","unresolved":true,"context_lines":[{"line_number":240,"context_line":"                syncer._sync_topology(router_id, db_routers[router_id])"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"            for lrp_name in missing_advertised:"},{"line_number":243,"context_line":"                port_id \u003d advertised_lrp_to_port.get(lrp_name)"},{"line_number":244,"context_line":"                syncer._sync_missing_advertised(port_id, lrp_name)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"            for name in orphan_ls:"}],"source_content_type":"text/x-python","patch_set":3,"id":"4ae09634_7698cb69","line":243,"updated":"2026-07-31 19:49:22.000000000","message":"we can do\n```\ntry:\n    port_id \u003d advertised_lrp_to_port[lrp_name]\nexcept KeyError:\n    continue\nsyncer._sync_missing_advertised(port_id, lrp_name)\n```\nand avoid the branching on L90","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"fc6ec81e020fa4862616a1c840ea0eaba257b0da","unresolved":false,"context_lines":[{"line_number":240,"context_line":"                syncer._sync_topology(router_id, db_routers[router_id])"},{"line_number":241,"context_line":""},{"line_number":242,"context_line":"            for lrp_name in missing_advertised:"},{"line_number":243,"context_line":"                port_id \u003d advertised_lrp_to_port.get(lrp_name)"},{"line_number":244,"context_line":"                syncer._sync_missing_advertised(port_id, lrp_name)"},{"line_number":245,"context_line":""},{"line_number":246,"context_line":"            for name in orphan_ls:"}],"source_content_type":"text/x-python","patch_set":3,"id":"fd4cf620_d47f3381","line":243,"in_reply_to":"4ae09634_7698cb69","updated":"2026-08-03 13:52:23.000000000","message":"Done","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"}],"neutron/tests/functional/plugins/ml2/drivers/ovn/mech_driver/ovsdb/test_ovn_db_sync.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"41fe28016a4a16bf8c30a158edb3516a2a717024","unresolved":false,"context_lines":[{"line_number":49,"context_line":"from neutron.services.evpn import commands as evpn_commands"},{"line_number":50,"context_line":"from neutron.services.evpn import constants as evpn_const"},{"line_number":51,"context_line":"from neutron.services.evpn import db_sync as evpn_db_sync"},{"line_number":52,"context_line":"from neutron.services.evpn import helpers as evpn_helpers"},{"line_number":53,"context_line":"from neutron.services.portforwarding.drivers.ovn.driver import \\"},{"line_number":54,"context_line":"    OVNPortForwarding as ovn_pf"},{"line_number":55,"context_line":"from neutron.services.revisions import revision_plugin"}],"source_content_type":"text/x-python","patch_set":3,"id":"eb19e90f_fbca1b6a","line":52,"updated":"2026-07-31 18:48:56.000000000","message":"pep8: E0611: No name \u0027helpers\u0027 in module \u0027neutron.services.evpn\u0027 (no-name-in-module)","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"207516047bd590cac390515afedcca1a3e066e76","unresolved":true,"context_lines":[{"line_number":2262,"context_line":"    _extension_drivers \u003d [\u0027port_security\u0027, \u0027revision_plugin\u0027]"},{"line_number":2263,"context_line":""},{"line_number":2264,"context_line":"    def setUp(self):"},{"line_number":2265,"context_line":"        self._mock_has_lock \u003d mock.patch.object("},{"line_number":2266,"context_line":"            maintenance.DBInconsistenciesPeriodics, \u0027has_lock\u0027,"},{"line_number":2267,"context_line":"            mock.PropertyMock(return_value\u003dTrue))"},{"line_number":2268,"context_line":"        self.mock_has_lock \u003d self._mock_has_lock.start()"},{"line_number":2269,"context_line":"        self._mock_set_lock \u003d mock.patch.object("},{"line_number":2270,"context_line":"            ovsdb_monitor.BaseOvnIdl, \u0027set_lock\u0027)"},{"line_number":2271,"context_line":"        self.mock_set_lock \u003d self._mock_set_lock.start()"}],"source_content_type":"text/x-python","patch_set":3,"id":"c05d22b3_8437aaea","line":2268,"range":{"start_line":2265,"start_character":0,"end_line":2268,"end_character":56},"updated":"2026-07-31 19:49:22.000000000","message":"nit: This can be a one-liner","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"fc6ec81e020fa4862616a1c840ea0eaba257b0da","unresolved":false,"context_lines":[{"line_number":2262,"context_line":"    _extension_drivers \u003d [\u0027port_security\u0027, \u0027revision_plugin\u0027]"},{"line_number":2263,"context_line":""},{"line_number":2264,"context_line":"    def setUp(self):"},{"line_number":2265,"context_line":"        self._mock_has_lock \u003d mock.patch.object("},{"line_number":2266,"context_line":"            maintenance.DBInconsistenciesPeriodics, \u0027has_lock\u0027,"},{"line_number":2267,"context_line":"            mock.PropertyMock(return_value\u003dTrue))"},{"line_number":2268,"context_line":"        self.mock_has_lock \u003d self._mock_has_lock.start()"},{"line_number":2269,"context_line":"        self._mock_set_lock \u003d mock.patch.object("},{"line_number":2270,"context_line":"            ovsdb_monitor.BaseOvnIdl, \u0027set_lock\u0027)"},{"line_number":2271,"context_line":"        self.mock_set_lock \u003d self._mock_set_lock.start()"}],"source_content_type":"text/x-python","patch_set":3,"id":"9353a349_f34cfefc","line":2268,"range":{"start_line":2265,"start_character":0,"end_line":2268,"end_character":56},"in_reply_to":"c05d22b3_8437aaea","updated":"2026-08-03 13:52:23.000000000","message":"Done","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"207516047bd590cac390515afedcca1a3e066e76","unresolved":true,"context_lines":[{"line_number":2383,"context_line":"        self._sync_evpn(n_lib_ovn_const.OVN_DB_SYNC_MODE_REPAIR)"},{"line_number":2384,"context_line":"        self._validate_evpn_objects_exist()"},{"line_number":2385,"context_line":""},{"line_number":2386,"context_line":"    def test_evpn_sync_repair_missing_topology(self):"},{"line_number":2387,"context_line":"        self._create_evpn_resources()"},{"line_number":2388,"context_line":"        self._validate_evpn_objects_exist()"},{"line_number":2389,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"9716b91d_c5759aa8","line":2386,"range":{"start_line":2386,"start_character":38,"end_line":2386,"end_character":46},"updated":"2026-07-31 19:49:22.000000000","message":"`missing_ls` ?","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"fc6ec81e020fa4862616a1c840ea0eaba257b0da","unresolved":false,"context_lines":[{"line_number":2383,"context_line":"        self._sync_evpn(n_lib_ovn_const.OVN_DB_SYNC_MODE_REPAIR)"},{"line_number":2384,"context_line":"        self._validate_evpn_objects_exist()"},{"line_number":2385,"context_line":""},{"line_number":2386,"context_line":"    def test_evpn_sync_repair_missing_topology(self):"},{"line_number":2387,"context_line":"        self._create_evpn_resources()"},{"line_number":2388,"context_line":"        self._validate_evpn_objects_exist()"},{"line_number":2389,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"bc05093d_9c4b4b13","line":2386,"range":{"start_line":2386,"start_character":38,"end_line":2386,"end_character":46},"in_reply_to":"9716b91d_c5759aa8","updated":"2026-08-03 13:52:23.000000000","message":"Done","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"207516047bd590cac390515afedcca1a3e066e76","unresolved":true,"context_lines":[{"line_number":2414,"context_line":"        self._sync_evpn(n_lib_ovn_const.OVN_DB_SYNC_MODE_REPAIR)"},{"line_number":2415,"context_line":""},{"line_number":2416,"context_line":"        self._validate_evpn_objects_exist()"},{"line_number":2417,"context_line":""},{"line_number":2418,"context_line":"    def test_evpn_sync_repair_missing_advertise_host(self):"},{"line_number":2419,"context_line":"        self._create_evpn_resources()"},{"line_number":2420,"context_line":"        self._validate_evpn_objects_exist()"}],"source_content_type":"text/x-python","patch_set":3,"id":"6633ecb5_0a7a46bd","line":2417,"updated":"2026-07-31 19:49:22.000000000","message":"Tests we can add:\n - missing HA_CHassis_group\n - wrong options (missing dynamic-routing for example) on LR or LRPs","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"fc6ec81e020fa4862616a1c840ea0eaba257b0da","unresolved":false,"context_lines":[{"line_number":2414,"context_line":"        self._sync_evpn(n_lib_ovn_const.OVN_DB_SYNC_MODE_REPAIR)"},{"line_number":2415,"context_line":""},{"line_number":2416,"context_line":"        self._validate_evpn_objects_exist()"},{"line_number":2417,"context_line":""},{"line_number":2418,"context_line":"    def test_evpn_sync_repair_missing_advertise_host(self):"},{"line_number":2419,"context_line":"        self._create_evpn_resources()"},{"line_number":2420,"context_line":"        self._validate_evpn_objects_exist()"}],"source_content_type":"text/x-python","patch_set":3,"id":"953f5947_9fd71d28","line":2417,"in_reply_to":"6633ecb5_0a7a46bd","updated":"2026-08-03 13:52:23.000000000","message":"Done","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"},{"author":{"_account_id":8655,"name":"Jakub Libosvar","email":"libosvar@redhat.com","username":"jlibosva"},"change_message_id":"207516047bd590cac390515afedcca1a3e066e76","unresolved":true,"context_lines":[{"line_number":2434,"context_line":"        self.assertIn(self.evpn_advertised_lrp,"},{"line_number":2435,"context_line":"                      self._get_ovn_advertised_lrp_names())"},{"line_number":2436,"context_line":""},{"line_number":2437,"context_line":"    def test_evpn_sync_repair_orphan_cleanup(self):"},{"line_number":2438,"context_line":"        self._create_evpn_resources()"},{"line_number":2439,"context_line":"        self._validate_evpn_objects_exist()"},{"line_number":2440,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"25424c02_df695ba7","line":2437,"updated":"2026-07-31 19:49:22.000000000","message":"test with an orphaned LR","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"},{"author":{"_account_id":5756,"name":"Terry Wilson","email":"twilson@redhat.com","username":"otherwiseguy"},"change_message_id":"fc6ec81e020fa4862616a1c840ea0eaba257b0da","unresolved":false,"context_lines":[{"line_number":2434,"context_line":"        self.assertIn(self.evpn_advertised_lrp,"},{"line_number":2435,"context_line":"                      self._get_ovn_advertised_lrp_names())"},{"line_number":2436,"context_line":""},{"line_number":2437,"context_line":"    def test_evpn_sync_repair_orphan_cleanup(self):"},{"line_number":2438,"context_line":"        self._create_evpn_resources()"},{"line_number":2439,"context_line":"        self._validate_evpn_objects_exist()"},{"line_number":2440,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"d21dd8dc_a5e34305","line":2437,"in_reply_to":"25424c02_df695ba7","updated":"2026-08-03 13:52:23.000000000","message":"Done","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"}],"neutron/tests/functional/services/evpn/test_commands.py":[{"author":{"_account_id":22348,"name":"Zuul","username":"zuul","tags":["SERVICE_USER"]},"tag":"autogenerated:zuul:check","change_message_id":"41fe28016a4a16bf8c30a158edb3516a2a717024","unresolved":false,"context_lines":[{"line_number":24,"context_line":"from neutron.services.bgp import constants as bgp_const"},{"line_number":25,"context_line":"from neutron.services.evpn import commands as evpn_ovn"},{"line_number":26,"context_line":"from neutron.services.evpn import constants as evpn_const"},{"line_number":27,"context_line":"from neutron.services.evpn import helpers as evpn_helpers"},{"line_number":28,"context_line":"from neutron.tests.functional import base as func_base"},{"line_number":29,"context_line":"from neutron.tests.functional.services import bgp as bgp_base"},{"line_number":30,"context_line":""}],"source_content_type":"text/x-python","patch_set":3,"id":"0a88e6ff_ab4401fa","line":27,"updated":"2026-07-31 18:48:56.000000000","message":"pep8: E0611: No name \u0027helpers\u0027 in module \u0027neutron.services.evpn\u0027 (no-name-in-module)","commit_id":"a261f79c6685c592cf22e2e9d15d9d3a2fa1b1f0"}]}
