X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=interfacemgr%2Finterfacemgr-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fvpnservice%2Finterfacemgr%2Fcommons%2FInterfaceMetaUtils.java;h=82ff6cfbbae536604113d25236a25e921e0475e6;hb=bc9a454112d4456fe65538bb887b3c0be0e3b5bc;hp=797e5597c73e737e9f1bd36b8b61af0a3781727a;hpb=ee7fecc255770fcd4665b44da355df969bc8df4e;p=vpnservice.git diff --git a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceMetaUtils.java b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceMetaUtils.java index 797e5597..82ff6cfb 100644 --- a/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceMetaUtils.java +++ b/interfacemgr/interfacemgr-impl/src/main/java/org/opendaylight/vpnservice/interfacemgr/commons/InterfaceMetaUtils.java @@ -1,5 +1,5 @@ /* - * Copyright (c) 2015 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. + * Copyright (c) 2015 - 2016 Ericsson India Global Services Pvt Ltd. and others. All rights reserved. * * This program and the accompanying materials are made available under the * terms of the Eclipse Public License v1.0 which accompanies this distribution, @@ -8,22 +8,17 @@ package org.opendaylight.vpnservice.interfacemgr.commons; import com.google.common.base.Optional; -import com.google.common.util.concurrent.ListenableFuture; -import org.eclipse.xtend.lib.annotations.Data; 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; -import org.opendaylight.idmanager.IdManager; import org.opendaylight.vpnservice.interfacemgr.IfmConstants; import org.opendaylight.vpnservice.interfacemgr.IfmUtil; -import org.opendaylight.vpnservice.interfacemgr.renderer.ovs.utilities.SouthboundUtils; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.hwvtep.rev150901.hwvtep.physical._switch.attributes.Tunnels; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeAugmentation; import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbBridgeRef; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.idmanager.rev150403.IdManagerService; -import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007.BridgeInterfaceInfo; -import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007.BridgeRefInfo; -import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007.IfIndexesInterfaceMap; -import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007.InterfaceChildInfo; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007.*; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._if.indexes._interface.map.IfIndexInterface; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._if.indexes._interface.map.IfIndexInterfaceBuilder; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007._if.indexes._interface.map.IfIndexInterfaceKey; @@ -39,14 +34,17 @@ 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.BridgeRefEntry; import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007.bridge.ref.info.BridgeRefEntryBuilder; 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.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007.tunnel.instance._interface.map.TunnelInstanceInterface; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007.tunnel.instance._interface.map.TunnelInstanceInterfaceBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.meta.rev151007.tunnel.instance._interface.map.TunnelInstanceInterfaceKey; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.IfTunnel; +import org.opendaylight.yang.gen.v1.urn.opendaylight.vpnservice.interfacemgr.rev150331.ParentRefs; +import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; 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); @@ -67,12 +65,45 @@ public class InterfaceMetaUtils { return bridgeRefEntryOptional.get(); } + public static BridgeRefEntry getBridgeReferenceForInterface(Interface interfaceInfo, + DataBroker dataBroker) { + ParentRefs parentRefs = interfaceInfo.getAugmentation(ParentRefs.class); + BigInteger dpn = parentRefs.getDatapathNodeIdentifier(); + BridgeRefEntryKey BridgeRefEntryKey = new BridgeRefEntryKey(dpn); + InstanceIdentifier dpnBridgeEntryIid = getBridgeRefEntryIdentifier(BridgeRefEntryKey); + BridgeRefEntry bridgeRefEntry = getBridgeRefEntryFromOperDS(dpnBridgeEntryIid, dataBroker); + return bridgeRefEntry; + } + + public static boolean bridgeExists(BridgeRefEntry bridgeRefEntry, + DataBroker dataBroker) { + if (bridgeRefEntry != null && bridgeRefEntry.getBridgeReference() != null) { + InstanceIdentifier bridgeIid = + (InstanceIdentifier) bridgeRefEntry.getBridgeReference().getValue(); + Optional bridgeNodeOptional = + IfmUtil.read(LogicalDatastoreType.OPERATIONAL, bridgeIid, dataBroker); + if (bridgeNodeOptional.isPresent()) { + return true; + } + } + return false; + } public static InstanceIdentifier getBridgeEntryIdentifier(BridgeEntryKey bridgeEntryKey) { InstanceIdentifier.InstanceIdentifierBuilder bridgeEntryIdBuilder = InstanceIdentifier.builder(BridgeInterfaceInfo.class).child(BridgeEntry.class, bridgeEntryKey); return bridgeEntryIdBuilder.build(); } + public static BridgeEntry getBridgeEntryFromConfigDS(BigInteger dpnId, + DataBroker dataBroker) { + BridgeEntryKey bridgeEntryKey = new BridgeEntryKey(dpnId); + InstanceIdentifier bridgeEntryInstanceIdentifier = + InterfaceMetaUtils.getBridgeEntryIdentifier(bridgeEntryKey); + LOG.debug("Trying to retrieve bridge entry from config for Id: {}", bridgeEntryInstanceIdentifier); + return getBridgeEntryFromConfigDS(bridgeEntryInstanceIdentifier, + dataBroker); + } + public static BridgeEntry getBridgeEntryFromConfigDS(InstanceIdentifier bridgeEntryInstanceIdentifier, DataBroker dataBroker) { Optional bridgeEntryOptional = @@ -91,17 +122,6 @@ public class InterfaceMetaUtils { } - public static BridgeInterfaceEntry getBridgeInterfaceEntryFromConfigDS( - InstanceIdentifier bridgeInterfaceEntryInstanceIdentifier, DataBroker dataBroker) { - Optional bridgeInterfaceEntryOptional = - IfmUtil.read(LogicalDatastoreType.CONFIGURATION, bridgeInterfaceEntryInstanceIdentifier, dataBroker); - if (!bridgeInterfaceEntryOptional.isPresent()) { - return null; - } - return bridgeInterfaceEntryOptional.get(); - } - - public static void createBridgeInterfaceEntryInConfigDS(BridgeEntryKey bridgeEntryKey, BridgeInterfaceEntryKey bridgeInterfaceEntryKey, String childInterface, @@ -130,6 +150,14 @@ public class InterfaceMetaUtils { return intfIdBuilder.build(); } + public static InterfaceParentEntry getInterfaceParentEntryFromConfigDS( + String interfaceName, DataBroker dataBroker) { + InterfaceParentEntryKey interfaceParentEntryKey = new InterfaceParentEntryKey(interfaceName); + InterfaceParentEntry interfaceParentEntry = + InterfaceMetaUtils.getInterfaceParentEntryFromConfigDS(interfaceParentEntryKey, dataBroker); + return interfaceParentEntry; + } + public static InterfaceParentEntry getInterfaceParentEntryFromConfigDS( InterfaceParentEntryKey interfaceParentEntryKey, DataBroker dataBroker) { InstanceIdentifier intfParentIid = @@ -174,18 +202,10 @@ public class InterfaceMetaUtils { t.put(LogicalDatastoreType.OPERATIONAL, id, ifIndexInterface, true); } - public static void removeLportTagInterfaceMap(WriteTransaction t, IdManagerService idManager, DataBroker broker, String infName, Integer ifIndex) { - InstanceIdentifier id = InstanceIdentifier.builder(IfIndexesInterfaceMap.class).child(IfIndexInterface.class, new IfIndexInterfaceKey(ifIndex)).build(); - Optional 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); - } - public static void createBridgeRefEntry(BigInteger dpnId, InstanceIdentifier bridgeIid, WriteTransaction tx){ + LOG.debug("Creating bridge ref entry for dpn: {} bridge: {}", + dpnId, bridgeIid); BridgeRefEntryKey bridgeRefEntryKey = new BridgeRefEntryKey(dpnId); InstanceIdentifier bridgeEntryId = InterfaceMetaUtils.getBridgeRefEntryIdentifier(bridgeRefEntryKey); @@ -194,4 +214,55 @@ public class InterfaceMetaUtils { .setBridgeReference(new OvsdbBridgeRef(bridgeIid)); tx.put(LogicalDatastoreType.OPERATIONAL, bridgeEntryId, tunnelDpnBridgeEntryBuilder.build(), true); } + public static void deleteBridgeRefEntry(BigInteger dpnId, + WriteTransaction tx) { + LOG.debug("Deleting bridge ref entry for dpn: {}", + dpnId); + BridgeRefEntryKey bridgeRefEntryKey = new BridgeRefEntryKey(dpnId); + InstanceIdentifier bridgeEntryId = + InterfaceMetaUtils.getBridgeRefEntryIdentifier(bridgeRefEntryKey); + tx.delete(LogicalDatastoreType.OPERATIONAL, bridgeEntryId); + } + + public static void createTunnelToInterfaceMap(String tunnelInstanceId, + String infName, + WriteTransaction transaction) { + LOG.debug("creating tunnel instance identifier to interface map for {}",infName); + InstanceIdentifier id = InstanceIdentifier.builder(TunnelInstanceInterfaceMap.class). + child(TunnelInstanceInterface.class, new TunnelInstanceInterfaceKey(tunnelInstanceId)).build(); + TunnelInstanceInterface tunnelInstanceInterface = new TunnelInstanceInterfaceBuilder(). + setTunnelInstanceIdentifier(tunnelInstanceId).setKey(new TunnelInstanceInterfaceKey(tunnelInstanceId)).setInterfaceName(infName).build(); + transaction.put(LogicalDatastoreType.OPERATIONAL, id, tunnelInstanceInterface, true); + + } + + public static void createTunnelToInterfaceMap(String infName,InstanceIdentifier nodeId, + WriteTransaction transaction, + IfTunnel ifTunnel){ + InstanceIdentifier tunnelsInstanceIdentifier = org.opendaylight.vpnservice.interfacemgr.renderer.hwvtep.utilities.SouthboundUtils. + createTunnelsInstanceIdentifier(nodeId, + ifTunnel.getTunnelSource(), ifTunnel.getTunnelDestination()); + createTunnelToInterfaceMap(tunnelsInstanceIdentifier.toString(), infName, transaction); + } + + public static void removeTunnelToInterfaceMap(InstanceIdentifier nodeId, + WriteTransaction transaction, + IfTunnel ifTunnel){ + InstanceIdentifier tunnelsInstanceIdentifier = org.opendaylight.vpnservice.interfacemgr.renderer.hwvtep.utilities.SouthboundUtils. + createTunnelsInstanceIdentifier(nodeId, + ifTunnel.getTunnelSource(), ifTunnel.getTunnelDestination()); + transaction.delete(LogicalDatastoreType.OPERATIONAL, tunnelsInstanceIdentifier); + } + + public static String getInterfaceForTunnelInstanceIdentifier(String tunnelInstanceId, + DataBroker dataBroker) { + InstanceIdentifier id = InstanceIdentifier.builder(TunnelInstanceInterfaceMap.class). + child(TunnelInstanceInterface.class, new TunnelInstanceInterfaceKey(tunnelInstanceId)).build(); + Optional tunnelInstanceInterfaceOptional = IfmUtil.read(LogicalDatastoreType.OPERATIONAL, id, dataBroker); + if(tunnelInstanceInterfaceOptional.isPresent()){ + return tunnelInstanceInterfaceOptional.get().getInterfaceName(); + } + return null; + } + } \ No newline at end of file