use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class TestAzureLongRunningEnumeration method getInternalTypeTagsList.
private List<TagState> getInternalTypeTagsList() {
Query query = Query.Builder.create().addKindFieldClause(TagState.class).addFieldClause(TagState.FIELD_NAME_KEY, PhotonModelConstants.TAG_KEY_TYPE).build();
Map<String, Query.Occurance> origin = new HashMap<>();
origin.put(DISCOVERED.toString(), Query.Occurance.SHOULD_OCCUR);
origin.put(SYSTEM.toString(), Query.Occurance.SHOULD_OCCUR);
origin.put(USER_DEFINED.toString(), Query.Occurance.MUST_NOT_OCCUR);
Query internalQuery = createOriginTagQuery(Boolean.FALSE, origin);
query.addBooleanClause(internalQuery);
QueryStrategy<TagState> queryLocalTags = new QueryTop<>(getHost(), query, TagState.class, null).setMaxResultsLimit(Integer.MAX_VALUE);
List<TagState> tagStates = waitToComplete(queryLocalTags.collectDocuments(Collectors.toList()));
return tagStates;
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class AzureComputeHostStatsGatherer method getComputeHostStats.
/**
* Query all the children VMs of the compute host.
*/
private void getComputeHostStats(AzureStatsDataHolder statsData) {
Query query = Query.Builder.create().addKindFieldClause(ComputeState.class).addFieldClause(ComputeState.FIELD_NAME_PARENT_LINK, statsData.computeHost.documentSelfLink).build();
QueryTask queryTask = QueryTask.Builder.createDirectTask().setQuery(query).setResultLimit(getQueryResultLimit()).build();
queryTask.tenantLinks = statsData.computeHost.tenantLinks;
QueryUtils.startInventoryQueryTask(this, queryTask).whenComplete((qrt, e) -> handleComputeQueryCompletion(qrt, e, statsData));
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class AzureComputeHostStatsGatherer method getStatsQueryTaskOperation.
/**
* Create a query task for each compute VM and return the operation.
*/
private Operation getStatsQueryTaskOperation(AzureStatsDataHolder statsData, String computeLink) {
String computeId = UriUtils.getLastPathSegment(computeLink);
String selfLink = UriUtils.buildUriPath(ResourceMetricsService.FACTORY_LINK, computeId);
// TODO VSYM-3695: Limit the time boundaries on Azure metrics retrieval for each compute
Query query = Query.Builder.create().addKindFieldClause(ResourceMetrics.class).addFieldClause(ServiceDocument.FIELD_NAME_SELF_LINK, selfLink, MatchType.PREFIX).build();
QueryTask queryTask = QueryTask.Builder.createDirectTask().setQuery(query).addOption(QueryOption.EXPAND_CONTENT).addOption(QueryOption.TOP_RESULTS).setResultLimit(QueryUtils.DEFAULT_MAX_RESULT_LIMIT).build();
queryTask.tenantLinks = statsData.computeHost.tenantLinks;
return QueryUtils.createQueryTaskOperation(this, queryTask, ServiceTypeCluster.METRIC_SERVICE);
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class VsphereResourceCleanerService method deleteComputeIfNoChildren.
private void deleteComputeIfNoChildren(String computeLink, Operation patch) {
Query q = Builder.create().addKindFieldClause(ComputeState.class).addCompositeFieldClause(ResourceState.FIELD_NAME_CUSTOM_PROPERTIES, ComputeProperties.PLACEMENT_LINK, computeLink).build();
QueryTask task = QueryTask.Builder.createDirectTask().setQuery(q).setResultLimit(1).build();
QueryUtils.startInventoryQueryTask(this, task).handle((qt, e) -> {
if (e != null) {
patch.complete();
return null;
}
if (qt.results.nextPageLink == null) {
// no resource placed here, safe to delete
Operation.createDelete(PhotonModelUriUtils.createInventoryUri(getHost(), computeLink)).setCompletion(justComplete(patch)).sendWith(this);
} else {
patchToRetired(computeLink).setCompletion(justComplete(patch)).sendWith(this);
}
return null;
});
}
use of com.vmware.xenon.services.common.QueryTask.Query in project photon-model by vmware.
the class QueryUtilsTest method testQueryReferrers_error.
@Test
public void testQueryReferrers_error() throws Throwable {
ComputeDescription cd = ModelUtils.createComputeDescription(this, null, null);
ModelUtils.createCompute(this, cd);
ModelUtils.createCompute(this, cd);
Query queryForReferrers = QueryUtils.queryForReferrers(cd.documentSelfLink, ComputeState.class, ComputeState.FIELD_NAME_DESCRIPTION_LINK);
// The class under testing
QueryStrategy<ComputeState> queryStrategy = new QueryByPages<>(getHost(), queryForReferrers, ComputeState.class, Collections.emptyList(), null);
Set<String> actual = new HashSet<>();
// The method under testing
waitToComplete(queryStrategy.queryDocuments(cs -> {
if (actual.isEmpty()) {
actual.add(cs.documentSelfLink);
} else {
throw new RuntimeException("consume error");
}
}).handle((v, e) -> {
// Validate processed docs
assertThat(actual.size(), equalTo(1));
// Validate exception propagation
assertThat(e, notNullValue());
assertThat(e, instanceOf(CompletionException.class));
assertThat(e.getCause().getMessage(), equalTo("consume error"));
// Recover from exception to prevent its propagation to outer test method
return (Void) null;
}));
}
Aggregations