Fix odlparent 3 Checkstyle issues
[groupbasedpolicy.git] / neutron-ovsdb / src / main / java / org / opendaylight / groupbasedpolicy / neutron / ovsdb / util / InventoryHelper.java
index 3762b9af929f7505124a606a58edee383592ddd1..173d2e1430e9a29c5765eb414cab9267a496629d 100755 (executable)
@@ -7,8 +7,15 @@
  */
 package org.opendaylight.groupbasedpolicy.neutron.ovsdb.util;
 
+import static org.opendaylight.groupbasedpolicy.neutron.ovsdb.util.OvsdbHelper.getOvsdbBridgeFromTerminationPoint;
+import static org.opendaylight.groupbasedpolicy.neutron.ovsdb.util.OvsdbHelper.getOvsdbTerminationPoint;
+import static org.opendaylight.groupbasedpolicy.util.DataStoreHelper.readFromDs;
+import static org.opendaylight.groupbasedpolicy.util.DataStoreHelper.submitToDs;
+
 import com.google.common.base.Optional;
+import java.util.ArrayList;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 import org.apache.commons.lang3.StringUtils;
 import org.opendaylight.controller.md.sal.binding.api.DataBroker;
@@ -16,7 +23,8 @@ import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
 import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
 import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
 import org.opendaylight.groupbasedpolicy.neutron.ovsdb.AbstractTunnelType;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev100924.IpAddress;
