From 6e60a68cb870f5b237ce26a95d1ae78c233b4029 Mon Sep 17 00:00:00 2001 From: Faseela K Date: Fri, 4 Mar 2016 12:11:06 +0530 Subject: [PATCH] Bug 5334 : Delete ELANport , ELAN instance VLAN and re-create 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 --- .../vpnservice/interfacemgr/IfmUtil.java | 18 ++++++++++++++++++ .../OvsInterfaceConfigRemoveHelper.java | 6 +++--- .../OvsVlanMemberConfigRemoveHelper.java | 4 +--- .../OvsInterfaceStateRemoveHelper.java | 7 ++----- .../interfacemgr/test/StateInterfaceTest.java | 1 - .../test/VlanInterfaceConfigurationTest.java | 7 +------ 6 files changed, 25 insertions(+), 18 deletions(-) diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/IfmUtil.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/IfmUtil.java index 894189c9..0cd1a718 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/IfmUtil.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/IfmUtil.java @@ -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' 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 fe929204..1f1cc9cf 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 @@ -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... 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 d66147e1..83eab5a2 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 @@ -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 ifStateId = IfmUtil.buildStateInterfaceId(interfaceOld.getName()); t.delete(LogicalDatastoreType.OPERATIONAL, ifStateId); 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 6947f402..9360c570 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 @@ -56,13 +56,10 @@ public class OvsInterfaceStateRemoveHelper { WriteTransaction transaction = dataBroker.newWriteOnlyTransaction(); InstanceIdentifier 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); diff --git a/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/StateInterfaceTest.java b/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/StateInterfaceTest.java index 894713a6..14a94450 100644 --- a/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/StateInterfaceTest.java +++ b/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/StateInterfaceTest.java @@ -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 diff --git a/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/VlanInterfaceConfigurationTest.java b/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/VlanInterfaceConfigurationTest.java index b3ce8e90..0f61af1f 100644 --- a/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/VlanInterfaceConfigurationTest.java +++ b/interfacemgr/interfacemgr-impl/src/test/java/org/opendaylight/vpnservice/interfacemgr/test/VlanInterfaceConfigurationTest.java @@ -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); } } -- 2.36.6