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()) {
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. "
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;
}
public GroupConsumerImpl getGroupImplRef() {
- return groupImplRef;
+ return groupImplRef;
}
-
public static ProviderContext getProviderSession() {
return p_session;
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;
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");
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() {
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());
}
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
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;
}
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;
}
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;
}
}
}
- return Rpcs.getRpcResult(true, null, null);
+ return Rpcs.getRpcResult(true, null, Collections.<RpcError>emptySet());
}
private final class GroupDataCommitHandler implements DataCommitHandler<InstanceIdentifier<?>, DataObject> {
@Override
public void onGroupAdded(GroupAdded notification) {
- System.out.println("added Group..........................");
addedGroups.add(notification);
}
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;
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())) {
*/
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");
}
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");
}
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");
}
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()) {
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;
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;
}
}
}
+
return null;
}
}