X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=elanmanager%2Felanmanager-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Felan%2Futils%2FElanUtils.java;h=6b6228d7fcbf071e7305dc6f4f07fb2558edffa3;hb=35651c681489ca4c1fee31b72678a29d0eb45e88;hp=10d4df2b79fae955f1ccb44910ffb284464149d2;hpb=3479f7b69b9523bbbf27cb7456761b58dacd2775;p=vpnservice.git diff --git a/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/utils/ElanUtils.java b/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/utils/ElanUtils.java index 10d4df2b..6b6228d7 100644 --- a/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/utils/ElanUtils.java +++ b/elanmanager/elanmanager-impl/src/main/java/org/opendaylight/vpnservice/elan/utils/ElanUtils.java @@ -176,11 +176,6 @@ public class ElanUtils { Futures.addCallback(tx.submit(), DEFAULT_CALLBACK); } - public static InstanceIdentifier getElanInstanceIdentifier(String elanName) { - return InstanceIdentifier.builder(ElanInstances.class) - .child(ElanInstance.class, new ElanInstanceKey(elanName)).build(); - } - public static InstanceIdentifier getElanInstanceIdentifier() { return InstanceIdentifier.builder(ElanInstances.class).child(ElanInstance.class).build(); } @@ -337,14 +332,10 @@ public class ElanUtils { } // interface-index-tag operational container - public static IfIndexInterface getInterfaceInfoByInterfaceTag(long interfaceTag) { + public static Optional getInterfaceInfoByInterfaceTag(long interfaceTag) { DataBroker broker = elanServiceProvider.getBroker(); InstanceIdentifier interfaceId = getInterfaceInfoEntriesOperationalDataPath(interfaceTag); - Optional existingInterfaceInfo = ElanUtils.read(broker, LogicalDatastoreType.OPERATIONAL, interfaceId); - if(existingInterfaceInfo.isPresent()) { - return existingInterfaceInfo.get(); - } - return null; + return ElanUtils.read(broker, LogicalDatastoreType.OPERATIONAL, interfaceId); } public static InstanceIdentifier getInterfaceInfoEntriesOperationalDataPath(long interfaceTag) { @@ -663,32 +654,31 @@ public class ElanUtils { public static void deleteMacFlows(ElanInstance elanInfo, InterfaceInfo interfaceInfo, String macAddress, boolean deleteSmac) { String elanInstanceName = elanInfo.getElanInstanceName(); - String ifName = interfaceInfo.getInterfaceName(); long ifTag = interfaceInfo.getInterfaceTag(); List remoteFEs = getInvolvedDpnsInElan(elanInstanceName); IMdsalApiManager mdsalApiManager = elanServiceProvider.getMdsalManager(); ItmRpcService itmRpcService = elanServiceProvider.getItmRpcService(); BigInteger srcdpId = interfaceInfo.getDpId(); - String displayName = elanInstanceName; - long groupId = interfaceInfo.getGroupId(); for (DpnInterfaces dpnInterface: remoteFEs) { Long elanTag = elanInfo.getElanTag(); - if (dpnInterface.getDpId().equals(srcdpId)) { + BigInteger dstDpId = dpnInterface.getDpId(); + if (dstDpId.equals(srcdpId)) { if(deleteSmac) { - mdsalApiManager.removeFlow(getKnownSmacFlowEntity(elanInfo, interfaceInfo, 0, macAddress)); + mdsalApiManager.removeFlow(srcdpId, MDSALUtil.buildFlow(ElanConstants.ELAN_SMAC_TABLE, + getKnownDynamicmacFlowRef(ElanConstants.ELAN_SMAC_TABLE, srcdpId, ifTag, macAddress, elanTag))); } - mdsalApiManager.removeFlow(dpnInterface.getDpId(), getLocalDmacFlowEntry(elanTag, dpnInterface.getDpId(), ifName, macAddress, displayName, ifTag)); - RemoveTerminatingServiceActionsInput removeTerminatingServiceActionsInput = new RemoveTerminatingServiceActionsInputBuilder().setServiceId(interfaceInfo.getInterfaceTag()).setDpnId(dpnInterface.getDpId()).build(); + mdsalApiManager.removeFlow(srcdpId, MDSALUtil.buildFlow(ElanConstants.ELAN_DMAC_TABLE, + getKnownDynamicmacFlowRef(ElanConstants.ELAN_DMAC_TABLE, srcdpId, ifTag, macAddress, elanTag))); + RemoveTerminatingServiceActionsInput removeTerminatingServiceActionsInput = new RemoveTerminatingServiceActionsInputBuilder().setServiceId(interfaceInfo.getInterfaceTag()).setDpnId(srcdpId).build(); itmRpcService.removeTerminatingServiceActions(removeTerminatingServiceActionsInput); if (logger.isDebugEnabled()) { - logger.debug("All the required flows deleted for elan:{}, logical Interface port:{} and mac address:{} on dpn:{}", elanInstanceName, interfaceInfo.getPortName(), macAddress, dpnInterface.getDpId()); + logger.debug("All the required flows deleted for elan:{}, logical Interface port:{} and mac address:{} on dpn:{}", elanInstanceName, interfaceInfo.getPortName(), macAddress, srcdpId); } - } else if (isDpnPresent(dpnInterface.getDpId())) { - mdsalApiManager.removeFlow(dpnInterface.getDpId(), - getRemoteDmacFlowEntry(dpnInterface.getDpId(), srcdpId, interfaceInfo.getInterfaceTag(), elanTag, macAddress, - displayName)); + } else if (isDpnPresent(dstDpId)) { + mdsalApiManager.removeFlow(dstDpId, MDSALUtil.buildFlow(ElanConstants.ELAN_DMAC_TABLE, + getKnownDynamicmacFlowRef(ElanConstants.ELAN_DMAC_TABLE, srcdpId, dstDpId, macAddress, elanTag))); if (logger.isDebugEnabled()) { - logger.debug("Dmac flow entry deleted for elan:{}, logical interface port:{} and mac address:{} on dpn:{}", elanInstanceName, interfaceInfo.getPortName(), macAddress, dpnInterface.getDpId()); + logger.debug("Dmac flow entry deleted for elan:{}, logical interface port:{} and mac address:{} on dpn:{}", elanInstanceName, interfaceInfo.getPortName(), macAddress, dstDpId); } } } @@ -708,7 +698,7 @@ public class ElanUtils { MDSALUtil.syncWrite(broker, LogicalDatastoreType.OPERATIONAL, ElanUtils.getElanInfoEntriesOperationalDataPath(elanTag), elanTagName); ElanInstance elanInstanceWithTag = new ElanInstanceBuilder().setElanInstanceName(elanInstanceName).setDescription(elanInstanceAdded.getDescription()).setMacTimeout(elanInstanceAdded .getMacTimeout() == null ? ElanConstants.DEFAULT_MAC_TIME_OUT : elanInstanceAdded.getMacTimeout()).setKey(elanInstanceAdded.getKey()).setElanTag(elanTag).build(); - MDSALUtil.syncUpdate(broker, LogicalDatastoreType.CONFIGURATION, getElanInstanceIdentifier(elanInstanceName), elanInstanceWithTag); + MDSALUtil.syncUpdate(broker, LogicalDatastoreType.CONFIGURATION, getElanInstanceConfigurationDataPath(elanInstanceName), elanInstanceWithTag); } public static boolean isDpnPresent(BigInteger dpnId) {