From 8012312fab51684cba402bc2544db6557534fe3f Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 24 Jul 2018 01:33:27 +0200 Subject: [PATCH] Use IetfYangUtils to canonize addresses IetfYangUtils provides optized utility methods for converting Mac/PhysAddress to its canonical lower-case format. Use it wherever possible. This prevents unnecessary object duplication. Change-Id: I8f9361787e113023fc6e9fa660931698ff7250b2 Signed-off-by: Robert Varga --- .../listeners/HwvtepLocalUcastMacListener.java | 15 +++++++-------- .../l2gw/listeners/LocalUcastMacListener.java | 17 ++++++++--------- .../elan/l2gw/utils/ElanL2GatewayUtils.java | 11 ++++++----- 3 files changed, 21 insertions(+), 22 deletions(-) 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 8184288a40..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,7 +8,6 @@ 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; @@ -19,6 +18,7 @@ import org.opendaylight.netvirt.elan.cache.ElanInstanceCache; import org.opendaylight.netvirt.elan.l2gw.utils.ElanL2GatewayUtils; 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; @@ -63,9 +63,9 @@ 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); @@ -78,9 +78,9 @@ public class HwvtepLocalUcastMacListener extends // Remove MAC from cache elanL2GwDevice.removeUcastLocalMac(macRemoved); elanL2GatewayUtils.unInstallL2GwUcastMacFromL2gwDevices(elanName, elanL2GwDevice, - Collections.singletonList(new MacAddress(macAddress.toLowerCase(Locale.getDefault())))); + Collections.singletonList(macAddress)); elanL2GatewayUtils.unInstallL2GwUcastMacFromElanDpns(elanInstanceCache.get(elanName).orNull(), - elanL2GwDevice, Collections.singletonList(new MacAddress(macAddress.toLowerCase(Locale.getDefault())))); + elanL2GwDevice, Collections.singletonList(macAddress)); } protected String getElanName(LocalUcastMacs mac) { @@ -98,7 +98,7 @@ 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); @@ -118,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 diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/LocalUcastMacListener.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/LocalUcastMacListener.java index 67374d6f39..899917ec8d 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/LocalUcastMacListener.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/LocalUcastMacListener.java @@ -12,7 +12,6 @@ import java.util.Collection; import java.util.Collections; import java.util.HashMap; import java.util.HashSet; -import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.function.Predicate; @@ -38,6 +37,7 @@ import org.opendaylight.netvirt.elan.l2gw.ha.listeners.HAOpClusteredListener; import org.opendaylight.netvirt.elan.l2gw.utils.ElanL2GatewayUtils; 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.HwvtepGlobalAugmentation; @@ -112,9 +112,9 @@ public class LocalUcastMacListener extends ChildListener identifier, final 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); ResourceBatchingManager.getInstance().delete(ResourceBatchingManager.ShardResource.CONFIG_TOPOLOGY, identifier); @@ -134,9 +134,9 @@ public class LocalUcastMacListener extends ChildListener getMacs(@Nullable Node node) { + private static Set getMacs(@Nullable Node node) { if (node != null) { HwvtepGlobalAugmentation augmentation = node.augmentation(HwvtepGlobalAugmentation.class); if (augmentation != null && augmentation.getLocalUcastMacs() != null) { diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/utils/ElanL2GatewayUtils.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/utils/ElanL2GatewayUtils.java index cc5755decc..c1f83b99a6 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/utils/ElanL2GatewayUtils.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/utils/ElanL2GatewayUtils.java @@ -21,7 +21,6 @@ import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.List; -import java.util.Locale; import java.util.Objects; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; @@ -69,6 +68,7 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types. import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey; +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.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress; import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rpcs.rev160406.GetDpidFromInterfaceInputBuilder; @@ -473,7 +473,8 @@ public class ElanL2GatewayUtils { for (DpnInterfaces elanDpn : elanDpns) { BigInteger dpnId = elanDpn.getDpId(); result.addAll(elanDmacUtils.deleteDmacFlowsToExternalMac(elan.getElanTag(), dpnId, - l2GwDevice.getHwvtepNodeId(), mac.getValue().toLowerCase(Locale.getDefault()))); + l2GwDevice.getHwvtepNodeId(), + IetfYangUtil.INSTANCE.canonizeMacAddress(mac).getValue())); } return result; }); @@ -695,8 +696,8 @@ public class ElanL2GatewayUtils { HwvtepPhysicalLocatorAugmentation physLocatorAug = HwvtepSouthboundUtils .createHwvtepPhysicalLocatorAugmentation(otherDevice.getTunnelIp()); RemoteUcastMacs remoteUcastMac = HwvtepSouthboundUtils.createRemoteUcastMac(hwVtepNodeId, - localUcastMac.getMacEntryKey().getValue().toLowerCase(Locale.getDefault()), - localUcastMac.getIpaddr(), logicalSwitchName, physLocatorAug); + IetfYangUtil.INSTANCE.canonizeMacAddress(localUcastMac.getMacEntryKey()).getValue(), + localUcastMac.getIpaddr(), logicalSwitchName, physLocatorAug); lstRemoteUcastMacs.add(remoteUcastMac); } } @@ -761,7 +762,7 @@ public class ElanL2GatewayUtils { // TODO: Query ARP cache to get IP address corresponding to the // MAC RemoteUcastMacs remoteUcastMac = HwvtepSouthboundUtils.createRemoteUcastMac(hwVtepNodeId, - macEntry.getMacAddress().getValue().toLowerCase(Locale.getDefault()), null /*IpAddress*/, + IetfYangUtil.INSTANCE.canonizePhysAddress(macEntry.getMacAddress()).getValue(), null /*IpAddress*/, logicalSwitchName, physLocatorAug); lstRemoteUcastMacs.add(remoteUcastMac); } -- 2.36.6