X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=elanmanager%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetvirt%2Felan%2Fl2gw%2Flisteners%2FHwvtepLocalUcastMacListener.java;h=1ce9f86b9af56df58482a80b58db6ecffd9870cc;hb=8012312fab51684cba402bc2544db6557534fe3f;hp=669036786be96eaed527240a095be9adf39a4048;hpb=72bd2d39aefb0e36308765cd15b3bdbda8275fc7;p=netvirt.git diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/HwvtepLocalUcastMacListener.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/HwvtepLocalUcastMacListener.java index 669036786b..1ce9f86b9a 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/HwvtepLocalUcastMacListener.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/HwvtepLocalUcastMacListener.java @@ -8,16 +8,17 @@ package org.opendaylight.netvirt.elan.l2gw.listeners; import java.util.Collections; -import java.util.Locale; import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.genius.datastoreutils.hwvtep.HwvtepClusteredDataTreeChangeListener; import org.opendaylight.genius.utils.batching.ResourceBatchingManager; +import org.opendaylight.genius.utils.hwvtep.HwvtepNodeHACache; import org.opendaylight.genius.utils.hwvtep.HwvtepUtils; +import org.opendaylight.netvirt.elan.cache.ElanInstanceCache; import org.opendaylight.netvirt.elan.l2gw.utils.ElanL2GatewayUtils; -import org.opendaylight.netvirt.elan.utils.ElanUtils; import org.opendaylight.netvirt.elanmanager.utils.ElanL2GwCacheUtils; import org.opendaylight.netvirt.neutronvpn.api.l2gw.L2GatewayDevice; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.IetfYangUtil; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.instances.ElanInstance; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.global.attributes.LocalUcastMacs; @@ -43,12 +44,15 @@ public class HwvtepLocalUcastMacListener extends private final DataBroker broker; private final ElanL2GatewayUtils elanL2GatewayUtils; + private final ElanInstanceCache elanInstanceCache; - public HwvtepLocalUcastMacListener(DataBroker broker, ElanL2GatewayUtils elanL2GatewayUtils) { - super(LocalUcastMacs.class, HwvtepLocalUcastMacListener.class); + public HwvtepLocalUcastMacListener(DataBroker broker, ElanL2GatewayUtils elanL2GatewayUtils, + ElanInstanceCache elanInstanceCache, HwvtepNodeHACache hwvtepNodeHACache) { + super(LocalUcastMacs.class, HwvtepLocalUcastMacListener.class, hwvtepNodeHACache); this.broker = broker; this.elanL2GatewayUtils = elanL2GatewayUtils; + this.elanInstanceCache = elanInstanceCache; ResourceBatchingManager.getInstance().registerDefaultBatchHandlers(this.broker); } @@ -59,12 +63,11 @@ public class HwvtepLocalUcastMacListener extends @Override protected void removed(InstanceIdentifier identifier, LocalUcastMacs macRemoved) { String hwvtepNodeId = identifier.firstKeyOf(Node.class).getNodeId().getValue(); - String macAddress = macRemoved.getMacEntryKey().getValue().toLowerCase(Locale.getDefault()); + MacAddress macAddress = IetfYangUtil.INSTANCE.canonizeMacAddress(macRemoved.getMacEntryKey()); - LOG.trace("LocalUcastMacs {} removed from {}", macAddress, hwvtepNodeId); + LOG.trace("LocalUcastMacs {} removed from {}", macAddress.getValue(), hwvtepNodeId); String elanName = getElanName(macRemoved); - ElanInstance elan = ElanUtils.getElanInstanceByName(broker, elanName); L2GatewayDevice elanL2GwDevice = ElanL2GwCacheUtils.getL2GatewayDeviceFromCache(elanName, hwvtepNodeId); if (elanL2GwDevice == null) { @@ -74,9 +77,10 @@ public class HwvtepLocalUcastMacListener extends // Remove MAC from cache elanL2GwDevice.removeUcastLocalMac(macRemoved); - - elanL2GatewayUtils.unInstallL2GwUcastMacFromElan(elan, elanL2GwDevice, - Collections.singletonList(new MacAddress(macAddress.toLowerCase(Locale.getDefault())))); + elanL2GatewayUtils.unInstallL2GwUcastMacFromL2gwDevices(elanName, elanL2GwDevice, + Collections.singletonList(macAddress)); + elanL2GatewayUtils.unInstallL2GwUcastMacFromElanDpns(elanInstanceCache.get(elanName).orNull(), + elanL2GwDevice, Collections.singletonList(macAddress)); } protected String getElanName(LocalUcastMacs mac) { @@ -94,12 +98,12 @@ public class HwvtepLocalUcastMacListener extends @Override public void added(InstanceIdentifier identifier, LocalUcastMacs macAdded) { String hwvtepNodeId = identifier.firstKeyOf(Node.class).getNodeId().getValue(); - String macAddress = macAdded.getMacEntryKey().getValue().toLowerCase(Locale.getDefault()); + String macAddress = IetfYangUtil.INSTANCE.canonizeMacAddress(macAdded.getMacEntryKey()).getValue(); LOG.trace("LocalUcastMacs {} added to {}", macAddress, hwvtepNodeId); String elanName = getElanName(macAdded); - ElanInstance elan = ElanUtils.getElanInstanceByName(broker, elanName); + ElanInstance elan = elanInstanceCache.get(elanName).orNull(); if (elan == null) { LOG.warn("Could not find ELAN for mac {} being added", macAddress); return; @@ -114,8 +118,7 @@ public class HwvtepLocalUcastMacListener extends // Cache MAC for furthur processing later elanL2GwDevice.addUcastLocalMac(macAdded); - elanL2GatewayUtils.installL2GwUcastMacInElan(elan, elanL2GwDevice, macAddress.toLowerCase(Locale.getDefault()), - macAdded, null); + elanL2GatewayUtils.installL2GwUcastMacInElan(elan, elanL2GwDevice, macAddress, macAdded, null); } @Override