From ee7fecc255770fcd4665b44da355df969bc8df4e Mon Sep 17 00:00:00 2001 From: Faseela K Date: Sat, 6 Feb 2016 00:52:27 +0530 Subject: [PATCH] Bug 5182 - Customized name support for VLAN trunk should be supported Description : Code clean up , fixing NPEs and adding more debug logs Signed-off-by: Faseela K Change-Id: Ia16602f7e88f7d1d39591247d1b4104dd82c4d34 Signed-off-by: Faseela K (cherry picked from commit d27dda6e70f5fa31d518aced0010aa48fe5884a7) --- .../arputil/internal/ArpUtilImpl.java | 63 ++++++++----------- .../commons/InterfaceManagerCommonUtils.java | 33 ++-------- .../commons/InterfaceMetaUtils.java | 5 ++ .../listeners/InterfaceConfigListener.java | 33 ---------- .../OvsInterfaceConfigAddHelper.java | 3 + .../OvsInterfaceConfigRemoveHelper.java | 7 ++- .../OvsVlanMemberConfigAddHelper.java | 2 + .../OvsVlanMemberConfigRemoveHelper.java | 5 +- .../OvsInterfaceStateRemoveHelper.java | 2 +- .../FlowBasedServicesStateUnbindHelper.java | 4 +- ...owBasedServicesStateConfigurationTest.java | 4 +- 11 files changed, 57 insertions(+), 104 deletions(-) diff --git a/arputil/arputil-impl/src/main/java/org/opendaylight/vpnservice/arputil/internal/ArpUtilImpl.java b/arputil/arputil-impl/src/main/java/org/opendaylight/vpnservice/arputil/internal/ArpUtilImpl.java index 8128d915..eaf07558 100644 --- a/arputil/arputil-impl/src/main/java/org/opendaylight/vpnservice/arputil/internal/ArpUtilImpl.java +++ b/arputil/arputil-impl/src/main/java/org/opendaylight/vpnservice/arputil/internal/ArpUtilImpl.java @@ -152,12 +152,12 @@ public class ArpUtilImpl implements OdlArputilService, .registerNotificationListener(this); LOGGER.info("ArpUtil Manager Initialized "); } - + OdlInterfaceRpcService getInterfaceRpcService() { - if (intfRpc == null ) { - intfRpc = rpc.getRpcService(OdlInterfaceRpcService.class); - } - return intfRpc; + if (intfRpc == null ) { + intfRpc = rpc.getRpcService(OdlInterfaceRpcService.class); + } + return intfRpc; } @Override @@ -267,8 +267,6 @@ public class ArpUtilImpl implements OdlArputilService, NodeConnectorId id = getNodeConnectorFromInterfaceName(interfaceName); GetPortFromInterfaceOutput portResult = getPortFromInterface(interfaceName); - //dpnId = BigInteger.valueOf(MDSALUtil.getDpnIdFromPortName(id)); - //Long portid = MDSALUtil.getOfPortNumberFromPortName(id); dpnId = portResult.getDpid(); Long portid = portResult.getPortno(); checkArgument(null != dpnId && BigInteger.ZERO != dpnId, @@ -352,18 +350,9 @@ public class ArpUtilImpl implements OdlArputilService, try { String interfaceName = input.getInterface(); - //NodeConnectorId id = getNodeConnectorFromInterfaceName(interfaceName); - - //dpnId = BigInteger.valueOf(MDSALUtil.getDpnIdFromPortName(id)); - //Long portid = MDSALUtil.getOfPortNumberFromPortName(id); - GetPortFromInterfaceOutput portResult = getPortFromInterface(interfaceName); - //dpnId = BigInteger.valueOf(MDSALUtil.getDpnIdFromPortName(id)); - //Long portid = MDSALUtil.getOfPortNumberFromPortName(id); dpnId = portResult.getDpid(); Long portid = portResult.getPortno(); - - NodeConnectorRef ref = MDSALUtil.getNodeConnRef(dpnId, portid.toString()); checkArgument(null != dpnId && BigInteger.ZERO != dpnId, @@ -435,10 +424,8 @@ public class ArpUtilImpl implements OdlArputilService, NodeConnectorRef ref = packetReceived.getIngress(); - Metadata i = packetReceived.getMatch().getMetadata(); - - //String interfaceName = MDSALUtil.getInterfaceName(ref, dataBroker); - String interfaceName = getInterfaceName(ref,i, dataBroker); + Metadata metadata = packetReceived.getMatch().getMetadata(); + String interfaceName = getInterfaceName(ref,metadata, dataBroker); checkAndFireMacChangedNotification(interfaceName, srcInetAddr, srcMac); @@ -464,31 +451,31 @@ public class ArpUtilImpl implements OdlArputilService, } GetPortFromInterfaceOutput getPortFromInterface(String interfaceName) throws Throwable { - GetPortFromInterfaceInputBuilder x = new GetPortFromInterfaceInputBuilder(); - x.setIntfName(interfaceName);; - Future> ft = intfRpc.getPortFromInterface(x.build()); - GetPortFromInterfaceOutput result = ft.get().getResult(); - LOGGER.trace("getPortFromInterface rpc result is {} ", result); - if (result != null) { - LOGGER.trace("getPortFromInterface rpc result is {} {} ", result.getDpid(), result.getPortno()); - } - return result; + GetPortFromInterfaceInputBuilder getPortFromInterfaceInputBuilder = new GetPortFromInterfaceInputBuilder(); + getPortFromInterfaceInputBuilder.setIntfName(interfaceName);; + Future> portFromInterface = intfRpc.getPortFromInterface(getPortFromInterfaceInputBuilder.build()); + GetPortFromInterfaceOutput result = portFromInterface.get().getResult(); + LOGGER.trace("getPortFromInterface rpc result is {} ", result); + if (result != null) { + LOGGER.trace("getPortFromInterface rpc result is {} {} ", result.getDpid(), result.getPortno()); + } + return result; } private String getInterfaceName(NodeConnectorRef ref, Metadata metadata, DataBroker dataBroker2) throws Throwable { - LOGGER.debug("metadata received is {} ", metadata); + LOGGER.debug("metadata received is {} ", metadata); - GetInterfaceFromIfIndexInputBuilder ifIndexInputBuilder = new GetInterfaceFromIfIndexInputBuilder(); - BigInteger lportTag = MetaDataUtil.getLportFromMetadata(metadata.getMetadata()); + GetInterfaceFromIfIndexInputBuilder ifIndexInputBuilder = new GetInterfaceFromIfIndexInputBuilder(); + BigInteger lportTag = MetaDataUtil.getLportFromMetadata(metadata.getMetadata()); - ifIndexInputBuilder.setIfIndex(lportTag.intValue()); - GetInterfaceFromIfIndexInput input = ifIndexInputBuilder.build(); - OdlInterfaceRpcService intfRpc = getInterfaceRpcService(); + ifIndexInputBuilder.setIfIndex(lportTag.intValue()); + GetInterfaceFromIfIndexInput input = ifIndexInputBuilder.build(); + OdlInterfaceRpcService intfRpc = getInterfaceRpcService(); - Future> interfaceFromIfIndex = intfRpc.getInterfaceFromIfIndex(input); - GetInterfaceFromIfIndexOutput interfaceFromIfIndexOutput = interfaceFromIfIndex.get().getResult(); + Future> interfaceFromIfIndex = intfRpc.getInterfaceFromIfIndex(input); + GetInterfaceFromIfIndexOutput interfaceFromIfIndexOutput = interfaceFromIfIndex.get().getResult(); return interfaceFromIfIndexOutput.getInterfaceName(); - } + } class MacResponderTask implements Runnable { ARP arp; diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceManagerCommonUtils.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceManagerCommonUtils.java index 5fb0f89a..6339f5f3 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceManagerCommonUtils.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceManagerCommonUtils.java @@ -96,6 +96,7 @@ public class InterfaceManagerCommonUtils { } public static void makeTunnelIngressFlow(List> futures, IMdsalApiManager mdsalApiManager, IfTunnel tunnel, BigInteger dpnId, long portNo, Interface iface, int ifIndex, int addOrRemoveFlow) { + LOG.debug("make tunnel ingress flow for {}",iface.getName()); String flowRef = InterfaceManagerCommonUtils.getTunnelInterfaceFlowRef(dpnId, NwConstants.VLAN_INTERFACE_INGRESS_TABLE, iface.getName()); List matches = new ArrayList(); List mkInstructions = new ArrayList(); @@ -173,30 +174,6 @@ public class InterfaceManagerCommonUtils { t.put(LogicalDatastoreType.CONFIGURATION, intfId, entryBuilder.build(),true); } - /*public static void updateStateEntry(Interface interfaceInfo, DataBroker dataBroker, WriteTransaction transaction, - org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState) { - String ncStr = ifState.getLowerLayerIf().get(0); - NodeConnectorId nodeConnectorId = new NodeConnectorId(ncStr); - NodeConnector nodeConnector = - InterfaceManagerCommonUtils.getNodeConnectorFromInventoryOperDS(nodeConnectorId, dataBroker); - if(nodeConnector != null) { - FlowCapableNodeConnector flowCapableNodeConnector = - nodeConnector.getAugmentation(FlowCapableNodeConnector.class); - //State state = flowCapableNodeConnector.getState(); - org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus operStatus = - flowCapableNodeConnector == null ? org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus.Down : org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus.Up; - - if (ifState.getOperStatus() != operStatus) { - InstanceIdentifier ifStateId = - IfmUtil.buildStateInterfaceId(interfaceInfo.getName()); - InterfaceBuilder ifaceBuilder = new InterfaceBuilder(); - ifaceBuilder.setOperStatus(operStatus); - ifaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(interfaceInfo.getName())); - transaction.merge(LogicalDatastoreType.OPERATIONAL, ifStateId, ifaceBuilder.build()); - } - } - }*/ - public static org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus updateStateEntry(Interface interfaceNew, DataBroker dataBroker, WriteTransaction transaction, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState) { @@ -226,6 +203,7 @@ public class InterfaceManagerCommonUtils { public static void updateOperStatus(String interfaceName, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus operStatus, WriteTransaction transaction) { + LOG.debug("updating operational status for interface {}",interfaceName); InstanceIdentifier ifChildStateId = IfmUtil.buildStateInterfaceId(interfaceName); InterfaceBuilder ifaceBuilderChild = new InterfaceBuilder(); @@ -236,6 +214,7 @@ public class InterfaceManagerCommonUtils { public static void addStateEntry(String interfaceName, WriteTransaction transaction, DataBroker dataBroker, IdManagerService idManager, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState) { + LOG.debug("adding interface state for {}",interfaceName); org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus operStatus = ifState.getOperStatus(); PhysAddress physAddress = ifState.getPhysAddress(); org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.AdminStatus adminStatus = ifState.getAdminStatus(); @@ -252,7 +231,6 @@ public class InterfaceManagerCommonUtils { IfmUtil.buildStateInterfaceId(interfaceName); List childLowerLayerIfList = new ArrayList<>(); childLowerLayerIfList.add(0, nodeConnectorId.getValue()); - //childLowerLayerIfList.add(1, interfaceName); InterfaceBuilder ifaceBuilder = new InterfaceBuilder().setAdminStatus(adminStatus) .setOperStatus(operStatus).setPhysAddress(physAddress).setLowerLayerIf(childLowerLayerIfList); @@ -262,7 +240,7 @@ public class InterfaceManagerCommonUtils { if(interfaceInfo != null){ ifaceBuilder.setType(interfaceInfo.getType()); } - ifaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(interfaceInfo.getName())); + ifaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(interfaceName)); transaction.put(LogicalDatastoreType.OPERATIONAL, ifStateId, ifaceBuilder.build(), true); // create lportTag Interface Map @@ -282,6 +260,7 @@ public class InterfaceManagerCommonUtils { PhysAddress physAddress, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus operStatus, org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.AdminStatus adminStatus, NodeConnectorId nodeConnectorId) { + LOG.debug("adding interface state for {}",portName); if (interfaceInfo != null && !interfaceInfo.isEnabled()) { operStatus = org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus.Down; } @@ -289,7 +268,6 @@ public class InterfaceManagerCommonUtils { IfmUtil.buildStateInterfaceId(portName); List childLowerLayerIfList = new ArrayList<>(); childLowerLayerIfList.add(0, nodeConnectorId.getValue()); - //childLowerLayerIfList.add(1, interfaceInfo.getName()); InterfaceBuilder ifaceBuilder = new InterfaceBuilder().setAdminStatus(adminStatus) .setOperStatus(operStatus).setPhysAddress(physAddress).setLowerLayerIf(childLowerLayerIfList); @@ -309,6 +287,7 @@ public class InterfaceManagerCommonUtils { } public static void deleteStateEntry(String interfaceName, WriteTransaction transaction) { + LOG.debug("removing interface state for {}",interfaceName); InstanceIdentifier ifChildStateId = IfmUtil.buildStateInterfaceId(interfaceName); transaction.delete(LogicalDatastoreType.OPERATIONAL, ifChildStateId); diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceMetaUtils.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceMetaUtils.java index 3ce243cd..797e5597 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceMetaUtils.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceMetaUtils.java @@ -41,12 +41,15 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.met import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007.bridge.ref.info.BridgeRefEntryKey; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPoint; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.math.BigInteger; import java.util.ArrayList; import java.util.List; public class InterfaceMetaUtils { + private static final Logger LOG = LoggerFactory.getLogger(InterfaceMetaUtils.class); public static InstanceIdentifier getBridgeRefEntryIdentifier(BridgeRefEntryKey bridgeRefEntryKey) { InstanceIdentifier.InstanceIdentifierBuilder bridgeRefEntryInstanceIdentifierBuilder = InstanceIdentifier.builder(BridgeRefInfo.class) @@ -165,6 +168,7 @@ public class InterfaceMetaUtils { } public static void createLportTagInterfaceMap(WriteTransaction t, String infName, Integer ifIndex) { + LOG.debug("creating lport tag to interface map for {}",infName); InstanceIdentifier id = InstanceIdentifier.builder(IfIndexesInterfaceMap.class).child(IfIndexInterface.class, new IfIndexInterfaceKey(ifIndex)).build(); IfIndexInterface ifIndexInterface = new IfIndexInterfaceBuilder().setIfIndex(ifIndex).setKey(new IfIndexInterfaceKey(ifIndex)).setInterfaceName(infName).build(); t.put(LogicalDatastoreType.OPERATIONAL, id, ifIndexInterface, true); @@ -174,6 +178,7 @@ public class InterfaceMetaUtils { InstanceIdentifier id = InstanceIdentifier.builder(IfIndexesInterfaceMap.class).child(IfIndexInterface.class, new IfIndexInterfaceKey(ifIndex)).build(); Optional ifIndexesInterface = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, id, broker); if(ifIndexesInterface.isPresent()) { + LOG.debug("removing lport tag to interface map for {}",infName); t.delete(LogicalDatastoreType.OPERATIONAL, id); } IfmUtil.releaseId(idManager, IfmConstants.IFM_IDPOOL_NAME, infName); diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/listeners/InterfaceConfigListener.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/listeners/InterfaceConfigListener.java index 24c72e55..dec2f154 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/listeners/InterfaceConfigListener.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/listeners/InterfaceConfigListener.java @@ -64,21 +64,7 @@ public class InterfaceConfigListener extends AsyncDataTreeChangeListenerBase key, Interface interfaceOld) { LOG.debug("Received Interface Remove Event: {}, {}", key, interfaceOld); String ifName = interfaceOld.getName(); - String parentInterface = null; - ParentRefs parentRefs = interfaceOld.getAugmentation(ParentRefs.class); - /* parentInterface = parentRefs.getParentInterface(); - if (parentInterface != null && !parentInterface.equals(ifName)) { - return; - } - if (parentRefs.getDatapathNodeIdentifier() == null) { - return; - } - if(parentInterface == null){ - LOG.error("parent interface not specified for {}",interfaceOld.getName()); - } - }*/ - DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance(); RendererConfigRemoveWorker configWorker = new RendererConfigRemoveWorker(key, interfaceOld, ifName, parentRefs); coordinator.enqueueJob(ifName, configWorker); @@ -88,18 +74,6 @@ public class InterfaceConfigListener extends AsyncDataTreeChangeListenerBase key, Interface interfaceOld, Interface interfaceNew) { LOG.debug("Received Interface Update Event: {}, {}, {}", key, interfaceOld, interfaceNew); String ifNameNew = interfaceNew.getName(); - String parentInterface = null; - - /*ParentRefs parentRefs = interfaceNew.getAugmentation(ParentRefs.class); - if (parentRefs == null) { - LOG.error("parent refs not specified for {}",interfaceNew.getName()); - } - - if (parentInterface == null) { - LOG.error("parent interface not specified for {}",interfaceOld.getName()); - return; - }*/ - DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance(); RendererConfigUpdateWorker worker = new RendererConfigUpdateWorker(key, interfaceOld, interfaceNew, ifNameNew); coordinator.enqueueJob(ifNameNew, worker); @@ -109,17 +83,10 @@ public class InterfaceConfigListener extends AsyncDataTreeChangeListenerBase key, Interface interfaceNew) { LOG.debug("Received Interface Add Event: {}, {}", key, interfaceNew); String ifName = interfaceNew.getName(); - String parentInterface = null; - ParentRefs parentRefs = interfaceNew.getAugmentation(ParentRefs.class); if (parentRefs == null) { LOG.error("parent refs not specified for {}",interfaceNew.getName()); } - - /*if(parentInterface == null){ - LOG.error("parent interface not specified for {}",interfaceNew.getName()); - }*/ - DataStoreJobCoordinator coordinator = DataStoreJobCoordinator.getInstance(); RendererConfigAddWorker configWorker = new RendererConfigAddWorker(key, interfaceNew, parentRefs, ifName); coordinator.enqueueJob(ifName, configWorker); diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigAddHelper.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigAddHelper.java index c22ce3bb..e98e6d6a 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigAddHelper.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigAddHelper.java @@ -69,6 +69,7 @@ public class OvsInterfaceConfigAddHelper { if (ifL2vlan == null || IfL2vlan.L2vlanMode.Trunk != ifL2vlan.getL2vlanMode()) { return; } + LOG.debug("adding vlan configuration for {}",interfaceNew.getName()); WriteTransaction transaction = dataBroker.newWriteOnlyTransaction(); InterfaceManagerCommonUtils.createInterfaceChildEntry(transaction, parentRefs.getParentInterface(), interfaceNew.getName()); @@ -77,6 +78,7 @@ public class OvsInterfaceConfigAddHelper { InterfaceManagerCommonUtils.getInterfaceStateFromOperDS(parentRefs.getParentInterface(), dataBroker); if (ifState == null) { + LOG.debug("could not retrieve interface state corresponding to {}",interfaceNew.getName()); futures.add(transaction.submit()); return; } @@ -87,6 +89,7 @@ public class OvsInterfaceConfigAddHelper { InterfaceParentEntry interfaceParentEntry = InterfaceMetaUtils.getInterfaceParentEntryFromConfigDS(interfaceParentEntryKey, dataBroker); if (interfaceParentEntry == null || interfaceParentEntry.getInterfaceChildEntry() == null) { + LOG.debug("could not retrieve interface parent info for {}",interfaceNew.getName()); futures.add(transaction.submit()); return; } diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigRemoveHelper.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigRemoveHelper.java index 765aaea1..64e79571 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigRemoveHelper.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigRemoveHelper.java @@ -76,6 +76,7 @@ public class OvsInterfaceConfigRemoveHelper { } private static void removeVlanConfiguration(DataBroker dataBroker, ParentRefs parentRefs, Interface interfaceOld, WriteTransaction transaction) { + LOG.debug("removing vlan configuration for {}",interfaceOld.getName()); IfL2vlan ifL2vlan = interfaceOld.getAugmentation(IfL2vlan.class); if (ifL2vlan == null || ifL2vlan.getL2vlanMode() != IfL2vlan.L2vlanMode.Trunk) { return; @@ -83,6 +84,7 @@ public class OvsInterfaceConfigRemoveHelper { org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState = InterfaceManagerCommonUtils.getInterfaceStateFromOperDS(interfaceOld.getName(), dataBroker); if (ifState == null) { + LOG.debug("could not fetch interface state corresponding to {}",interfaceOld.getName()); return; } @@ -101,6 +103,7 @@ public class OvsInterfaceConfigRemoveHelper { //FIXME: If the no. of child entries exceeds 100, perform txn updates in batches of 100. for (InterfaceChildEntry interfaceChildEntry : interfaceParentEntry.getInterfaceChildEntry()) { + LOG.debug("removing interface state for vlan trunk member {}",interfaceChildEntry.getChildInterface()); InterfaceManagerCommonUtils.deleteStateEntry(interfaceChildEntry.getChildInterface(), transaction); FlowBasedServicesUtils.removeIngressFlow(interfaceChildEntry.getChildInterface(), dpId, transaction); } @@ -110,7 +113,7 @@ public class OvsInterfaceConfigRemoveHelper { DataBroker dataBroker, Interface interfaceOld, IdManagerService idManager, IMdsalApiManager mdsalApiManager, List> futures) { - + LOG.debug("removing tunnel configuration for {}",interfaceOld.getName()); WriteTransaction t = dataBroker.newWriteOnlyTransaction(); BigInteger dpId = null; if (parentRefs != null) { @@ -128,12 +131,14 @@ public class OvsInterfaceConfigRemoveHelper { InterfaceMetaUtils.getBridgeRefEntryFromOperDS(bridgeRefEntryIid, dataBroker); if (bridgeRefEntry != null) { + LOG.debug("removing termination point for {}",interfaceOld.getName()); InstanceIdentifier bridgeIid = bridgeRefEntry.getBridgeReference().getValue(); InstanceIdentifier tpIid = SouthboundUtils.createTerminationPointInstanceIdentifier( InstanceIdentifier.keyOf(bridgeIid.firstIdentifierOf(Node.class)), interfaceOld.getName()); t.delete(LogicalDatastoreType.CONFIGURATION, tpIid); // delete tunnel ingress flow + LOG.debug("removing tunnel ingress flow for {}",interfaceOld.getName()); NodeConnectorId ncId = IfmUtil.getNodeConnectorIdFromInterface(interfaceOld, dataBroker); long portNo = Long.valueOf(IfmUtil.getPortNoFromNodeConnectorId(ncId)); InterfaceManagerCommonUtils.makeTunnelIngressFlow(futures, mdsalApiManager, diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsVlanMemberConfigAddHelper.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsVlanMemberConfigAddHelper.java index 92b60e6f..c4e7a9db 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsVlanMemberConfigAddHelper.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsVlanMemberConfigAddHelper.java @@ -41,6 +41,7 @@ public class OvsVlanMemberConfigAddHelper { public static List> addConfiguration(DataBroker dataBroker, ParentRefs parentRefs, Interface interfaceNew, IfL2vlan ifL2vlan, IdManagerService idManager) { + LOG.debug("add vlan member configuration {}",interfaceNew.getName()); List> futures = new ArrayList<>(); WriteTransaction t = dataBroker.newWriteOnlyTransaction(); @@ -66,6 +67,7 @@ public class OvsVlanMemberConfigAddHelper { org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState = InterfaceManagerCommonUtils.getInterfaceStateFromOperDS(parentRefs.getParentInterface(), dataBroker); if (ifState != null) { + LOG.debug("add interface state info for vlan member {}",interfaceNew.getName()); OperStatus operStatus = ifState.getOperStatus(); AdminStatus adminStatus = ifState.getAdminStatus(); PhysAddress physAddress = ifState.getPhysAddress(); diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsVlanMemberConfigRemoveHelper.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsVlanMemberConfigRemoveHelper.java index af064569..25d9c20b 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsVlanMemberConfigRemoveHelper.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsVlanMemberConfigRemoveHelper.java @@ -38,6 +38,7 @@ public class OvsVlanMemberConfigRemoveHelper { public static List> removeConfiguration(DataBroker dataBroker, ParentRefs parentRefs, Interface interfaceOld, IfL2vlan ifL2vlan, IdManagerService idManager) { + LOG.debug("remove vlan member configuration {}",interfaceOld.getName()); List> futures = new ArrayList<>(); WriteTransaction t = dataBroker.newWriteOnlyTransaction(); @@ -53,7 +54,8 @@ public class OvsVlanMemberConfigRemoveHelper { List interfaceChildEntries = interfaceParentEntry.getInterfaceChildEntry(); if (interfaceChildEntries.size() <= 1) { - t.delete(LogicalDatastoreType.CONFIGURATION, interfaceParentEntryIid); + // FIXME..some boundary problem during vlan member deletion..need to revisit + //t.delete(LogicalDatastoreType.CONFIGURATION, interfaceParentEntryIid); } else { InterfaceChildEntryKey interfaceChildEntryKey = new InterfaceChildEntryKey(interfaceOld.getName()); InstanceIdentifier interfaceChildEntryIid = @@ -88,6 +90,7 @@ public class OvsVlanMemberConfigRemoveHelper { } } */ + LOG.debug("delete vlan member interface state {}",interfaceOld.getName()); String ncStr = ifState.getLowerLayerIf().get(0); NodeConnectorId nodeConnectorId = new NodeConnectorId(ncStr); BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId)); diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/statehelpers/OvsInterfaceStateRemoveHelper.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/statehelpers/OvsInterfaceStateRemoveHelper.java index 65cc3e3e..e44694ea 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/statehelpers/OvsInterfaceStateRemoveHelper.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/statehelpers/OvsInterfaceStateRemoveHelper.java @@ -116,7 +116,7 @@ public class OvsInterfaceStateRemoveHelper { IfmUtil.buildStateInterfaceId(interfaceChildEntry.getChildInterface()); /* Remove entry from if-index-interface-name map and deallocate Id from Idmanager. */ Interface childInterfaceState = InterfaceManagerCommonUtils.getInterfaceStateFromOperDS(interfaceChildEntry.getChildInterface(), dataBroker); - if (interfaceState != null) { + if (childInterfaceState != null) { InterfaceMetaUtils.removeLportTagInterfaceMap(transaction, idManager, dataBroker, childInterfaceState.getName(), childInterfaceState.getIfIndex()); transaction.delete(LogicalDatastoreType.OPERATIONAL, ifChildStateId); FlowBasedServicesUtils.removeIngressFlow(childInterfaceState.getName(), dpId, transaction); diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/servicebindings/flowbased/statehelpers/FlowBasedServicesStateUnbindHelper.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/servicebindings/flowbased/statehelpers/FlowBasedServicesStateUnbindHelper.java index f422f0ea..ede481e1 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/servicebindings/flowbased/statehelpers/FlowBasedServicesStateUnbindHelper.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/servicebindings/flowbased/statehelpers/FlowBasedServicesStateUnbindHelper.java @@ -52,9 +52,9 @@ public class FlowBasedServicesStateUnbindHelper { org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface iface = InterfaceManagerCommonUtils.getInterfaceFromConfigDS(interfaceKey, dataBroker); - if (iface.getType().isAssignableFrom(L2vlan.class)) { + if (ifaceState.getType().isAssignableFrom(L2vlan.class)) { return unbindServiceOnVlan(allServices, iface, ifaceState.getIfIndex(), dataBroker); - } else if (iface.getType().isAssignableFrom(Tunnel.class)){ + } else if (ifaceState.getType().isAssignableFrom(Tunnel.class)){ return unbindServiceOnTunnel(allServices, iface, ifaceState.getIfIndex(), dataBroker); } return futures; diff --git a/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/FlowBasedServicesStateConfigurationTest.java b/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/FlowBasedServicesStateConfigurationTest.java index 578cd949..84efb227 100644 --- a/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/FlowBasedServicesStateConfigurationTest.java +++ b/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/FlowBasedServicesStateConfigurationTest.java @@ -20,6 +20,7 @@ import org.opendaylight.vpnservice.interfacemgr.servicebindings.flowbased.stateh import org.opendaylight.vpnservice.interfacemgr.servicebindings.flowbased.statehelpers.FlowBasedServicesStateUnbindHelper; import org.opendaylight.vpnservice.mdsalutil.*; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.iana._if.type.rev140508.L2vlan; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.InterfaceType; 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.state.Interface.OperStatus; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowId; @@ -34,6 +35,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.serviceb import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.servicebinding.rev151015.service.bindings.ServicesInfoKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.servicebinding.rev151015.service.bindings.services.info.BoundServices; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.servicebinding.rev151015.service.bindings.services.info.BoundServicesKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.IfL2vlan; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.TunnelTypeGre; import org.opendaylight.yangtools.concepts.ListenerRegistration; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @@ -101,7 +103,7 @@ public class FlowBasedServicesStateConfigurationTest { .setIfIndex(ifIndexval) .setLowerLayerIf(lowerLayerIfList) .setKey(IfmUtil.getStateInterfaceKeyFromName(InterfaceManagerTestUtil.interfaceName)) - .setName(InterfaceManagerTestUtil.interfaceName); + .setName(InterfaceManagerTestUtil.interfaceName).setType(interfaceEnabled.getType()); stypeOpenflow = InterfaceManagerTestUtil.buildStypeOpenflow(dpId,flowpriority, NwConstants.LPORT_DISPATCHER_TABLE, instructions); instructionKey = new InstructionKey(instructionKeyval); BigInteger[] metadataValues = IfmUtil.mergeOpenflowMetadataWriteInstructions(instructions); -- 2.36.6