Add groupExists API to IMdsalApiManager 34/53634/2
authorTali <tali.ben-meir@hpe.com>
Tue, 21 Mar 2017 19:08:38 +0000 (21:08 +0200)
committerFaseela K <faseela.k@ericsson.com>
Mon, 27 Mar 2017 06:57:05 +0000 (06:57 +0000)
Change-Id: I8dd32f5ffaa8412be6106de0de421df8015d4441
Signed-off-by: Tali <tali.ben-meir@hpe.com>
mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/interfaces/IMdsalApiManager.java
mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MDSALManager.java

index 51adc5d254c189a1cf420c5d11ed10841aa14aa5..3c97b7825d2f6243802816e76171ecc6c4136078 100644 (file)
@@ -141,6 +141,17 @@ public interface IMdsalApiManager {
      */
     void removeGroupToTx(BigInteger dpId, Group group, WriteTransaction tx);
 
+    /**
+     * Check if OF group exist on DPN.
+     *
+     * @param dpId
+     *            dpn id
+     * @param groupId
+     *            OF group id
+     * @return true if group exists and false otherwise
+     */
+    boolean groupExists(BigInteger dpId, long groupId);
+
     void sendPacketOut(BigInteger dpnId, int groupId, byte[] payload);
 
     void sendPacketOutWithActions(BigInteger dpnId, long groupId, byte[] payload, List<ActionInfo> actionInfos);
index b1b9ead8324b496488ed4e92bbe4ad3e917bf490..d7fcdc3772f7189d007ffa3bd4b20e0ace58df6f 100644 (file)
@@ -719,39 +719,39 @@ public class MDSALManager extends AbstractLifecycle implements IMdsalApiManager
     }
 
     public void deleteBucket(BigInteger dpId, long groupId, long bucketId, WriteTransaction tx) {
-
         Node nodeDpn = buildDpnNode(dpId);
-        InstanceIdentifier<Bucket> bucketInstanceId =
-                buildBucketInstanceIdentifier(groupId, bucketId, nodeDpn);
-        Optional<Bucket> bucketOptional = Optional.absent();
-        try {
-            bucketOptional = singleTxDb.syncReadOptional(LogicalDatastoreType.CONFIGURATION, bucketInstanceId);
-        } catch (ReadFailedException e) {
-            LOG.warn("Exception while reading bucketId {} for dpnId {} and group {}", bucketId, dpId, groupId);
-            return;
-        }
-        if (bucketOptional.isPresent()) {
+        InstanceIdentifier<Bucket> bucketInstanceId = buildBucketInstanceIdentifier(groupId, bucketId, nodeDpn);
+
+        if (groupExists(nodeDpn, groupId)) {
             tx.delete(LogicalDatastoreType.CONFIGURATION, bucketInstanceId);
         }
     }
 
     public void addBucket(BigInteger dpId, long groupId, Bucket bucket, WriteTransaction tx) {
-
         Node nodeDpn = buildDpnNode(dpId);
-        InstanceIdentifier<Bucket> bucketInstanceId =
-                buildBucketInstanceIdentifier(groupId, bucket.getBucketId().getValue(), nodeDpn);
+        InstanceIdentifier<Bucket> bucketInstanceId = buildBucketInstanceIdentifier(groupId,
+                bucket.getBucketId().getValue(), nodeDpn);
 
+        if (groupExists(nodeDpn, groupId)) {
+            tx.put(LogicalDatastoreType.CONFIGURATION, bucketInstanceId, bucket);
+        }
+    }
+
+    @Override
+    public boolean groupExists(BigInteger dpId, long groupId) {
+        return groupExists(buildDpnNode(dpId), groupId);
+    }
+
+    private  boolean groupExists(Node nodeDpn, long groupId) {
         InstanceIdentifier<Group> groupInstanceId = buildGroupInstanceIdentifier(groupId, nodeDpn);
-        Optional<Group> groupOptional = Optional.absent();
         try {
-            groupOptional = singleTxDb.syncReadOptional(LogicalDatastoreType.CONFIGURATION, groupInstanceId);
+            Optional<Group> groupOptional = singleTxDb.syncReadOptional(LogicalDatastoreType.CONFIGURATION,
+                    groupInstanceId);
+            return groupOptional.isPresent();
         } catch (ReadFailedException e) {
-            LOG.warn("Exception while reading group {} for dpnId {}", dpId, groupId);
-            return;
-        }
-        if (groupOptional.isPresent()) {
-            tx.put(LogicalDatastoreType.CONFIGURATION, bucketInstanceId, bucket);
+            LOG.warn("Exception while reading group {} for Node {}", nodeDpn.getKey(), groupId);
         }
+        return false;
     }
 
     private InstanceIdentifier<Group> buildGroupInstanceIdentifier(long groupId, Node nodeDpn) {