use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class AzureNetworkEnumerationAdapterService method queryNetworkStates.
/**
* Query network states stored in the local document store based on the retrieved azure virtual
* networks.
*/
private void queryNetworkStates(NetworkEnumContext context, NetworkEnumStages next) {
logFine(() -> "Query Network States from local document store.");
Query.Builder qBuilder = Query.Builder.create().addKindFieldClause(NetworkState.class).addInClause(NetworkState.FIELD_NAME_ID, context.virtualNetworks.keySet());
QueryByPages<NetworkState> queryLocalStates = new QueryByPages<>(getHost(), qBuilder.build(), NetworkState.class, context.parentCompute.tenantLinks, null, /* endpoint */
context.parentCompute.documentSelfLink).setMaxPageSize(QueryUtils.MAX_RESULT_LIMIT).setClusterType(ServiceTypeCluster.INVENTORY_SERVICE);
queryLocalStates.queryDocuments(network -> context.networkStates.put(network.id, network)).whenComplete(thenHandleSubStage(context, next));
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class AzureComputeEnumerationAdapterService method queryForComputeStates.
/**
* Query all compute states for the cluster filtered by the received set of instance Ids.
*/
private void queryForComputeStates(EnumerationContext ctx, ComputeEnumerationSubStages next) {
if (ctx.virtualMachines.isEmpty() && ctx.regions.isEmpty()) {
ctx.subStage = ComputeEnumerationSubStages.DISASSOCIATE_COMPUTE_STATES;
handleSubStage(ctx);
return;
}
Query.Builder qBuilder = Query.Builder.create().addKindFieldClause(ComputeState.class).addFieldClause(ComputeState.FIELD_NAME_PARENT_LINK, ctx.request.resourceLink());
Query.Builder instanceIdFilterParentQuery = Query.Builder.create(Occurance.MUST_OCCUR);
for (String instanceId : ctx.virtualMachines.keySet()) {
Query instanceIdFilter = Query.Builder.create(Occurance.SHOULD_OCCUR).addFieldClause(ComputeState.FIELD_NAME_ID, instanceId).build();
instanceIdFilterParentQuery.addClause(instanceIdFilter);
}
// also get compute states representing regions
for (RegionInfo region : ctx.regions.values()) {
Query instanceIdFilter = Query.Builder.create(Occurance.SHOULD_OCCUR).addFieldClause(ComputeState.FIELD_NAME_ID, region.regionId).build();
instanceIdFilterParentQuery.addClause(instanceIdFilter);
}
qBuilder.addClause(instanceIdFilterParentQuery.build());
QueryByPages<ComputeState> queryLocalStates = new QueryByPages<>(getHost(), qBuilder.build(), ComputeState.class, ctx.parentCompute.tenantLinks, // endpointLink
null, ctx.parentCompute.documentSelfLink).setMaxPageSize(QueryUtils.MAX_RESULT_LIMIT).setClusterType(ServiceTypeCluster.INVENTORY_SERVICE);
queryLocalStates.queryDocuments(c -> ctx.computeStates.put(c.id, c)).whenComplete(thenHandleSubStage(ctx, next));
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class TestAWSSetupUtils method resourceStatsAggregation.
/**
* Performs stats aggregation for given resourcePoolLink
*/
public static void resourceStatsAggregation(VerificationHost host, String resourcePoolLink) throws Throwable {
host.testStart(1);
StatsAggregationTaskState statsAggregationTaskState = new StatsAggregationTaskState();
Query taskQuery = Query.Builder.create().addKindFieldClause(ComputeState.class).addFieldClause(ComputeState.FIELD_NAME_RESOURCE_POOL_LINK, resourcePoolLink).build();
statsAggregationTaskState.query = taskQuery;
statsAggregationTaskState.taskInfo = TaskState.createDirect();
statsAggregationTaskState.metricNames = getMetricNames();
host.send(Operation.createPost(UriUtils.buildUri(host, StatsAggregationTaskService.FACTORY_LINK)).setBody(statsAggregationTaskState).setCompletion(host.getCompletion()));
host.testWait();
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class AzureSubscriptionsEnumerationService method updateExistingResources.
private void updateExistingResources(AzureSubscriptionsEnumerationContext enumerationContext, AzureCostComputeEnumerationStages nextStage) {
// Query the subscriptions which we want to create to check if they already exist
Query azureSubscriptionEndpointQuery = createQueryForAzureSubscriptionEndpoints(enumerationContext);
// Use max page size since we are collectDocuments EndpointStates
QueryByPages<EndpointState> querySubscriptionEndpoints = new QueryByPages<>(getHost(), azureSubscriptionEndpointQuery, EndpointState.class, enumerationContext.parent.tenantLinks).setMaxPageSize(QueryUtils.MAX_RESULT_LIMIT).setClusterType(ServiceTypeCluster.INVENTORY_SERVICE);
querySubscriptionEndpoints.collectDocuments(Collectors.toList()).whenComplete((subscriptionEndpoints, t) -> {
if (t != null) {
getFailureConsumer(enumerationContext).accept(t);
return;
}
if (subscriptionEndpoints.isEmpty()) {
enumerationContext.stage = nextStage;
handleAzureSubscriptionsEnumerationRequest(enumerationContext);
return;
}
queryExistingComputeStatesOfEndpoints(enumerationContext, nextStage, subscriptionEndpoints);
});
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class SingleResourceStatsAggregationTaskService method getLastRollupTime.
private void getLastRollupTime(SingleResourceStatsAggregationTaskState currentState) {
Map<String, Long> lastUpdateMap = new HashMap<>();
for (String metricName : currentState.metricNames) {
List<String> rollupKeys = buildRollupKeys(metricName);
for (String rollupKey : rollupKeys) {
lastUpdateMap.put(rollupKey, null);
}
}
// Lookup last rollup time from in memory stats - /<resource-link>/stats
URI statsUri = UriUtils.buildStatsUri(UriUtils.extendUri(ClusterUtil.getClusterUri(getHost(), ServiceTypeCluster.INVENTORY_SERVICE), currentState.resourceLink));
sendRequest(Operation.createGet(statsUri).setCompletion((o, e) -> {
if (e != null) {
logWarning(() -> String.format("Could not get stats for resource: %s," + " error: %s", currentState.resourceLink, e.getMessage()));
// get the value based on a query.
getLastRollupTimeFromQuery(currentState, lastUpdateMap);
return;
}
ServiceStats serviceStats = o.getBody(ServiceStats.class);
lastUpdateMap.keySet().stream().filter(rollupKey -> serviceStats.entries.containsKey(rollupKey)).forEach(rollupKey -> lastUpdateMap.put(rollupKey, (long) serviceStats.entries.get(rollupKey).latestValue));
getLastRollupTimeFromQuery(currentState, lastUpdateMap);
}));
}
Aggregations