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;fp=interfacemgr%2Finterfacemgr-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Finterfacemgr%2Frenderer%2Fovs%2Fconfighelpers%2FOvsInterfaceConfigRemoveHelper.java;h=765aaea17085b5d08818a671538ae52754e1761c;hb=658da81929c5b966b2261033339d0399e3436b49;hp=722db1aa8d526eb115dd7b9a68fdf8e04485fdd8;hpb=007910122eafb7ccfdfbdd2c48c6ec242c143c87;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 722db1aa..765aaea1 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 @@ -8,7 +8,6 @@ package org.opendaylight.vpnservice.interfacemgr.renderer.ovs.confighelpers; import com.google.common.util.concurrent.ListenableFuture; - import org.opendaylight.controller.md.sal.binding.api.DataBroker; import org.opendaylight.controller.md.sal.binding.api.WriteTransaction; import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; @@ -70,75 +69,40 @@ public class OvsInterfaceConfigRemoveHelper { removeTunnelConfiguration(alivenessMonitorService, parentRefs, dataBroker, interfaceOld, idManager, mdsalApiManager, futures); }else { - removeVlanConfiguration(dataBroker, interfaceOld, t); + removeVlanConfiguration(dataBroker, parentRefs, interfaceOld, t); futures.add(t.submit()); } return futures; } - private static void removeVlanConfiguration(DataBroker dataBroker, Interface interfaceOld, WriteTransaction t) { - 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) { - return; - } - - 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(); - OperStatus operStatus = flowCapableNodeConnector == null ? OperStatus.Down : OperStatus.Up; - - if (ifState.getOperStatus() != operStatus) { - InstanceIdentifier ifStateId = - IfmUtil.buildStateInterfaceId(interfaceOld.getName()); - InterfaceBuilder ifaceBuilder = new InterfaceBuilder(); - ifaceBuilder.setOperStatus(operStatus); - ifaceBuilder.setKey(IfmUtil.getStateInterfaceKeyFromName(interfaceOld.getName())); - t.merge(LogicalDatastoreType.OPERATIONAL, ifStateId, ifaceBuilder.build()); - } - } + private static void removeVlanConfiguration(DataBroker dataBroker, ParentRefs parentRefs, Interface interfaceOld, WriteTransaction transaction) { IfL2vlan ifL2vlan = interfaceOld.getAugmentation(IfL2vlan.class); - if (ifL2vlan == null) { + if (ifL2vlan == null || ifL2vlan.getL2vlanMode() != IfL2vlan.L2vlanMode.Trunk) { return; } - BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(nodeConnectorId)); - FlowBasedServicesUtils.removeIngressFlow(interfaceOld, dpId, t); - if (ifL2vlan.getL2vlanMode() != IfL2vlan.L2vlanMode.Trunk) { + 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) { return; } + InterfaceManagerCommonUtils.updateOperStatus(interfaceOld.getName(), OperStatus.Down, transaction); + NodeConnectorId ncId = new NodeConnectorId(ifState.getLowerLayerIf().get(0)); + BigInteger dpId = new BigInteger(IfmUtil.getDpnFromNodeConnectorId(ncId)); + FlowBasedServicesUtils.removeIngressFlow(interfaceOld.getName(), dpId, transaction); // For Vlan-Trunk Interface, remove the trunk-member operstates as well... - InterfaceKey interfaceKey = new InterfaceKey(interfaceOld.getName()); - org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface iface = - InterfaceManagerCommonUtils.getInterfaceFromConfigDS(interfaceKey, dataBroker); - if (iface == null) { - return; - } - InterfaceParentEntryKey interfaceParentEntryKey = new InterfaceParentEntryKey(iface.getName()); + InterfaceParentEntryKey interfaceParentEntryKey = new InterfaceParentEntryKey(interfaceOld.getName()); InterfaceParentEntry interfaceParentEntry = InterfaceMetaUtils.getInterfaceParentEntryFromConfigDS(interfaceParentEntryKey, dataBroker); - if (interfaceParentEntry == null) { - return; - } - - List interfaceChildEntries = interfaceParentEntry.getInterfaceChildEntry(); - if (interfaceChildEntries == null) { + if (interfaceParentEntry == null || interfaceParentEntry.getInterfaceChildEntry() == null) { return; } //FIXME: If the no. of child entries exceeds 100, perform txn updates in batches of 100. - for (InterfaceChildEntry interfaceChildEntry : interfaceChildEntries) { - InstanceIdentifier ifChildStateId = - IfmUtil.buildStateInterfaceId(interfaceChildEntry.getChildInterface()); - t.delete(LogicalDatastoreType.OPERATIONAL, ifChildStateId); - InterfaceKey childIfKey = new InterfaceKey(interfaceChildEntry.getChildInterface()); - FlowBasedServicesUtils.removeIngressFlow(InterfaceManagerCommonUtils.getInterfaceFromConfigDS(childIfKey, dataBroker), dpId, t); + for (InterfaceChildEntry interfaceChildEntry : interfaceParentEntry.getInterfaceChildEntry()) { + InterfaceManagerCommonUtils.deleteStateEntry(interfaceChildEntry.getChildInterface(), transaction); + FlowBasedServicesUtils.removeIngressFlow(interfaceChildEntry.getChildInterface(), dpId, transaction); } }