use of org.opendaylight.yang.gen.v1.urn.opendaylight.genius.resourcemanager.rev160622.GetResourcePoolOutput in project genius by opendaylight.
the class ResourceManager method getResourcePool.
@Override
public Future<RpcResult<GetResourcePoolOutput>> getResourcePool(GetResourcePoolInput input) {
Objects.requireNonNull(input.getResourceType(), RESOURCE_TYPE_CANNOT_BE_NULL);
Objects.requireNonNull(resourcesCache.get(input.getResourceType()), RESOURCE_TYPE_CANNOT_BE_NULL);
long currentTimeSec = System.currentTimeMillis() / 1000;
List<AvailableIds> availableIdsList = new ArrayList<>();
List<DelayedResourceEntries> delayedIdEntriesList = new ArrayList<>();
InstanceIdentifier<IdPool> parentId = ResourceManagerUtils.getIdPoolInstance(resourcesCache.get(input.getResourceType()));
Optional<IdPool> optionalParentIdPool = MDSALUtil.read(LogicalDatastoreType.CONFIGURATION, parentId, dataBroker);
if (optionalParentIdPool != null && optionalParentIdPool.isPresent()) {
IdPool parentIdPool = optionalParentIdPool.get();
AvailableIdsHolder availableParentIdsHolder = parentIdPool.getAvailableIdsHolder();
if (availableParentIdsHolder.getStart() < availableParentIdsHolder.getEnd()) {
availableIdsList.add(new AvailableIdsBuilder().setStart(availableParentIdsHolder.getStart()).setEnd(availableParentIdsHolder.getEnd()).build());
}
ReleasedIdsHolder releasedParentIdsHolder = parentIdPool.getReleasedIdsHolder();
if (releasedParentIdsHolder != null) {
List<DelayedIdEntries> delayedIdParentList = releasedParentIdsHolder.getDelayedIdEntries();
if (delayedIdParentList != null && !delayedIdParentList.isEmpty()) {
for (DelayedIdEntries delayedParentEntry : delayedIdParentList) {
delayedIdEntriesList.add(new DelayedResourceEntriesBuilder().setId(delayedParentEntry.getId()).setReadyTimeSec(delayedParentEntry.getReadyTimeSec()).build());
}
}
}
}
String localPool = ResourceManagerUtils.getLocalPoolName(resourcesCache.get(input.getResourceType()));
InstanceIdentifier<IdPool> localId = ResourceManagerUtils.getIdPoolInstance(localPool);
Optional<IdPool> optionalLocalId = MDSALUtil.read(LogicalDatastoreType.CONFIGURATION, localId, dataBroker);
if (optionalLocalId != null && optionalLocalId.isPresent()) {
IdPool localIdPool = optionalLocalId.get();
AvailableIdsHolder availableLocalIdsHolder = localIdPool.getAvailableIdsHolder();
if (availableLocalIdsHolder != null && availableLocalIdsHolder.getStart() < availableLocalIdsHolder.getEnd()) {
availableIdsList.add(new AvailableIdsBuilder().setStart(availableLocalIdsHolder.getStart()).setEnd(availableLocalIdsHolder.getEnd()).build());
}
ReleasedIdsHolder releasedLocalIdsHolder = localIdPool.getReleasedIdsHolder();
if (releasedLocalIdsHolder != null) {
List<DelayedIdEntries> delayedIdLocalList = releasedLocalIdsHolder.getDelayedIdEntries();
if (delayedIdLocalList != null && !delayedIdLocalList.isEmpty()) {
for (DelayedIdEntries delayedLocalEntry : delayedIdLocalList) {
if (delayedLocalEntry.getReadyTimeSec() > currentTimeSec) {
break;
}
delayedIdEntriesList.add(new DelayedResourceEntriesBuilder().setId(delayedLocalEntry.getId()).setReadyTimeSec(delayedLocalEntry.getReadyTimeSec()).build());
}
}
}
}
GetResourcePoolOutput output = new GetResourcePoolOutputBuilder().setAvailableIds(availableIdsList).setDelayedResourceEntries(delayedIdEntriesList).build();
return RpcResultBuilder.success(output).buildFuture();
}
Aggregations