Implement VxLAN-GPE tunnels in Genius
[genius.git] / interfacemanager / interfacemanager-impl / src / main / java / org / opendaylight / genius / interfacemanager / renderer / ovs / utilities / SouthboundUtils.java
index 59def29f11360202ebf40f6a99b27c6f9034deca..2aecd2591f2098c5d208520a1935e7524eda68a2 100644 (file)
@@ -7,32 +7,50 @@
  */
 package org.opendaylight.genius.interfacemanager.renderer.ovs.utilities;
 
-import com.google.common.collect.ImmutableBiMap;
 import com.google.common.collect.Maps;
 import com.google.common.util.concurrent.ListenableFuture;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 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.genius.interfacemanager.commons.InterfaceManagerCommonUtils;
-import org.opendaylight.genius.interfacemanager.renderer.hwvtep.utilities.*;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.Uri;
 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.opendaylight.l2.types.rev130827.VlanId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.*;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.BridgeEntry;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.meta.rev160406.bridge._interface.info.bridge.entry.BridgeInterfaceEntry;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.*;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfL2vlan;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.IfTunnel;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelMonitoringTypeBfd;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeBase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeGre;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeMplsOverGre;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeVxlan;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.interfacemanager.rev160406.TunnelTypeVxlanGpe;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeBase;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeGre;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.InterfaceTypeVxlan;
+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.OvsdbPortInterfaceAttributes;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentation;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.OvsdbTerminationPointAugmentationBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceBfd;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceBfdBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.InterfaceBfdKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.Options;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.OptionsBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.ovsdb.rev150105.ovsdb.port._interface.attributes.OptionsKey;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TpId;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeBuilder;
 import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
 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.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.node.TerminationPointBuilder;
