From a9d936c6672cf0b31d8c70c65fde3605be5da8d0 Mon Sep 17 00:00:00 2001 From: Tali Date: Tue, 21 Mar 2017 21:08:38 +0200 Subject: [PATCH] Add groupExists API to IMdsalApiManager Change-Id: I8dd32f5ffaa8412be6106de0de421df8015d4441 Signed-off-by: Tali --- .../interfaces/IMdsalApiManager.java | 11 +++++ .../mdsalutil/internal/MDSALManager.java | 42 +++++++++---------- 2 files changed, 32 insertions(+), 21 deletions(-) diff --git a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/interfaces/IMdsalApiManager.java b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/interfaces/IMdsalApiManager.java index 51adc5d25..3c97b7825 100644 --- a/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/interfaces/IMdsalApiManager.java +++ b/mdsalutil/mdsalutil-api/src/main/java/org/opendaylight/genius/mdsalutil/interfaces/IMdsalApiManager.java @@ -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 actionInfos); diff --git a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MDSALManager.java b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MDSALManager.java index b1b9ead83..d7fcdc377 100644 --- a/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MDSALManager.java +++ b/mdsalutil/mdsalutil-impl/src/main/java/org/opendaylight/genius/mdsalutil/internal/MDSALManager.java @@ -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 bucketInstanceId = - buildBucketInstanceIdentifier(groupId, bucketId, nodeDpn); - Optional 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 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 bucketInstanceId = - buildBucketInstanceIdentifier(groupId, bucket.getBucketId().getValue(), nodeDpn); + InstanceIdentifier 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 groupInstanceId = buildGroupInstanceIdentifier(groupId, nodeDpn); - Optional groupOptional = Optional.absent(); try { - groupOptional = singleTxDb.syncReadOptional(LogicalDatastoreType.CONFIGURATION, groupInstanceId); + Optional 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 buildGroupInstanceIdentifier(long groupId, Node nodeDpn) { -- 2.36.6