private void updateResourcePool(PlacementCapacityUpdateTaskState state) { // calculate average cpu usage per core double totalCpuUsage = 0.0; if (state.aggregatedStats.cpuCoreCount > 0) { totalCpuUsage = state.aggregatedStats.cpuUsageSumAllCores / state.aggregatedStats.cpuCoreCount; } ResourcePoolState rpPatchState = new ResourcePoolState(); rpPatchState.customProperties = new HashMap<>(); rpPatchState.customProperties.put( ContainerHostDataCollectionService.RESOURCE_POOL_CPU_USAGE_CUSTOM_PROP, Double.toString(totalCpuUsage)); rpPatchState.customProperties.put( ContainerHostDataCollectionService.RESOURCE_POOL_AVAILABLE_MEMORY_CUSTOM_PROP, Long.toString(state.aggregatedStats.availableMemoryBytes)); rpPatchState.maxMemoryBytes = state.aggregatedStats.totalMemoryBytes; sendRequest(Operation.createPatch(this, state.resourcePoolLink) .setBody(rpPatchState) .setCompletion((o, e) -> { if (e != null) { failTask(String.format("Unable to update resource pool '%s'", state.resourcePoolLink), e); return; } proceedTo(PlacementCapacityUpdateTaskState.SubStage.UPDATE_PLACEMENTS); })); }
private void handleComputePage(PlacementCapacityUpdateTaskState state) { sendRequest(Operation .createGet(getHost(), state.nextPageLink) .setCompletion((o, e) -> { if (e != null) { failTask("Error retrieving computes", e); return; } ServiceDocumentQueryResult result = o.getBody(QueryTask.class).results; List<ComputeState> computes = result.documents.values().stream() .map(json -> Utils.fromJson(json, ComputeState.class)) .collect(Collectors.toList()); if (computes.isEmpty()) { proceedTo(PlacementCapacityUpdateTaskState.SubStage.UPDATE_RESOURCE_POOL); } else { queryComputeDescriptions(state, computes, result.nextPageLink); } })); }
if (diff <= 0) { logFine("No placement update needed for resource pool '%s'", state.resourcePoolLink); proceedTo(PlacementCapacityUpdateTaskState.SubStage.COMPLETED); return; failTask("Error updating placements", exs.values().iterator().next()); } else { proceedTo(PlacementCapacityUpdateTaskState.SubStage.COMPLETED);
@Override protected void handleStartedStagePatch(PlacementCapacityUpdateTaskState state) { switch (state.taskSubStage) { case CREATED: proceedTo(PlacementCapacityUpdateTaskState.SubStage.QUERY_COMPUTES); break; case QUERY_COMPUTES: startComputeQuery(state, null); break; case ACCUMMULATE_COMPUTE_FIGURES: handleComputePage(state); break; case UPDATE_RESOURCE_POOL: updateResourcePool(state); break; case UPDATE_PLACEMENTS: retrieveAndUpdatePlacements(state); break; case COMPLETED: complete(); break; case ERROR: completeWithError(); break; default: break; } }
if (result.nextPageLink == null) { logFine("No computes found in resource pool %s", state.resourcePoolLink); proceedTo(PlacementCapacityUpdateTaskState.SubStage.UPDATE_RESOURCE_POOL, s -> { s.aggregatedStats = new AggregatedComputeStats(); }); } else { proceedTo(PlacementCapacityUpdateTaskState.SubStage.ACCUMMULATE_COMPUTE_FIGURES, s -> { s.aggregatedStats = new AggregatedComputeStats(); s.nextPageLink = result.nextPageLink;