+import org.opendaylight.groupbasedpolicy.util.DataStoreHelper;
+import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayNodeConfig;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.OfOverlayNodeConfigBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.groupbasedpolicy.ofoverlay.rev140528.nodes.node.ExternalInterfaces;
@@ -36,30 +44,25 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-import java.util.ArrayList;
-import java.util.List;
-
-import static org.opendaylight.groupbasedpolicy.neutron.ovsdb.util.OvsdbHelper.getOvsdbBridgeFromTerminationPoint;
-import static org.opendaylight.groupbasedpolicy.neutron.ovsdb.util.OvsdbHelper.getOvsdbTerminationPoint;
-import static org.opendaylight.groupbasedpolicy.util.DataStoreHelper.readFromDs;
-import static org.opendaylight.groupbasedpolicy.util.DataStoreHelper.submitToDs;
-
-public class InventoryHelper {
+public final class InventoryHelper {
 
     private static final Logger LOG = LoggerFactory.getLogger(InventoryHelper.class);
     private static final String HEX = "0x";
 
+    private InventoryHelper() {
+    }
+
     /**
-     * Convert an OpenFlow Datapath ID to a Long
+     * Convert an OpenFlow Datapath ID to a Long.
      *
      * @param dpid The OpenFlow Datapath ID
      * @return The Long representation of the DPID
      */
     public static Long getLongFromDpid(String dpid) {
         String[] addressInBytes = dpid.split(":");
-        Long address = (Long.decode(HEX + addressInBytes[2]) << 40) | (Long.decode(HEX + addressInBytes[3]) << 32)
-                | (Long.decode(HEX + addressInBytes[4]) << 24) | (Long.decode(HEX + addressInBytes[5]) << 16)
-                | (Long.decode(HEX + addressInBytes[6]) << 8) | (Long.decode(HEX + addressInBytes[7]));
+        Long address = Long.decode(HEX + addressInBytes[2]) << 40 | Long.decode(HEX + addressInBytes[3]) << 32
+                | Long.decode(HEX + addressInBytes[4]) << 24 | Long.decode(HEX + addressInBytes[5]) << 16
+                | Long.decode(HEX + addressInBytes[6]) << 8 | Long.decode(HEX + addressInBytes[7]);
         return address;
     }
 
@@ -71,7 +74,9 @@ public class InventoryHelper {
      * augmentation, converting that to a Long, and prepending it with the
      * "openflow:" prefix.
      *
-     * @param ovsdbBridge The OVSDB bridge augmentation
+     * @param ovsdbBridge The {@link OvsdbBridgeAugmentation}
+     * @param ovsdbTpIid the {@link OvsdbTerminationPointAugmentation}
+     * @param dataBroker the {@link DataBroker}
      * @return String representation of the Inventory NodeId, null if it fails
      */
     public static String getInventoryNodeIdString(OvsdbBridgeAugmentation ovsdbBridge,
@@ -102,6 +107,8 @@ public class InventoryHelper {
      *
      * @param inventoryNodeId The string representation of the Inventory NodeId
      * @param ovsdbTp The {@link OvsdbTerminationPointAugmentation}
+     * @param tpIid the InstanceIdentifier for OvsdbTerminationPointAugmentation
+     * @param dataBroker the {@link DataBroker}
      * @return String representation of the Inventory NodeConnectorId, null if it fails
      */
     public static String getInventoryNodeConnectorIdString(String inventoryNodeId,
@@ -134,8 +141,11 @@ public class InventoryHelper {
     /**
      * Read the {@link OfOverlayNodeConfig} augmentation from the
      * Inventory Node, and verify that the tunnel types we need
-     * are present
+     * are present.
      *
+     * @param nodeIdString The inventory node id string
+     * @param requiredTunnelTypes the list of tunnel types
+     * @param dataBroker the {@link DataBroker}
      * @return true if tunnel types are present, false otherwise
      */
     public static boolean checkOfOverlayConfig(String nodeIdString, List<AbstractTunnelType> requiredTunnelTypes,
@@ -165,7 +175,8 @@ public class InventoryHelper {
         return true;
     }
 
-    public static InstanceIdentifier<ExternalInterfaces> addOfOverlayExternalPort(NodeId nodeId, NodeConnectorId ncId, DataBroker dataBroker) {
+    public static InstanceIdentifier<ExternalInterfaces> addOfOverlayExternalPort(NodeId nodeId, NodeConnectorId ncId,
+        DataBroker dataBroker) {
         InstanceIdentifier<ExternalInterfaces> nodeExternalInterfacesIid = InstanceIdentifier.builder(Nodes.class)
             .child(Node.class, new NodeKey(nodeId))
             .augmentation(OfOverlayNodeConfig.class)
@@ -175,9 +186,9 @@ public class InventoryHelper {
         ExternalInterfaces externalInterfaces = new ExternalInterfacesBuilder().setKey(new ExternalInterfacesKey(ncId))
             .setNodeConnectorId(ncId)
             .build();
-        WriteTransaction transaction = dataBroker.newReadWriteTransaction();
+        WriteTransaction transaction = dataBroker.newWriteOnlyTransaction();
         transaction.put(LogicalDatastoreType.CONFIGURATION, nodeExternalInterfacesIid, externalInterfaces, true);
-        submitToDs(transaction);
+        DataStoreHelper.submitToDs(transaction);
         LOG.trace("Added external interface node connector {} to node {}", ncId.getValue(), nodeId.getValue());
         return nodeExternalInterfacesIid;
     }
@@ -198,19 +209,19 @@ public class InventoryHelper {
     }
 
     /**
-     * Update the {@link OfOverlayConfig} of an Inventory Node
+     * Update the {@link OfOverlayNodeConfig} of an Inventory Node
      * using the new tunnel state.
      *
-     * @param ip
-     * @param nodeIdString
-     * @param nodeConnectorIdString
-     * @param tunnelType
-     * @param dataBroker
+     * @param ip the ipaddress
+     * @param nodeIdString the string representation of the inventory NodeId
+     * @param nodeConnectorIdString the string representation of the inventory NodeConnectorId
+     * @param tunnelType the tunnel type
+     * @param dataBroker the {@link DataBroker}
      */
     public static void updateOfOverlayConfig(IpAddress ip, String nodeIdString, String nodeConnectorIdString,
             AbstractTunnelType tunnelType, DataBroker dataBroker) {
 
-        if ((ip == null) || (nodeIdString == null) || (nodeConnectorIdString == null)) {
+        if (ip == null || nodeIdString == null || nodeConnectorIdString == null) {
             LOG.debug("Can't update OfOverlay: requisite information not present");
             return;
         }
@@ -222,10 +233,10 @@ public class InventoryHelper {
 
         // If it exists, use it in new augmentation constructor, else new augmentation
         OfOverlayNodeConfigBuilder ofOverlayNodeConfigBuilder;
-        Set<Tunnel> existingTunnels = new HashSet<Tunnel>();
+        Set<Tunnel> existingTunnels = new HashSet<>();
         if (ofConfig != null) {
             ofOverlayNodeConfigBuilder = new OfOverlayNodeConfigBuilder(ofConfig);
-            if(ofConfig.getTunnel() != null) {
+            if (ofConfig.getTunnel() != null) {
                 existingTunnels.addAll(ofConfig.getTunnel());
             }
         } else {
@@ -267,12 +278,12 @@ public class InventoryHelper {
 
         // Update the OfOverlayNodeConfig with the new tunnel information
         if (!existingTunnels.isEmpty()) {
-            ofOverlayNodeConfigBuilder.setTunnel(new ArrayList<Tunnel>(existingTunnels));
+            ofOverlayNodeConfigBuilder.setTunnel(new ArrayList<>(existingTunnels));
         }
         OfOverlayNodeConfig newConfig = ofOverlayNodeConfigBuilder.build();
-        if (addTunnelsOfOverlayConfig(newConfig.getTunnel(), new NodeId(nodeIdString), dataBroker)) {
-            LOG.trace("updateOfOverlayConfig - Added Tunnel: {} to Node: {} at NodeConnector: {}",tunnelBuilder.build(), nodeIdString, nodeConnectorIdString);
-            return;
+        if (addOfOverlayConfig(newConfig, new NodeId(nodeIdString), dataBroker)) {
+            LOG.trace("updateOfOverlayConfig - Added Tunnel: {} to Node: {} at NodeConnector: {}",
+                tunnelBuilder.build(), nodeIdString, nodeConnectorIdString);
         } else {
             LOG.error("updateOfOverlayConfig - could not write OfOverlayNodeConfig: {} to datastore.", newConfig);
         }
@@ -302,31 +313,42 @@ public class InventoryHelper {
 
         // runs only if some tunnels were really removed
         if (existingTunnels.removeAll(tunnelsToRemove)) {
-            ReadWriteTransaction wTx = dataBroker.newReadWriteTransaction();
+            ReadWriteTransaction writeTx = dataBroker.newReadWriteTransaction();
             for (Tunnel tunnel : tunnelsToRemove) {
                 InstanceIdentifier<Tunnel> tunnelIid = InstanceIdentifier.builder(Nodes.class)
                     .child(Node.class, new NodeKey(new NodeId(nodeIdString)))
                     .augmentation(OfOverlayNodeConfig.class)
                     .child(Tunnel.class, tunnel.getKey())
                     .build();
-                wTx.delete(LogicalDatastoreType.CONFIGURATION, tunnelIid);
+                writeTx.delete(LogicalDatastoreType.CONFIGURATION, tunnelIid);
                 LOG.trace("Removing tunnel: {} from node {}",tunnel, nodeIdString);
             }
-            submitToDs(wTx);
+            submitToDs(writeTx);
         }
     }
 
+    private static boolean addOfOverlayConfig(OfOverlayNodeConfig newConfig, NodeId nodeId, DataBroker dataBroker) {
+        ReadWriteTransaction writeTx = dataBroker.newReadWriteTransaction();
+        InstanceIdentifier<OfOverlayNodeConfig> ofOverlayNodeIid = InstanceIdentifier.builder(Nodes.class)
+            .child(Node.class, new NodeKey(nodeId))
+            .augmentation(OfOverlayNodeConfig.class)
+            .build();
+        writeTx.put(LogicalDatastoreType.CONFIGURATION, ofOverlayNodeIid, newConfig, true);
+        LOG.trace("Adding tunnel: {} to node {}", newConfig, nodeId.getValue());
+        return submitToDs(writeTx);
+    }
+
     private static boolean addTunnelsOfOverlayConfig(List<Tunnel> tunnels, NodeId nodeId, DataBroker dataBroker) {
-        ReadWriteTransaction wTx = dataBroker.newReadWriteTransaction();
+        ReadWriteTransaction writeTx = dataBroker.newReadWriteTransaction();
         for (Tunnel tunnel : tunnels) {
             InstanceIdentifier<Tunnel> tunnelIid = InstanceIdentifier.builder(Nodes.class)
                 .child(Node.class, new NodeKey(nodeId))
                 .augmentation(OfOverlayNodeConfig.class)
                 .child(Tunnel.class, tunnel.getKey())
                 .build();
-            wTx.put(LogicalDatastoreType.CONFIGURATION, tunnelIid, tunnel, true);
+            writeTx.put(LogicalDatastoreType.CONFIGURATION, tunnelIid, tunnel, true);
             LOG.trace("Adding tunnel: {} to node {}",tunnel, nodeId.getValue());
         }
-        return submitToDs(wTx);
+        return submitToDs(writeTx);
     }
 }