Fixed as per comments group and meter 68/3368/4
authorPrasanna Huddar <prasanna.huddar@ericsson.com>
Tue, 3 Dec 2013 14:19:39 +0000 (19:49 +0530)
committerPrasanna Huddar <prasanna.huddar@ericsson.com>
Tue, 3 Dec 2013 14:35:13 +0000 (20:05 +0530)
Signed-off-by: Prasanna Huddar <prasanna.huddar@ericsson.com>
Change-Id: Ib1592784e9441afa4b9989dc65a852ee38edf411

opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/consumer/impl/FRMConsumerImpl.java
opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/consumer/impl/GroupConsumerImpl.java
opendaylight/md-sal/forwardingrules-manager/src/main/java/org/opendaylight/controller/forwardingrulesmanager/consumer/impl/MeterConsumerImpl.java

index d42e067334491421b3810a5272360875631c263d..bbe771fd9cc5164c155e71a43196bd36fe50a780 100644 (file)
@@ -29,14 +29,13 @@ public class FRMConsumerImpl extends AbstractBindingAwareProvider implements Com
     private static NotificationService notificationService;
     private FlowConsumerImpl flowImplRef;
     private GroupConsumerImpl groupImplRef;
+    private MeterConsumerImpl meterImplRef;
     private static DataProviderService dataProviderService;
