Bug 5334 : Delete ELANport , ELAN instance VLAN and re-create 14/36314/2
authorFaseela K <faseela.k@ericsson.com>
Fri, 4 Mar 2016 06:41:06 +0000 (12:11 +0530)
committerFaseela K <faseela.k@ericsson.com>
Wed, 16 Mar 2016 18:40:41 +0000 (00:10 +0530)
same does not program flows

Description : deleting trunk interfaces were programming the interface
operational status as down, and upon recreating the interface the state
was not updated back. Because of this none of the application flows were
programmed since they listen for interface operational state up event

Change-Id: Ib56277ef32a5f16c0db7246543791ab9a9fb7571
Signed-off-by: Faseela K <faseela.k@ericsson.com>
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/IfmUtil.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/OvsVlanMemberConfigRemoveHelper.java
interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/renderer/ovs/statehelpers/OvsInterfaceStateRemoveHelper.java
interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/StateInterfaceTest.java
interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/VlanInterfaceConfigurationTest.java

index 894189c9f83f496faa62f1a322d8f4d55cbe8e17..0cd1a718c0a0d5888614e969ba41dff6ab1d118c 100644 (file)
@@ -70,6 +70,24 @@ public class IfmUtil {
         return split[1];
     }
 
+    public static BigInteger getDpnFromInterface(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState){
+        NodeConnectorId ncId = getNodeConnectorIdFromInterface(ifState);
+        if(ncId != null){
+            return new BigInteger(getDpnFromNodeConnectorId(ncId));
+        }
+        return null;
+    }
+    public static String getPortNoFromInterfaceName(String ifaceName, DataBroker broker) {
+        org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState =
+                InterfaceManagerCommonUtils.getInterfaceStateFromOperDS(ifaceName, broker);
+
+        String lowerLayerIf = ifState.getLowerLayerIf().get(0);
+        NodeConnectorId nodeConnectorId = new NodeConnectorId(lowerLayerIf);
+        String portNo = IfmUtil.getPortNoFromNodeConnectorId(nodeConnectorId);
+
+        return portNo;
+    }
+
     public static String getPortNoFromNodeConnectorId(NodeConnectorId portId) {
         /*
          * NodeConnectorId is of form 'openflow:dpnid:portnum'
index fe92920478682621050574990b936134d2af373e..1f1cc9cfe9f17444300c293d81ac866dd76254e3 100644 (file)
@@ -88,9 +88,9 @@ public class OvsInterfaceConfigRemoveHelper {
             return;
         }
 
-        InterfaceManagerCommonUtils.updateOperStatus(interfaceOld.getName(), OperStatus.Down, transaction);
-        NodeConnectorId ncId = new NodeConnectorId(ifState.getLowerLayerIf().get(0));
-        BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(ncId));
+        InterfaceManagerCommonUtils.deleteStateEntry(interfaceOld.getName(), transaction);
+
+        BigInteger dpId = IfmUtil.getDpnFromInterface(ifState);
         FlowBasedServicesUtils.removeIngressFlow(interfaceOld.getName(), dpId, transaction);
         InterfaceManagerCommonUtils.deleteParentInterfaceEntry(transaction, parentRefs.getParentInterface());
         // For Vlan-Trunk Interface, remove the trunk-member operstates as well...
index d66147e100765eb40a640997bc1a9b596af7550c..83eab5a29cb19bb833d75ad24e78b0037fa7503f 100644 (file)
@@ -91,9 +91,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));
+            BigInteger dpId = IfmUtil.getDpnFromInterface(ifState);
             InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface> ifStateId =
                     IfmUtil.buildStateInterfaceId(interfaceOld.getName());
             t.delete(LogicalDatastoreType.OPERATIONAL, ifStateId);
index 6947f4026a1ad25f441feec86da9bdf4f689ca1c..9360c57059e16cc625c7cc5bf6d0b2c49ed312ad 100644 (file)
@@ -56,13 +56,10 @@ public class OvsInterfaceStateRemoveHelper {
         WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
 
         InstanceIdentifier<Interface> ifStateId = IfmUtil.buildStateInterfaceId(portName);
-        /* Remove entry from if-index-interface-name map and deallocate Id from Idmanager. */
+
+        // delete the port entry from interface operational DS
         org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface interfaceState =
                 InterfaceManagerCommonUtils.getInterfaceStateFromOperDS(portName, dataBroker);
-        if(interfaceState != null) {
-            InterfaceMetaUtils.removeLportTagInterfaceMap(transaction, idManager, dataBroker, interfaceState.getName(), interfaceState.getIfIndex());
-        }
-
         transaction.delete(LogicalDatastoreType.OPERATIONAL, ifStateId);
 
         InterfaceKey interfaceKey = new InterfaceKey(portName);
index 894713a69b35d7d47aaf195dc8fb78d711a0bf24..14a94450802f545b624af8d64230e9bc0299867c 100644 (file)
@@ -182,7 +182,6 @@ public class StateInterfaceTest {
         removeHelper.removeState(idManager, mdsalManager, alivenessMonitorService, fcNodeConnectorId, dataBroker, InterfaceManagerTestUtil.interfaceName, fcNodeConnectorNew);
 
         verify(mockWriteTx).delete(LogicalDatastoreType.OPERATIONAL, interfaceStateIdentifier);
-        verify(mockWriteTx).delete(LogicalDatastoreType.OPERATIONAL, ifIndexId);
 
     }
     @Test
index b3ce8e90b52d49ff471d2c87ae62e123935e4459..0f61af1ff96a848cf5983b8233cc91c0faf0c253 100644 (file)
@@ -203,15 +203,10 @@ public class VlanInterfaceConfigurationTest {
         doReturn(Futures.immediateCheckedFuture(Optional.absent())).when(mockReadTx).read(
                 LogicalDatastoreType.CONFIGURATION, interfaceParentEntryIdentifier);
 
-        org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder ifaceBuilder = new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.InterfaceBuilder();
-        ifaceBuilder.setOperStatus(OperStatus.Down);
-        ifaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(vlanInterfaceEnabled.getName()));
-        stateInterface = ifaceBuilder.build();
-
         removeHelper.removeConfiguration(dataBroker,alivenessMonitorService, vlanInterfaceEnabled, idManager,
                 mdsalApiManager, vlanInterfaceEnabled.getAugmentation(ParentRefs.class));
 
         //verification
-        verify(mockWriteTx).merge(LogicalDatastoreType.OPERATIONAL, interfaceStateIdentifier, stateInterface);
+        verify(mockWriteTx).delete(LogicalDatastoreType.OPERATIONAL, interfaceStateIdentifier);
     }
 }