@@ -41,10 +59,6 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
 public class SouthboundUtils {
     private static final Logger LOG = LoggerFactory.getLogger(SouthboundUtils.class);
 
@@ -55,6 +69,7 @@ public class SouthboundUtils {
     static final String BFD_PARAM_FORWARDING_IF_RX = "forwarding_if_rx";
     static final String BFD_PARAM_CPATH_DOWN = "cpath_down";
     static final String BFD_PARAM_CHECK_TNL_KEY = "check_tnl_key";
+
     // bfd params
     public static final String BFD_OP_STATE = "state";
     public static final String BFD_STATE_UP = "up";
@@ -65,18 +80,38 @@ public class SouthboundUtils {
     private static final String BFD_CPATH_DOWN_VAL = "false";
     private static final String BFD_CHECK_TNL_KEY_VAL = "false";
 
+    // Tunnel options
+    private static final String TUNNEL_OPTIONS_KEY = "key";
+    private static final String TUNNEL_OPTIONS_LOCAL_IP = "local_ip";
+    private static final String TUNNEL_OPTIONS_REMOTE_IP = "remote_ip";
+
+    // Options for VxLAN-GPE + NSH tunnels
+    private static final String TUNNEL_OPTIONS_EXTS = "exts";
+    private static final String TUNNEL_OPTIONS_NSI = "nsi";
+    private static final String TUNNEL_OPTIONS_NSP = "nsp";
+    private static final String TUNNEL_OPTIONS_NSHC1 = "nshc1";
+    private static final String TUNNEL_OPTIONS_NSHC2 = "nshc2";
+    private static final String TUNNEL_OPTIONS_NSHC3 = "nshc3";
+    private static final String TUNNEL_OPTIONS_NSHC4 = "nshc4";
+
+    // Values for VxLAN-GPE + NSH tunnels
+    private static final String TUNNEL_OPTIONS_VALUE_FLOW = "flow";
+    private static final String TUNNEL_OPTIONS_VALUE_GPE = "gpe";
+
     public static final TopologyId OVSDB_TOPOLOGY_ID = new TopologyId(new Uri("ovsdb:1"));
 
-    public static final ImmutableBiMap<Class<? extends TunnelTypeBase>,
-            Class<? extends InterfaceTypeBase>> TUNNEL_TYPE_MAP =
-            new ImmutableBiMap.Builder<Class<? extends TunnelTypeBase>, Class<? extends InterfaceTypeBase>>()
-                    .put(TunnelTypeGre.class, InterfaceTypeGre.class)
-                    .put(TunnelTypeVxlan.class, InterfaceTypeVxlan.class)
-                    .build();
+    // To keep the mapping between Tunnel Types and Tunnel Interfaces
+    private static final Map<Class<? extends TunnelTypeBase>, Class<? extends InterfaceTypeBase>> TUNNEL_TYPE_MAP = new HashMap<Class<? extends TunnelTypeBase>, Class<? extends InterfaceTypeBase>>() {
+        {
+            put(TunnelTypeGre.class, InterfaceTypeGre.class);
+            put(TunnelTypeVxlan.class, InterfaceTypeVxlan.class);
+            put(TunnelTypeVxlanGpe.class, InterfaceTypeVxlan.class);
+        }
+    };
 
     public static void addPortToBridge(InstanceIdentifier<?> bridgeIid, Interface iface,
-                                       OvsdbBridgeAugmentation bridgeAugmentation, String bridgeName,
-                                       String portName, DataBroker dataBroker, List<ListenableFuture<Void>> futures) {
+            OvsdbBridgeAugmentation bridgeAugmentation, String bridgeName, String portName, DataBroker dataBroker,
+            List<ListenableFuture<Void>> futures) {
         WriteTransaction tx = dataBroker.newWriteOnlyTransaction();
         IfTunnel ifTunnel = iface.getAugmentation(IfTunnel.class);
         if (ifTunnel != null) {
@@ -86,17 +121,17 @@ public class SouthboundUtils {
     }
 
     /*
-     *  add all tunnels ports corresponding to the bridge to the topology config DS
+     * add all tunnels ports corresponding to the bridge to the topology config
+     * DS
      */
     public static void addAllPortsToBridge(BridgeEntry bridgeEntry, DataBroker dataBroker,
-                                           InstanceIdentifier<OvsdbBridgeAugmentation> bridgeIid,
-                                           OvsdbBridgeAugmentation bridgeNew,
-                                           List<ListenableFuture<Void>> futures){
+            InstanceIdentifier<OvsdbBridgeAugmentation> bridgeIid, OvsdbBridgeAugmentation bridgeNew,
+            List<ListenableFuture<Void>> futures) {
         WriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction();
         String bridgeName = bridgeNew.getBridgeName().getValue();
         LOG.debug("adding all ports to bridge: {}", bridgeName);
         List<BridgeInterfaceEntry> bridgeInterfaceEntries = bridgeEntry.getBridgeInterfaceEntry();
-        if(bridgeInterfaceEntries != null) {
+        if (bridgeInterfaceEntries != null) {
             for (BridgeInterfaceEntry bridgeInterfaceEntry : bridgeInterfaceEntries) {
                 String portName = bridgeInterfaceEntry.getInterfaceName();
                 InterfaceKey interfaceKey = new InterfaceKey(portName);
@@ -104,7 +139,8 @@ public class SouthboundUtils {
                 if (iface != null) {
                     IfTunnel ifTunnel = iface.getAugmentation(IfTunnel.class);
                     if (ifTunnel != null) {
-                        addTunnelPortToBridge(ifTunnel, bridgeIid, iface, bridgeNew, bridgeName, portName, dataBroker, writeTransaction);
+                        addTunnelPortToBridge(ifTunnel, bridgeIid, iface, bridgeNew, bridgeName, portName, dataBroker,
+                                writeTransaction);
                     }
                 } else {
                     LOG.debug("Interface {} not found in config DS", portName);
@@ -115,17 +151,17 @@ public class SouthboundUtils {
     }
 
     /*
-     *  add all tunnels ports corresponding to the bridge to the topology config DS
+     * add all tunnels ports corresponding to the bridge to the topology config
+     * DS
      */
     public static void removeAllPortsFromBridge(BridgeEntry bridgeEntry, DataBroker dataBroker,
-                                                InstanceIdentifier<OvsdbBridgeAugmentation> bridgeIid,
-                                                OvsdbBridgeAugmentation bridgeNew,
-                                                List<ListenableFuture<Void>> futures){
+            InstanceIdentifier<OvsdbBridgeAugmentation> bridgeIid, OvsdbBridgeAugmentation bridgeNew,
+            List<ListenableFuture<Void>> futures) {
         WriteTransaction writeTransaction = dataBroker.newWriteOnlyTransaction();
         String bridgeName = bridgeNew.getBridgeName().getValue();
         LOG.debug("removing all ports from bridge: {}", bridgeName);
         List<BridgeInterfaceEntry> bridgeInterfaceEntries = bridgeEntry.getBridgeInterfaceEntry();
-        if(bridgeInterfaceEntries != null) {
+        if (bridgeInterfaceEntries != null) {
             for (BridgeInterfaceEntry bridgeInterfaceEntry : bridgeInterfaceEntries) {
                 String portName = bridgeInterfaceEntry.getInterfaceName();
                 InterfaceKey interfaceKey = new InterfaceKey(portName);
@@ -144,18 +180,18 @@ public class SouthboundUtils {
     }
 
     private static void addVlanPortToBridge(InstanceIdentifier<?> bridgeIid, IfL2vlan ifL2vlan, IfTunnel ifTunnel,
-                                            OvsdbBridgeAugmentation bridgeAugmentation, String bridgeName,
-                                            String portName, DataBroker dataBroker, WriteTransaction t) {
-        if(ifL2vlan.getVlanId() != null) {
-            addTerminationPoint(bridgeIid, bridgeAugmentation, bridgeName, portName, ifL2vlan.getVlanId().getValue(), null, null,
-                    ifTunnel, t);
+            OvsdbBridgeAugmentation bridgeAugmentation, String bridgeName, String portName, DataBroker dataBroker,
+            WriteTransaction t) {
+        if (ifL2vlan.getVlanId() != null) {
+            addTerminationPoint(bridgeIid, bridgeAugmentation, bridgeName, portName, ifL2vlan.getVlanId().getValue(),
+                    null, null, ifTunnel, t);
         }
     }
 
     private static void addTunnelPortToBridge(IfTunnel ifTunnel, InstanceIdentifier<?> bridgeIid, Interface iface,
-                                              OvsdbBridgeAugmentation bridgeAugmentation, String bridgeName,
-                                              String portName, DataBroker dataBroker, WriteTransaction t) {
-        LOG.debug("adding tunnel port {} to bridge {}",portName, bridgeName);
+            OvsdbBridgeAugmentation bridgeAugmentation, String bridgeName, String portName, DataBroker dataBroker,
+            WriteTransaction t) {
+        LOG.debug("adding tunnel port {} to bridge {}", portName, bridgeName);
 
         Class<? extends InterfaceTypeBase> type = TUNNEL_TYPE_MAP.get(ifTunnel.getTunnelInterfaceType());
 
@@ -171,22 +207,33 @@ public class SouthboundUtils {
         }
 
         Map<String, String> options = Maps.newHashMap();
-        if((!ifTunnel.getTunnelInterfaceType().equals(TunnelTypeMplsOverGre.class) ) ){
-            options.put("key", "flow");
-        }
 
+        // Options common to any kind of tunnel
         IpAddress localIp = ifTunnel.getTunnelSource();
-        options.put("local_ip", localIp.getIpv4Address().getValue());
+        options.put(TUNNEL_OPTIONS_LOCAL_IP, localIp.getIpv4Address().getValue());
 
         IpAddress remoteIp = ifTunnel.getTunnelDestination();
-        options.put("remote_ip", remoteIp.getIpv4Address().getValue());
+        options.put(TUNNEL_OPTIONS_REMOTE_IP, remoteIp.getIpv4Address().getValue());
 
+        // Specific options for each type of tunnel
+        if (!ifTunnel.getTunnelInterfaceType().equals(TunnelTypeMplsOverGre.class)) {
+            options.put(TUNNEL_OPTIONS_KEY, TUNNEL_OPTIONS_VALUE_FLOW);
+        }
+        if (ifTunnel.getTunnelInterfaceType().equals(TunnelTypeVxlanGpe.class)) {
+            options.put(TUNNEL_OPTIONS_EXTS, TUNNEL_OPTIONS_VALUE_GPE);
+            options.put(TUNNEL_OPTIONS_NSI, TUNNEL_OPTIONS_VALUE_FLOW);
+            options.put(TUNNEL_OPTIONS_NSP, TUNNEL_OPTIONS_VALUE_FLOW);
+            options.put(TUNNEL_OPTIONS_NSHC1, TUNNEL_OPTIONS_VALUE_FLOW);
+            options.put(TUNNEL_OPTIONS_NSHC2, TUNNEL_OPTIONS_VALUE_FLOW);
+            options.put(TUNNEL_OPTIONS_NSHC3, TUNNEL_OPTIONS_VALUE_FLOW);
+            options.put(TUNNEL_OPTIONS_NSHC4, TUNNEL_OPTIONS_VALUE_FLOW);
+        }
         addTerminationPoint(bridgeIid, bridgeAugmentation, bridgeName, portName, vlanId, type, options, ifTunnel, t);
     }
 
     // Update is allowed only for tunnel monitoring attributes
-    public static void updateBfdParamtersForTerminationPoint(InstanceIdentifier<?> bridgeIid, IfTunnel ifTunnel, String portName,
-                                                             WriteTransaction transaction){
+    public static void updateBfdParamtersForTerminationPoint(InstanceIdentifier<?> bridgeIid, IfTunnel ifTunnel,
+            String portName, WriteTransaction transaction) {
         InstanceIdentifier<TerminationPoint> tpIid = createTerminationPointInstanceIdentifier(
                 InstanceIdentifier.keyOf(bridgeIid.firstIdentifierOf(Node.class)), portName);
         LOG.debug("update bfd parameters for interface {}", tpIid);
@@ -202,8 +249,8 @@ public class SouthboundUtils {
     }
 
     private static void addTerminationPoint(InstanceIdentifier<?> bridgeIid, OvsdbBridgeAugmentation bridgeNode,
-                                            String bridgeName, String portName, int vlanId, Class<? extends InterfaceTypeBase> type,
-                                            Map<String, String> options, IfTunnel ifTunnel, WriteTransaction t) {
+            String bridgeName, String portName, int vlanId, Class<? extends InterfaceTypeBase> type,
+            Map<String, String> options, IfTunnel ifTunnel, WriteTransaction t) {
         InstanceIdentifier<TerminationPoint> tpIid = createTerminationPointInstanceIdentifier(
                 InstanceIdentifier.keyOf(bridgeIid.firstIdentifierOf(Node.class)), portName);
         OvsdbTerminationPointAugmentationBuilder tpAugmentationBuilder = new OvsdbTerminationPointAugmentationBuilder();
@@ -215,7 +262,7 @@ public class SouthboundUtils {
         }
 
         if (options != null) {
-            List<Options> optionsList = new ArrayList<Options>();
+            List<Options> optionsList = new ArrayList<>();
             for (Map.Entry<String, String> entry : options.entrySet()) {
                 OptionsBuilder optionsBuilder = new OptionsBuilder();
                 optionsBuilder.setKey(new OptionsKey(entry.getKey()));
@@ -231,8 +278,7 @@ public class SouthboundUtils {
             tpAugmentationBuilder.setVlanTag(new VlanId(vlanId));
         }
 
-
-        if(bfdMonitoringEnabled(ifTunnel)) {
+        if (bfdMonitoringEnabled(ifTunnel)) {
             List<InterfaceBfd> bfdParams = getBfdParams(ifTunnel);
             tpAugmentationBuilder.setInterfaceBfd(bfdParams);
         }
@@ -258,6 +304,11 @@ public class SouthboundUtils {
         bfdParams.add(getIfBfdObj(BFD_PARAM_MIN_TX, ifTunnel != null &&  ifTunnel.getMonitorInterval() != null ?
                 ifTunnel.getMonitorInterval().toString() : BFD_MIN_TX_VAL));
         bfdParams.add(getIfBfdObj(BFD_PARAM_MIN_RX, getBfdParamMinRx(ifTunnel)));
+        bfdParams.add(
+                getIfBfdObj(BFD_PARAM_ENABLE, ifTunnel != null ? ifTunnel.isMonitorEnabled().toString() : "false"));
+        bfdParams.add(getIfBfdObj(BFD_PARAM_MIN_TX,
+                ifTunnel != null ? ifTunnel.getMonitorInterval().toString() : BFD_MIN_TX_VAL));
+        bfdParams.add(getIfBfdObj(BFD_PARAM_MIN_RX, BFD_MIN_RX_VAL));
         bfdParams.add(getIfBfdObj(BFD_PARAM_DECAY_MIN_RX, BFD_DECAY_MIN_RX_VAL));
         bfdParams.add(getIfBfdObj(BFD_PARAM_FORWARDING_IF_RX, BFD_FORWARDING_IF_RX_VAL));
         bfdParams.add(getIfBfdObj(BFD_PARAM_CPATH_DOWN, BFD_CPATH_DOWN_VAL));
@@ -267,25 +318,22 @@ public class SouthboundUtils {
 
     private static InterfaceBfd getIfBfdObj(String key, String value) {
         InterfaceBfdBuilder bfdBuilder = new InterfaceBfdBuilder();
-        bfdBuilder.setBfdKey(key).
-                setKey(new InterfaceBfdKey(key)).setBfdValue(value);
+        bfdBuilder.setBfdKey(key).setKey(new InterfaceBfdKey(key)).setBfdValue(value);
         return bfdBuilder.build();
     }
 
     public static InstanceIdentifier<TerminationPoint> createTerminationPointInstanceIdentifier(NodeKey nodekey,
-                                                                                                String portName){
-        InstanceIdentifier<TerminationPoint> terminationPointPath = InstanceIdentifier
-                .create(NetworkTopology.class)
-                .child(Topology.class, new TopologyKey(OVSDB_TOPOLOGY_ID))
-                .child(Node.class,nodekey)
+            String portName) {
+        InstanceIdentifier<TerminationPoint> terminationPointPath = InstanceIdentifier.create(NetworkTopology.class)
+                .child(Topology.class, new TopologyKey(OVSDB_TOPOLOGY_ID)).child(Node.class, nodekey)
                 .child(TerminationPoint.class, new TerminationPointKey(new TpId(portName)));
 
-        LOG.debug("Termination point InstanceIdentifier generated : {}",terminationPointPath);
+        LOG.debug("Termination point InstanceIdentifier generated : {}", terminationPointPath);
         return terminationPointPath;
     }
 
-    public static void removeTerminationEndPoint(List<ListenableFuture<Void>> futures, DataBroker dataBroker, InstanceIdentifier<?> bridgeIid,
-                                                 String interfaceName) {
+    public static void removeTerminationEndPoint(List<ListenableFuture<Void>> futures, DataBroker dataBroker,
+            InstanceIdentifier<?> bridgeIid, String interfaceName) {
         LOG.debug("removing termination point for {}", interfaceName);
         WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
         InstanceIdentifier<TerminationPoint> tpIid = SouthboundUtils.createTerminationPointInstanceIdentifier(
@@ -294,15 +342,16 @@ public class SouthboundUtils {
         futures.add(transaction.submit());
     }
 
-    public static boolean bfdMonitoringEnabled(IfTunnel ifTunnel){
-        if(ifTunnel.isMonitorEnabled() && TunnelMonitoringTypeBfd.class.isAssignableFrom(ifTunnel.getMonitorProtocol())) {
+    public static boolean bfdMonitoringEnabled(IfTunnel ifTunnel) {
+        if (ifTunnel.isMonitorEnabled()
+                && TunnelMonitoringTypeBfd.class.isAssignableFrom(ifTunnel.getMonitorProtocol())) {
             return true;
         }
         return false;
     }
 
-    public static boolean isMonitorProtocolBfd(IfTunnel ifTunnel){
-        if(TunnelMonitoringTypeBfd.class.isAssignableFrom(ifTunnel.getMonitorProtocol())) {
+    public static boolean isMonitorProtocolBfd(IfTunnel ifTunnel) {
+        if (TunnelMonitoringTypeBfd.class.isAssignableFrom(ifTunnel.getMonitorProtocol())) {
             return true;
         }
         return false;