-
-       private static IClusterContainerServices clusterContainerService = null;
-       private static IContainer container;
-       
-       @Override
+    private static IClusterContainerServices clusterContainerService = null;
+    private static IContainer container;
+    
+    @Override
     public void onSessionInitiated(ProviderContext session) {
-
         FRMConsumerImpl.p_session = session;
 
         if (!getDependentModule()) {
@@ -56,7 +55,8 @@ public class FRMConsumerImpl extends AbstractBindingAwareProvider implements Com
 
                     if (null != dataProviderService) {
                         flowImplRef = new FlowConsumerImpl();
-                        // groupImplRef = new GroupConsumerImpl();
+                        groupImplRef = new GroupConsumerImpl();
+                        meterImplRef = new MeterConsumerImpl();
                         registerWithOSGIConsole();
                     } else {
                         logger.error("Data Provider Service is down or NULL. "
@@ -99,35 +99,32 @@ public class FRMConsumerImpl extends AbstractBindingAwareProvider implements Com
         BundleContext bundleContext = FrameworkUtil.getBundle(this.getClass()).getBundleContext();
         bundleContext.registerService(CommandProvider.class.getName(), this, null);
     }
-       
-       private boolean getDependentModule() {
-           do {
-        clusterContainerService = (IClusterContainerServices) ServiceHelper.getGlobalInstance(IClusterContainerServices.class, this);
-        try {
-            Thread.sleep(4);
-        } catch (InterruptedException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-           } while(clusterContainerService == null);
-           
-           do {
-               
-           
-        container = (IContainer) ServiceHelper.getGlobalInstance(IContainer.class, this);
-        try {
-            Thread.sleep(5);
-        } catch (InterruptedException e) {
-            // TODO Auto-generated catch block
-            e.printStackTrace();
-        }
-           } while (container == null);
-           
-          
-        return true;
-       }
 
-       
+    private boolean getDependentModule() {
+        do {
+            clusterContainerService = (IClusterContainerServices) ServiceHelper.getGlobalInstance(
+                    IClusterContainerServices.class, this);
+            try {
+                Thread.sleep(4);
+            } catch (InterruptedException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+        } while (clusterContainerService == null);
+
+        do {
+
+            container = (IContainer) ServiceHelper.getGlobalInstance(IContainer.class, this);
+            try {
+                Thread.sleep(5);
+            } catch (InterruptedException e) {
+                // TODO Auto-generated catch block
+                e.printStackTrace();
+            }
+        } while (container == null);
+
+        return true;
+    }
 
     public static DataProviderService getDataProviderService() {
         return dataProviderService;
@@ -138,9 +135,8 @@ public class FRMConsumerImpl extends AbstractBindingAwareProvider implements Com
     }
 
     public GroupConsumerImpl getGroupImplRef() {
-       return groupImplRef;
+        return groupImplRef;
     }
-               
 
     public static ProviderContext getProviderSession() {
         return p_session;
index 381faa41b082ea069df75ca8b5a82736d94fd642..7d16cb5b428452dfa25e110ebbc7ad795c298a18 100644 (file)
@@ -58,7 +58,7 @@ public class GroupConsumerImpl implements IForwardingRulesManager {
     private final GroupEventListener groupEventListener = new GroupEventListener();
     private Registration<NotificationListener> groupListener;
     private SalGroupService groupService;
-    private GroupDataCommitHandler commitHandler;
+    private GroupDataCommitHandler groupCommitHandler;
 
     private ConcurrentMap<GroupKey, Group> originalSwGroupView;
     private ConcurrentMap<GroupKey, Group> installedSwGroupView;
@@ -74,9 +74,6 @@ public class GroupConsumerImpl implements IForwardingRulesManager {
         InstanceIdentifier<? extends DataObject> path = InstanceIdentifier.builder(Groups.class).toInstance();
         groupService = FRMConsumerImpl.getProviderSession().getRpcService(SalGroupService.class);
 
-        clusterGroupContainerService = FRMConsumerImpl.getClusterContainerService();
-        container = FRMConsumerImpl.getContainer();
-
         if (!(cacheStartup())) {
             logger.error("Unanle to allocate/retrieve group cache");
             System.out.println("Unable to allocate/retrieve group cache");
@@ -97,8 +94,10 @@ public class GroupConsumerImpl implements IForwardingRulesManager {
             return;
         }
 
-        commitHandler = new GroupDataCommitHandler();
-        FRMConsumerImpl.getDataProviderService().registerCommitHandler(path, commitHandler);
+        groupCommitHandler = new GroupDataCommitHandler();
+        FRMConsumerImpl.getDataProviderService().registerCommitHandler(path, groupCommitHandler);
+        clusterGroupContainerService = FRMConsumerImpl.getClusterContainerService();
+        container = FRMConsumerImpl.getContainer();
     }
 
     private boolean allocateGroupCaches() {
@@ -220,23 +219,13 @@ public class GroupConsumerImpl implements IForwardingRulesManager {
                 logger.error("Container Name is invalid %s" + containerName);
                 return new Status(StatusCode.BADREQUEST, "Container Name is invalid");
             }
-
+            
             groupName = group.getGroupName();
             if (!FRMUtil.isNameValid(groupName)) {
                 logger.error("Group Name is invalid %s" + groupName);
                 return new Status(StatusCode.BADREQUEST, "Group Name is invalid");
             }
-
-           /* returnResult = doesGroupEntryExists(group.getKey(), groupName, containerName);
-
-            if (FRMUtil.operation.ADD == operation && returnResult) {
-                logger.error("Record with same Group Name exists");
-                return new Status(StatusCode.BADREQUEST, "Group record exists");
-            } else if (!returnResult) {
-                logger.error("Group record does not exist");
-                return new Status(StatusCode.BADREQUEST, "Group record does not exist");
-            }*/
-
+            
             if (!(group.getGroupType().getIntValue() >= GroupTypes.GroupAll.getIntValue() && group.getGroupType()
                     .getIntValue() <= GroupTypes.GroupFf.getIntValue())) {
                 logger.error("Invalid Group type %d" + group.getGroupType().getIntValue());
@@ -258,24 +247,8 @@ public class GroupConsumerImpl implements IForwardingRulesManager {
         }
 
         return new Status(StatusCode.SUCCESS);
-
     }
 
-   /* private boolean doesGroupEntryExists(GroupKey key, String groupName, String containerName) {
-        if (!originalSwGroupView.containsKey(key)) {
-            return false;
-        }
-
-        for (ConcurrentMap.Entry<GroupKey, Group> entry : originalSwGroupView.entrySet()) {
-            if (entry.getValue().getGroupName().equals(groupName)) {
-                if (entry.getValue().getContainerName().equals(containerName)) {
-                    return true;
-                }
-            }
-        }
-        return true;
-    }*/
-
     /**
      * Update Group entries to the southbound plugin/inventory and our internal
      * database
@@ -293,27 +266,12 @@ public class GroupConsumerImpl implements IForwardingRulesManager {
             logger.error("Group data object validation failed %s" + groupUpdateDataObject.getGroupName());
             return groupOperationStatus;
         }
-
-        /*if (originalSwGroupView.containsKey(groupKey)) {
-            originalSwGroupView.remove(groupKey);
-            originalSwGroupView.put(groupKey, groupUpdateDataObject);
-        }
-*/
-        if (groupUpdateDataObject.isInstall()) {
-            UpdateGroupInputBuilder groupData = new UpdateGroupInputBuilder();
-            updateGroupBuilder = new UpdatedGroupBuilder();
-            updateGroupBuilder.fieldsFrom(groupUpdateDataObject);
-            groupData.setUpdatedGroup(updateGroupBuilder.build());
-            // TODO how to get original group and modified group.
-
-          /*  if (installedSwGroupView.containsKey(groupKey)) {
-                installedSwGroupView.remove(groupKey);
-                installedSwGroupView.put(groupKey, groupUpdateDataObject);
-            }*/
-
-            groupService.updateGroup(groupData.build());
-        }
-
+        
+        UpdateGroupInputBuilder groupData = new UpdateGroupInputBuilder();
+        updateGroupBuilder = new UpdatedGroupBuilder();
+        updateGroupBuilder.fieldsFrom(groupUpdateDataObject);
+        groupData.setUpdatedGroup(updateGroupBuilder.build());        
+        groupService.updateGroup(groupData.build());
         return groupOperationStatus;
     }
 
@@ -331,20 +289,14 @@ public class GroupConsumerImpl implements IForwardingRulesManager {
             logger.error("Group data object validation failed %s" + groupAddDataObject.getGroupName());
             return groupOperationStatus;
         }
-
-        //originalSwGroupView.put(groupKey, groupAddDataObject);
-
-        if (groupAddDataObject.isInstall()) {
-            AddGroupInputBuilder groupData = new AddGroupInputBuilder();
-            groupData.setBuckets(groupAddDataObject.getBuckets());
-            groupData.setContainerName(groupAddDataObject.getContainerName());
-            groupData.setGroupId(groupAddDataObject.getGroupId());
-            groupData.setGroupType(groupAddDataObject.getGroupType());
-            groupData.setNode(groupAddDataObject.getNode());
-        //   installedSwGroupView.put(groupKey, groupAddDataObject);
-            groupService.addGroup(groupData.build());
-        }
-
+        
+        AddGroupInputBuilder groupData = new AddGroupInputBuilder();
+        groupData.setBuckets(groupAddDataObject.getBuckets());
+        groupData.setContainerName(groupAddDataObject.getContainerName());
+        groupData.setGroupId(groupAddDataObject.getGroupId());
+        groupData.setGroupType(groupAddDataObject.getGroupType());
+        groupData.setNode(groupAddDataObject.getNode());    
+        groupService.addGroup(groupData.build());
         return groupOperationStatus;
     }
 
@@ -362,19 +314,14 @@ public class GroupConsumerImpl implements IForwardingRulesManager {
             logger.error("Group data object validation failed %s" + groupRemoveDataObject.getGroupName());
             return groupOperationStatus;
         }
-        //originalSwGroupView.put(groupKey, groupAddDataObject);
-
-        if (groupRemoveDataObject.isInstall()) {
-            RemoveGroupInputBuilder groupData = new RemoveGroupInputBuilder();
-            groupData.setBuckets(groupRemoveDataObject.getBuckets());
-            groupData.setContainerName(groupRemoveDataObject.getContainerName());
-            groupData.setGroupId(groupRemoveDataObject.getGroupId());
-            groupData.setGroupType(groupRemoveDataObject.getGroupType());
-            groupData.setNode(groupRemoveDataObject.getNode());
-        //   installedSwGroupView.put(groupKey, groupAddDataObject);
-            groupService.removeGroup(groupData.build());
-        }
-
+       
+        RemoveGroupInputBuilder groupData = new RemoveGroupInputBuilder();
+        groupData.setBuckets(groupRemoveDataObject.getBuckets());
+        groupData.setContainerName(groupRemoveDataObject.getContainerName());
+        groupData.setGroupId(groupRemoveDataObject.getGroupId());
+        groupData.setGroupType(groupRemoveDataObject.getGroupType());
+        groupData.setNode(groupRemoveDataObject.getNode());    
+        groupService.removeGroup(groupData.build());  
         return groupOperationStatus;
     }
     
@@ -405,7 +352,7 @@ public class GroupConsumerImpl implements IForwardingRulesManager {
                        }
         }
 
-        return Rpcs.getRpcResult(true, null, null);
+        return Rpcs.getRpcResult(true, null, Collections.<RpcError>emptySet());
     }
 
     private final class GroupDataCommitHandler implements DataCommitHandler<InstanceIdentifier<?>, DataObject> {
@@ -506,7 +453,6 @@ public class GroupConsumerImpl implements IForwardingRulesManager {
 
         @Override
         public void onGroupAdded(GroupAdded notification) {
-            System.out.println("added Group..........................");
             addedGroups.add(notification);
         }
 
index cef259b395629a8681bf748d4f54fdf8761d84c7..aa9d572d79724b27031b3aaa31193ec6d9d2577c 100644 (file)
@@ -39,6 +39,7 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.Sal
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.SalMeterService;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.UpdateMeterInputBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.service.rev130918.meter.update.UpdatedMeterBuilder;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.MeterId;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.BandType;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.Drop;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.meter.types.rev130918.band.type.band.type.DscpRemark;
@@ -68,15 +69,12 @@ public class MeterConsumerImpl implements IForwardingRulesManager {
     private ConcurrentMap<MeterKey, Meter> inactiveMeters;
     @SuppressWarnings("unused")
     private IContainer container;
-
-    private IClusterContainerServices clusterMeterContainerService = null;
-    
+    private IClusterContainerServices clusterMeterContainerService = null;    
 
     public MeterConsumerImpl() {
         InstanceIdentifier<? extends DataObject> path = InstanceIdentifier.builder(Meters.class).toInstance();
         meterService = FRMConsumerImpl.getProviderSession().getRpcService(SalMeterService.class);
         clusterMeterContainerService = FRMConsumerImpl.getClusterContainerService();
-
         container = FRMConsumerImpl.getContainer();
 
         if (!(cacheStartup())) {
@@ -214,22 +212,16 @@ public class MeterConsumerImpl implements IForwardingRulesManager {
      */
     private Status addMeter(InstanceIdentifier<?> path, Meter meterAddDataObject) {
         MeterKey meterKey = meterAddDataObject.getKey();
-
-        if (null != meterKey && validateMeter(meterAddDataObject, FRMUtil.operation.ADD).isSuccess()) {
-            if (meterAddDataObject.isInstall()) {
-                AddMeterInputBuilder meterBuilder = new AddMeterInputBuilder();
-
-                meterBuilder.setContainerName(meterAddDataObject.getContainerName());
-                meterBuilder.setFlags(meterAddDataObject.getFlags());
-                meterBuilder.setMeterBandHeaders(meterAddDataObject.getMeterBandHeaders());
-                meterBuilder.setMeterId(meterAddDataObject.getMeterId());
-                meterBuilder.setNode(meterAddDataObject.getNode());
-               // originalSwMeterView.put(meterKey, meterAddDataObject);
-                meterService.addMeter(meterBuilder.build());
-            }
-
-           // originalSwMeterView.put(meterKey, meterAddDataObject);
-        } else {
+        
+        if (null != meterKey && validateMeter(meterAddDataObject, FRMUtil.operation.ADD).isSuccess()) {                 
+            AddMeterInputBuilder meterBuilder = new AddMeterInputBuilder();
+            meterBuilder.setContainerName(meterAddDataObject.getContainerName());
+            meterBuilder.setFlags(meterAddDataObject.getFlags());
+            meterBuilder.setMeterBandHeaders(meterAddDataObject.getMeterBandHeaders());
+            meterBuilder.setMeterId(new MeterId(meterAddDataObject.getId()));
+            meterBuilder.setNode(meterAddDataObject.getNode());           
+            meterService.addMeter(meterBuilder.build());
+        } else {       
             return new Status(StatusCode.BADREQUEST, "Meter Key or attribute validation failed");
         }
 
@@ -246,28 +238,12 @@ public class MeterConsumerImpl implements IForwardingRulesManager {
     private Status updateMeter(InstanceIdentifier<?> path, Meter meterUpdateDataObject) {
         MeterKey meterKey = meterUpdateDataObject.getKey();
         UpdatedMeterBuilder updateMeterBuilder = null;
-
-        if (null != meterKey && validateMeter(meterUpdateDataObject, FRMUtil.operation.UPDATE).isSuccess()) {
-
-           /* if (originalSwMeterView.containsKey(meterKey)) {
-                originalSwMeterView.remove(meterKey);
-                originalSwMeterView.put(meterKey, meterUpdateDataObject);
-            }*/
-
-            if (meterUpdateDataObject.isInstall()) {
-                UpdateMeterInputBuilder updateMeterInputBuilder = new UpdateMeterInputBuilder();
-                updateMeterBuilder = new UpdatedMeterBuilder();
-                updateMeterBuilder.fieldsFrom(meterUpdateDataObject);
-                updateMeterInputBuilder.setUpdatedMeter(updateMeterBuilder.build());
-
-              /*  if (installedSwMeterView.containsKey(meterKey)) {
-                    installedSwMeterView.remove(meterKey);
-                    installedSwMeterView.put(meterKey, meterUpdateDataObject);
-                }*/
-
-                meterService.updateMeter(updateMeterInputBuilder.build());
-            }
-
+        
+        if (null != meterKey && validateMeter(meterUpdateDataObject, FRMUtil.operation.UPDATE).isSuccess()) {                UpdateMeterInputBuilder updateMeterInputBuilder = new UpdateMeterInputBuilder();
+            updateMeterBuilder = new UpdatedMeterBuilder();
+            updateMeterBuilder.fieldsFrom(meterUpdateDataObject);
+            updateMeterInputBuilder.setUpdatedMeter(updateMeterBuilder.build());
+            meterService.updateMeter(updateMeterInputBuilder.build());
         } else {
             return new Status(StatusCode.BADREQUEST, "Meter Key or attribute validation failed");
         }
@@ -285,20 +261,15 @@ public class MeterConsumerImpl implements IForwardingRulesManager {
     private Status removeMeter(InstanceIdentifier<?> path, Meter meterRemoveDataObject) {
         MeterKey meterKey = meterRemoveDataObject.getKey();
 
-        if (null != meterKey && validateMeter(meterRemoveDataObject, FRMUtil.operation.DELETE).isSuccess()) {
-            if (meterRemoveDataObject.isInstall()) {
-                RemoveMeterInputBuilder meterBuilder = new RemoveMeterInputBuilder();
-                meterBuilder.setContainerName(meterRemoveDataObject.getContainerName());
-                meterBuilder.setNode(meterRemoveDataObject.getNode());
-                meterBuilder.setFlags(meterRemoveDataObject.getFlags());
-                meterBuilder.setMeterBandHeaders(meterRemoveDataObject.getMeterBandHeaders());
-                meterBuilder.setMeterId(meterRemoveDataObject.getMeterId());
-                meterBuilder.setNode(meterRemoveDataObject.getNode());
-               // originalSwMeterView.put(meterKey, meterAddDataObject);
-                meterService.removeMeter(meterBuilder.build());
-            }
-
-           // originalSwMeterView.put(meterKey, meterAddDataObject);
+        if (null != meterKey && validateMeter(meterRemoveDataObject, FRMUtil.operation.DELETE).isSuccess()) {            
+            RemoveMeterInputBuilder meterBuilder = new RemoveMeterInputBuilder();
+            meterBuilder.setContainerName(meterRemoveDataObject.getContainerName());
+            meterBuilder.setNode(meterRemoveDataObject.getNode());
+            meterBuilder.setFlags(meterRemoveDataObject.getFlags());
+            meterBuilder.setMeterBandHeaders(meterRemoveDataObject.getMeterBandHeaders());
+            meterBuilder.setMeterId(meterRemoveDataObject.getMeterId());
+            meterBuilder.setNode(meterRemoveDataObject.getNode());        
+            meterService.removeMeter(meterBuilder.build());
         } else {
             return new Status(StatusCode.BADREQUEST, "Meter Key or attribute validation failed");
         }
@@ -329,18 +300,6 @@ public class MeterConsumerImpl implements IForwardingRulesManager {
                 return returnStatus;
             }
 
-         /*   returnResult = doesMeterEntryExists(meter.getKey(), meterName, containerName);
-
-            if (FRMUtil.operation.ADD == operation && returnResult) {
-                logger.error("Record with same Meter Name exists");
-                returnStatus = new Status(StatusCode.BADREQUEST, "Meter record exists");
-                return returnStatus;
-            } else if (!returnResult) {
-                logger.error("Group record does not exist");
-                returnStatus = new Status(StatusCode.BADREQUEST, "Meter record does not exist");
-                return returnStatus;
-            }*/
-
             for (int i = 0; i < meter.getMeterBandHeaders().getMeterBandHeader().size(); i++) {
                 if (!meter.getFlags().isMeterBurst()) {
                     if (0 < meter.getMeterBandHeaders().getMeterBandHeader().get(i).getBurstSize()) {
@@ -377,22 +336,7 @@ public class MeterConsumerImpl implements IForwardingRulesManager {
         return new Status(StatusCode.SUCCESS);
     }
 
-    /*private boolean doesMeterEntryExists(MeterKey key, String meterName, String containerName) {
-        if (!originalSwMeterView.containsKey(key)) {
-            return false;
-        }
-
-        for (Entry<MeterKey, Meter> entry : originalSwMeterView.entrySet()) {
-            if (entry.getValue().getMeterName().equals(meterName)) {
-                if (entry.getValue().getContainerName().equals(containerName)) {
-                    return true;
-                }
-            }
-        }
-        return false;
-    }*/
-
-    private final class InternalTransaction implements DataCommitTransaction<InstanceIdentifier<?>, DataObject> {
+    final class InternalTransaction implements DataCommitTransaction<InstanceIdentifier<?>, DataObject> {
 
         private final DataModification<InstanceIdentifier<?>, DataObject> modification;
 
@@ -500,7 +444,6 @@ public class MeterConsumerImpl implements IForwardingRulesManager {
         public org.opendaylight.controller.md.sal.common.api.data.DataCommitHandler.DataCommitTransaction<InstanceIdentifier<?>, DataObject> requestCommit(
                 DataModification<InstanceIdentifier<?>, DataObject> modification) {
             // We should verify transaction
-            System.out.println("Coming in MeterDataCommitHandler");
             InternalTransaction transaction = new InternalTransaction(modification);
             transaction.prepareUpdate();
             return transaction;
@@ -555,6 +498,7 @@ public class MeterConsumerImpl implements IForwardingRulesManager {
                 }
             }
         }
+        
         return null;
     }
 }