diff --git a/ovn_bgp_agent/drivers/openstack/ovn_bgp_driver.py b/ovn_bgp_agent/drivers/openstack/ovn_bgp_driver.py index 1b7386c..e93a7a3 100644 --- a/ovn_bgp_agent/drivers/openstack/ovn_bgp_driver.py +++ b/ovn_bgp_agent/drivers/openstack/ovn_bgp_driver.py @@ -135,7 +135,7 @@ class OVNBGPDriver(driver_api.AgentDriverBase): # 2) Get macs for bridge mappings extra_routes = {} with pyroute2.NDB() as ndb: - for bridge_index, bridge_mapping in enumerate(bridge_mappings): + for bridge_index, bridge_mapping in enumerate(bridge_mappings, 1): network = bridge_mapping.split(":")[0] bridge = bridge_mapping.split(":")[1] self.ovn_bridge_mappings[network] = bridge diff --git a/ovn_bgp_agent/drivers/openstack/ovn_evpn_driver.py b/ovn_bgp_agent/drivers/openstack/ovn_evpn_driver.py index 4df5f18..1bc6b1e 100644 --- a/ovn_bgp_agent/drivers/openstack/ovn_evpn_driver.py +++ b/ovn_bgp_agent/drivers/openstack/ovn_evpn_driver.py @@ -116,7 +116,7 @@ class OVNEVPNDriver(driver_api.AgentDriverBase): # 1) Get bridge mappings: xxxx:br-ex,yyyy:br-ex2 bridge_mappings = self.ovs_idl.get_ovn_bridge_mappings() # 2) Get macs for bridge mappings - for bridge_index, bridge_mapping in enumerate(bridge_mappings): + for bridge_index, bridge_mapping in enumerate(bridge_mappings, 1): network = bridge_mapping.split(":")[0] bridge = bridge_mapping.split(":")[1] self.ovn_bridge_mappings[network] = bridge diff --git a/ovn_bgp_agent/utils/linux_net.py b/ovn_bgp_agent/utils/linux_net.py index 2ce5156..7d389d0 100644 --- a/ovn_bgp_agent/utils/linux_net.py +++ b/ovn_bgp_agent/utils/linux_net.py @@ -82,8 +82,20 @@ def delete_device(device): def ensure_arp_ndp_enabed_for_bridge(bridge, offset): ipv4 = "192.168." + str(int(offset / 256)) + "." + str(offset % 256) ipv6 = "fd53:d91e:400:7f17::%x" % offset - ovn_bgp_agent.privileged.linux_net.add_ip_to_dev(ipv4, bridge) - ovn_bgp_agent.privileged.linux_net.add_ip_to_dev(ipv6, bridge) + try: + ovn_bgp_agent.privileged.linux_net.add_ip_to_dev(ipv4, bridge) + except KeyError as e: + if "object exists" not in str(e): + LOG.error("Unable to add IP on bridge %s to enable arp/ndp. " + "Exception: %s", bridge, e) + raise + try: + ovn_bgp_agent.privileged.linux_net.add_ip_to_dev(ipv6, bridge) + except KeyError as e: + if "object exists" not in str(e): + LOG.error("Unable to add IP on bridge %s to enable arp/ndp. " + "Exception: %s", bridge, e) + raise def ensure_routing_table_for_bridge(ovn_routing_tables, bridge):