)]}'
{"neutron/agent/ovn/extensions/segment_bridge.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f868ea4444481180f956753fe7106cc9ae9a4651","unresolved":true,"context_lines":[{"line_number":26,"context_line":"EXT_NAME \u003d \u0027segment_bridge\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def parse_ovn_bridge_mappings(mappings_value):"},{"line_number":30,"context_line":"    \"\"\"Parse ovn-bridge-mappings string into list[(physnet, bridge)]."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    Example:"}],"source_content_type":"text/x-python","patch_set":1,"id":"573e56c6_5caae62f","line":29,"range":{"start_line":29,"start_character":4,"end_line":29,"end_character":29},"updated":"2026-03-25 09:06:19.000000000","message":"We have this method redundantly implemented in:\n* `neutron.agent.ovn.extensions.bgp.events._get_ovn_bridge_mappings`\n* `neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.extensions.placement._parse_bridge_mappings`\n\nWe should implement it once only in `neutron.common.ovn.utils`","commit_id":"259adb33d50a93932880855ea850bce298bacaf2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"164f637afb1763077232cedf079f4c0938a75168","unresolved":false,"context_lines":[{"line_number":26,"context_line":"EXT_NAME \u003d \u0027segment_bridge\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def parse_ovn_bridge_mappings(mappings_value):"},{"line_number":30,"context_line":"    \"\"\"Parse ovn-bridge-mappings string into list[(physnet, bridge)]."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    Example:"}],"source_content_type":"text/x-python","patch_set":1,"id":"8ef6f27b_1d4d812c","line":29,"range":{"start_line":29,"start_character":4,"end_line":29,"end_character":29},"in_reply_to":"3cdb0643_b798fab5","updated":"2026-03-27 23:28:59.000000000","message":"Done","commit_id":"259adb33d50a93932880855ea850bce298bacaf2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"790ac4fc73b0b61b614ccf199c493b590d1a70a2","unresolved":true,"context_lines":[{"line_number":26,"context_line":"EXT_NAME \u003d \u0027segment_bridge\u0027"},{"line_number":27,"context_line":""},{"line_number":28,"context_line":""},{"line_number":29,"context_line":"def parse_ovn_bridge_mappings(mappings_value):"},{"line_number":30,"context_line":"    \"\"\"Parse ovn-bridge-mappings string into list[(physnet, bridge)]."},{"line_number":31,"context_line":""},{"line_number":32,"context_line":"    Example:"}],"source_content_type":"text/x-python","patch_set":1,"id":"3cdb0643_b798fab5","line":29,"range":{"start_line":29,"start_character":4,"end_line":29,"end_character":29},"in_reply_to":"573e56c6_5caae62f","updated":"2026-03-27 23:26:24.000000000","message":"In reality, neutron.plugins.ml2.drivers.ovn.mech_driver.ovsdb.extensions.placement._parse_bridge_mappings produces an output different to what I am looking for. But it calls https://github.com/openstack/neutron-lib/blob/master/neutron_lib/utils/helpers.py#L29, which fits my purposes pretty well.","commit_id":"259adb33d50a93932880855ea850bce298bacaf2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f868ea4444481180f956753fe7106cc9ae9a4651","unresolved":true,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def desired_specs_from_mappings(mappings_value, prefixes):"},{"line_number":89,"context_line":"    \"\"\"Build desired specs list from ovn-bridge-mappings and configured"},{"line_number":90,"context_line":"    prefixes."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    Returns list[dict] with keys: physnet, bridge, trunk_bridge, vlan, prefix."},{"line_number":93,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"75d688b7_215987cb","line":90,"range":{"start_line":90,"start_character":4,"end_line":90,"end_character":12},"updated":"2026-03-25 09:06:19.000000000","message":"nit: that will be enforced in future versions of pep8 checks, titles should have 1 line only","commit_id":"259adb33d50a93932880855ea850bce298bacaf2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"790ac4fc73b0b61b614ccf199c493b590d1a70a2","unresolved":false,"context_lines":[{"line_number":87,"context_line":""},{"line_number":88,"context_line":"def desired_specs_from_mappings(mappings_value, prefixes):"},{"line_number":89,"context_line":"    \"\"\"Build desired specs list from ovn-bridge-mappings and configured"},{"line_number":90,"context_line":"    prefixes."},{"line_number":91,"context_line":""},{"line_number":92,"context_line":"    Returns list[dict] with keys: physnet, bridge, trunk_bridge, vlan, prefix."},{"line_number":93,"context_line":"    \"\"\""}],"source_content_type":"text/x-python","patch_set":1,"id":"d45c6ee7_9ca53cf3","line":90,"range":{"start_line":90,"start_character":4,"end_line":90,"end_character":12},"in_reply_to":"75d688b7_215987cb","updated":"2026-03-27 23:26:24.000000000","message":"Done","commit_id":"259adb33d50a93932880855ea850bce298bacaf2"},{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f868ea4444481180f956753fe7106cc9ae9a4651","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @property"},{"line_number":129,"context_line":"    def ovs_idl_events(self):"},{"line_number":130,"context_line":"        return []"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @property"},{"line_number":133,"context_line":"    def nb_idl_tables(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"9b1416c6_e1499a7d","line":130,"updated":"2026-03-25 09:06:19.000000000","message":"I know this is a WIP patch. I was expecting some event at least here. But as I said, I know this is still in progress.","commit_id":"259adb33d50a93932880855ea850bce298bacaf2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"790ac4fc73b0b61b614ccf199c493b590d1a70a2","unresolved":false,"context_lines":[{"line_number":127,"context_line":""},{"line_number":128,"context_line":"    @property"},{"line_number":129,"context_line":"    def ovs_idl_events(self):"},{"line_number":130,"context_line":"        return []"},{"line_number":131,"context_line":""},{"line_number":132,"context_line":"    @property"},{"line_number":133,"context_line":"    def nb_idl_tables(self):"}],"source_content_type":"text/x-python","patch_set":1,"id":"0498e9d0_853c207f","line":130,"in_reply_to":"9b1416c6_e1499a7d","updated":"2026-03-27 23:26:24.000000000","message":"Yes, you saw a very early version of the WIP","commit_id":"259adb33d50a93932880855ea850bce298bacaf2"}],"neutron/conf/agent/ovn/ovn_neutron_agent/config.py":[{"author":{"_account_id":16688,"name":"Rodolfo Alonso","email":"ralonsoh@redhat.com","username":"rodolfo-alonso-hernandez"},"change_message_id":"f868ea4444481180f956753fe7106cc9ae9a4651","unresolved":true,"context_lines":[{"line_number":37,"context_line":"SEGMENT_BRIDGE_OPTS \u003d ["},{"line_number":38,"context_line":"    cfg.ListOpt("},{"line_number":39,"context_line":"        \u0027segment_bridge_prefixes\u0027,"},{"line_number":40,"context_line":"        default\u003d[\u0027br-ex-\u0027],"},{"line_number":41,"context_line":"        help\u003d_(\u0027List of segment bridge prefixes managed by the OVN agent \u0027"},{"line_number":42,"context_line":"               \u0027segment-bridge extension. For a prefix ending with \"-\", \u0027"},{"line_number":43,"context_line":"               \u0027the trunk bridge name is derived by removing the trailing \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"5667c3cb_89af81d8","line":40,"range":{"start_line":40,"start_character":18,"end_line":40,"end_character":24},"updated":"2026-03-25 09:06:19.000000000","message":"Why instead of forcing the second dash in `br-ex-`, we don\u0027t enforce it in the code? I mean, it is easier for any admin just to add `br-ex` or `br-phys`, same as in other configurations. Then, the code will add the trailing `-`.\n\nThis is just a suggestion.","commit_id":"259adb33d50a93932880855ea850bce298bacaf2"},{"author":{"_account_id":4694,"name":"Miguel Lavalle","email":"miguel@mlavalle.com","username":"minsel"},"change_message_id":"790ac4fc73b0b61b614ccf199c493b590d1a70a2","unresolved":false,"context_lines":[{"line_number":37,"context_line":"SEGMENT_BRIDGE_OPTS \u003d ["},{"line_number":38,"context_line":"    cfg.ListOpt("},{"line_number":39,"context_line":"        \u0027segment_bridge_prefixes\u0027,"},{"line_number":40,"context_line":"        default\u003d[\u0027br-ex-\u0027],"},{"line_number":41,"context_line":"        help\u003d_(\u0027List of segment bridge prefixes managed by the OVN agent \u0027"},{"line_number":42,"context_line":"               \u0027segment-bridge extension. For a prefix ending with \"-\", \u0027"},{"line_number":43,"context_line":"               \u0027the trunk bridge name is derived by removing the trailing \u0027"}],"source_content_type":"text/x-python","patch_set":1,"id":"60982e04_c5a45873","line":40,"range":{"start_line":40,"start_character":18,"end_line":40,"end_character":24},"in_reply_to":"5667c3cb_89af81d8","updated":"2026-03-27 23:26:24.000000000","message":"This is a very good suggestion. Thanks. Done","commit_id":"259adb33d50a93932880855ea850bce298bacaf2"}]}
