Bug 5182 - Customized name support for VLAN trunk should be supported 08/34208/1
authorFaseela K <faseela.k@ericsson.com>
Fri, 5 Feb 2016 19:22:27 +0000 (00:52 +0530)
committerFaseela K <faseela.k@ericsson.com>
Sat, 6 Feb 2016 08:17:25 +0000 (08:17 +0000)
Description : Code clean up , fixing NPEs and adding more debug logs
Signed-off-by: Faseela K <faseela.k@ericsson.com>
Change-Id: Ia16602f7e88f7d1d39591247d1b4104dd82c4d34
Signed-off-by: Faseela K <faseela.k@ericsson.com>
(cherry picked from commit d27dda6e70f5fa31d518aced0010aa48fe5884a7)

arputil/arputil-impl/src/main/java/org/opendaylight/vpnservice/arputil/internal/ArpUtilImpl.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceManagerCommonUtils.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceMetaUtils.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/listeners/InterfaceConfigListener.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigAddHelper.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsInterfaceConfigRemoveHelper.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsVlanMemberConfigAddHelper.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/confighelpers/OvsVlanMemberConfigRemoveHelper.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/statehelpers/OvsInterfaceStateRemoveHelper.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/servicebindings/flowbased/statehelpers/FlowBasedServicesStateUnbindHelper.java
interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/FlowBasedServicesStateConfigurationTest.java

index 8128d9156ba42ad9944c54d2a074ace90b10949e..eaf075589d2c8e89113061c474ff210c0ad2b1e6 100644 (file)
@@ -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<RpcResult<GetPortFromInterfaceOutput>> 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<RpcResult<GetPortFromInterfaceOutput>> 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<RpcResult<GetInterfaceFromIfIndexOutput>> interfaceFromIfIndex = intfRpc.getInterfaceFromIfIndex(input);
-               GetInterfaceFromIfIndexOutput interfaceFromIfIndexOutput = interfaceFromIfIndex.get().getResult();
+        Future<RpcResult<GetInterfaceFromIfIndexOutput>> interfaceFromIfIndex = intfRpc.getInterfaceFromIfIndex(input);
+        GetInterfaceFromIfIndexOutput interfaceFromIfIndexOutput = interfaceFromIfIndex.get().getResult();
         return interfaceFromIfIndexOutput.getInterfaceName();
-       }
+    }
 
        class MacResponderTask implements Runnable {
         ARP arp;
index 5fb0f89ae36a746bcd05b07ee2bc4ab21f82a5d6..6339f5f3c6db8d09062fa61838a3f709c0138dd6 100644 (file)
@@ -96,6 +96,7 @@ public class InterfaceManagerCommonUtils {
     }
     public static void makeTunnelIngressFlow(List<ListenableFuture<Void>> 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<MatchInfo> matches = new ArrayList<MatchInfo>();
         List<InstructionInfo> mkInstructions = new ArrayList<InstructionInfo>();
@@ -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<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> 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<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> 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<String> 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<String> 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<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> ifChildStateId =
                 IfmUtil.buildStateInterfaceId(interfaceName);
         transaction.delete(LogicalDatastoreType.OPERATIONAL, ifChildStateId);
index 3ce243cde34db7a59ef4ef89ba134d25c9db7286..797e5597c73e737e9f1bd36b8b61af0a3781727a 100644 (file)
@@ -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<BridgeRefEntry> getBridgeRefEntryIdentifier(BridgeRefEntryKey bridgeRefEntryKey) {
         InstanceIdentifier.InstanceIdentifierBuilder<BridgeRefEntry> 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<IfIndexInterface> 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<IfIndexInterface> id = InstanceIdentifier.builder(IfIndexesInterfaceMap.class).child(IfIndexInterface.class, new IfIndexInterfaceKey(ifIndex)).build();
         Optional<IfIndexInterface> 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);
index 24c72e55551c950b21a8acb5cb3b6bb727458e6d..dec2f154376efe43edd36f848aa56bfd688b2cec 100644 (file)
@@ -64,21 +64,7 @@ public class InterfaceConfigListener extends AsyncDataTreeChangeListenerBase<Int
     protected void remove(InstanceIdentifier<Interface> 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<Int
     protected void update(InstanceIdentifier<Interface> 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<Int
     protected void add(InstanceIdentifier<Interface> 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);
index c22ce3bb068654dc07b86b49690773a38e0e2598..e98e6d6aec0c69e1085085881ed48763df172ec8 100644 (file)
@@ -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;
         }
index 765aaea17085b5d08818a671538ae52754e1761c..64e7957139d3001f3e1a5932f3408623b3bf5ec0 100644 (file)
@@ -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<ListenableFuture<Void>> 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<TerminationPoint> 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,
index 92b60e6f6b9bbe161e2ff4b1e006b6da142a9285..c4e7a9dbd632709f7649f330bdbef27ee6f2f746 100644 (file)
@@ -41,6 +41,7 @@ public class OvsVlanMemberConfigAddHelper {
     public static List<ListenableFuture<Void>> addConfiguration(DataBroker dataBroker, ParentRefs parentRefs,
                                                                 Interface interfaceNew, IfL2vlan ifL2vlan,
                                                                 IdManagerService idManager) {
+        LOG.debug("add vlan member configuration {}",interfaceNew.getName());
         List<ListenableFuture<Void>> 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();
index af0645691c50b7d3bdcd951971d30aa0c84c10c6..25d9c20b0e717b40a6be9c5d14032869894cb87b 100644 (file)
@@ -38,6 +38,7 @@ public class OvsVlanMemberConfigRemoveHelper {
     public static List<ListenableFuture<Void>> removeConfiguration(DataBroker dataBroker, ParentRefs parentRefs,
                                                                 Interface interfaceOld, IfL2vlan ifL2vlan,
                                                                 IdManagerService idManager) {
+        LOG.debug("remove vlan member configuration {}",interfaceOld.getName());
         List<ListenableFuture<Void>> futures = new ArrayList<>();
         WriteTransaction t = dataBroker.newWriteOnlyTransaction();
 
@@ -53,7 +54,8 @@ public class OvsVlanMemberConfigRemoveHelper {
 
         List<InterfaceChildEntry> 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<InterfaceChildEntry> 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));
index 65cc3e3e0dd771cbba7d96c73ca337c9853279df..e44694eae42deea6e85e664fac7ea7c0f1352baa 100644 (file)
@@ -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);
index f422f0eae47f1be8864a7d55ac28ed8b694419e0..ede481e1e88eee26fc6f127d475b73e8bf8b3ea3 100644 (file)
@@ -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;
index 578cd949eb959ed0fc44803ff830f474322c899b..84efb2277c41e3fd1133acb633b18bc37759c934 100644 (file)
@@ -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);