X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=interfacemgr%2Finterfacemgr-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Finterfacemgr%2Frenderer%2Fovs%2Fconfighelpers%2FOvsInterfaceConfigRemoveHelper.java;h=9264b5b95a00cad3bc06f9666ed3056b804625f9;hb=63b42a3937b9ab3facfa83ac0fe954bf70ece35c;hp=bb55c4f7261ef361ef5583b84f39f3fe4fb6f903;hpb=00bba75836165a4ae7a90d8d12ba06512b0d6821;p=vpnservice.git 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 bb55c4f7..9264b5b9 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 @@ -13,9 +13,12 @@ import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; import org.opendaylight.idmanager.IdManager; import org.opendaylight.vpnservice.interfacemgr.IfmUtil; +import org.opendaylight.vpnservice.interfacemgr.commons.AlivenessMonitorUtils; import org.opendaylight.vpnservice.interfacemgr.commons.InterfaceManagerCommonUtils; import org.opendaylight.vpnservice.interfacemgr.commons.InterfaceMetaUtils; import org.opendaylight.vpnservice.interfacemgr.renderer.ovs.utilities.SouthboundUtils; +import org.opendaylight.vpnservice.mdsalutil.NwConstants; +import org.opendaylight.vpnservice.mdsalutil.interfaces.IMdsalApiManager; 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.InterfaceKey; import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface.OperStatus; @@ -23,6 +26,10 @@ import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces. import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNodeConnector; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.node.NodeConnector; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.alivenessmonitor.rev150629.AlivenessMonitorService; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.alivenessmonitor.rev150629.MonitorStopInput; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.alivenessmonitor.rev150629.MonitorStopInputBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.idmanager.rev150403.IdManagerService; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._interface.child.info.InterfaceParentEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._interface.child.info.InterfaceParentEntryKey; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._interface.child.info._interface.parent.entry.InterfaceChildEntry; @@ -48,23 +55,22 @@ import java.util.List; public class OvsInterfaceConfigRemoveHelper { private static final Logger LOG = LoggerFactory.getLogger(OvsInterfaceConfigRemoveHelper.class); - public static List> removeConfiguration(DataBroker dataBroker, Interface interfaceOld, - IdManager idManager, ParentRefs parentRefs) { + public static List> removeConfiguration(DataBroker dataBroker, AlivenessMonitorService alivenessMonitorService, + Interface interfaceOld, + IdManagerService idManager, + IMdsalApiManager mdsalApiManager, + ParentRefs parentRefs) { List> futures = new ArrayList<>(); WriteTransaction t = dataBroker.newWriteOnlyTransaction(); IfTunnel ifTunnel = interfaceOld.getAugmentation(IfTunnel.class); if (ifTunnel != null) { - removeTunnelConfiguration(parentRefs, dataBroker, interfaceOld, idManager, t); + removeTunnelConfiguration(alivenessMonitorService, parentRefs, dataBroker, interfaceOld, + idManager, mdsalApiManager, futures); + }else { + removeVlanConfiguration(dataBroker, interfaceOld, t); futures.add(t.submit()); - return futures; } - - removeVlanConfiguration(dataBroker, interfaceOld, t); - - /* FIXME: Deallocate ID from Idmanager. */ - - futures.add(t.submit()); return futures; } @@ -127,9 +133,12 @@ public class OvsInterfaceConfigRemoveHelper { } } - private static void removeTunnelConfiguration(ParentRefs parentRefs, DataBroker dataBroker, Interface interfaceOld, - IdManager idManager, WriteTransaction t) { + private static void removeTunnelConfiguration(AlivenessMonitorService alivenessMonitorService, ParentRefs parentRefs, + DataBroker dataBroker, Interface interfaceOld, + IdManagerService idManager, IMdsalApiManager mdsalApiManager, + List> futures) { + WriteTransaction t = dataBroker.newWriteOnlyTransaction(); BigInteger dpId = null; if (parentRefs != null) { dpId = parentRefs.getDatapathNodeIdentifier(); @@ -150,6 +159,15 @@ public class OvsInterfaceConfigRemoveHelper { InstanceIdentifier tpIid = SouthboundUtils.createTerminationPointInstanceIdentifier( InstanceIdentifier.keyOf(bridgeIid.firstIdentifierOf(Node.class)), interfaceOld.getName()); t.delete(LogicalDatastoreType.CONFIGURATION, tpIid); + + // delete tunnel ingress flow + org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.state.Interface ifState = InterfaceManagerCommonUtils.getInterfaceStateFromOperDS(interfaceOld.getName(), dataBroker); + NodeConnectorId ncId = IfmUtil.getNodeConnectorIdFromInterface(interfaceOld, dataBroker); + long portNo = Long.valueOf(IfmUtil.getPortNoFromNodeConnectorId(ncId)); + InterfaceManagerCommonUtils.makeTunnelIngressFlow(futures, mdsalApiManager, + interfaceOld.getAugmentation(IfTunnel.class), + dpId, portNo, interfaceOld, + NwConstants.DEL_FLOW); } BridgeEntryKey bridgeEntryKey = new BridgeEntryKey(dpId); @@ -174,5 +192,8 @@ public class OvsInterfaceConfigRemoveHelper { bridgeInterfaceEntryKey); t.delete(LogicalDatastoreType.CONFIGURATION, bridgeInterfaceEntryIid); } + futures.add(t.submit()); + // stop LLDP monitoring for the tunnel interface + AlivenessMonitorUtils.stopLLDPMonitoring(alivenessMonitorService, dataBroker, interfaceOld); } } \ No newline at end of file