Search in sources :

Example 61 with Query

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;
}
Also used : Query(com.vmware.xenon.services.common.QueryTask.Query) PhotonModelUtils.createOriginTagQuery(com.vmware.photon.controller.model.resources.util.PhotonModelUtils.createOriginTagQuery) LinkedHashMap(java.util.LinkedHashMap) HashMap(java.util.HashMap) AzureTestUtil.randomString(com.vmware.photon.controller.model.adapters.azure.instance.AzureTestUtil.randomString) TagState(com.vmware.photon.controller.model.resources.TagService.TagState) TagsUtil.newTagState(com.vmware.photon.controller.model.adapters.util.TagsUtil.newTagState)

Example 62 with Query

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));
}
Also used : QueryTask(com.vmware.xenon.services.common.QueryTask) Query(com.vmware.xenon.services.common.QueryTask.Query)

Example 63 with Query

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);
}
Also used : QueryTask(com.vmware.xenon.services.common.QueryTask) Query(com.vmware.xenon.services.common.QueryTask.Query)

Example 64 with Query

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;
    });
}
Also used : QueryTask(com.vmware.xenon.services.common.QueryTask) Query(com.vmware.xenon.services.common.QueryTask.Query)

Example 65 with Query

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;
    }));
}
Also used : Arrays(java.util.Arrays) ModelUtils(com.vmware.photon.controller.model.ModelUtils) BaseModelTest(com.vmware.photon.controller.model.helpers.BaseModelTest) QueryByPages(com.vmware.photon.controller.model.query.QueryUtils.QueryByPages) ComputeDescription(com.vmware.photon.controller.model.resources.ComputeDescriptionService.ComputeDescription) Matchers.notNullValue(org.hamcrest.Matchers.notNullValue) Set(java.util.Set) CompletionException(java.util.concurrent.CompletionException) Test(org.junit.Test) QueryTop(com.vmware.photon.controller.model.query.QueryUtils.QueryTop) Matchers.instanceOf(org.hamcrest.Matchers.instanceOf) HashSet(java.util.HashSet) List(java.util.List) Query(com.vmware.xenon.services.common.QueryTask.Query) ComputeState(com.vmware.photon.controller.model.resources.ComputeService.ComputeState) Collectors.mapping(java.util.stream.Collectors.mapping) Matchers.equalTo(org.hamcrest.Matchers.equalTo) QueryTemplate(com.vmware.photon.controller.model.query.QueryUtils.QueryTemplate) DeferredResult(com.vmware.xenon.common.DeferredResult) PhotonModelUtils.waitToComplete(com.vmware.photon.controller.model.resources.util.PhotonModelUtils.waitToComplete) MatcherAssert.assertThat(org.hamcrest.MatcherAssert.assertThat) Collections(java.util.Collections) Collectors.toSet(java.util.stream.Collectors.toSet) ComputeState(com.vmware.photon.controller.model.resources.ComputeService.ComputeState) QueryByPages(com.vmware.photon.controller.model.query.QueryUtils.QueryByPages) Query(com.vmware.xenon.services.common.QueryTask.Query) ComputeDescription(com.vmware.photon.controller.model.resources.ComputeDescriptionService.ComputeDescription) HashSet(java.util.HashSet) BaseModelTest(com.vmware.photon.controller.model.helpers.BaseModelTest) Test(org.junit.Test)

Aggregations

Query (com.vmware.xenon.services.common.QueryTask.Query)81 QueryTask (com.vmware.xenon.services.common.QueryTask)50 Operation (com.vmware.xenon.common.Operation)39 ArrayList (java.util.ArrayList)29 HashMap (java.util.HashMap)26 ComputeState (com.vmware.photon.controller.model.resources.ComputeService.ComputeState)25 Utils (com.vmware.xenon.common.Utils)22 List (java.util.List)21 Map (java.util.Map)21 QueryUtils (com.vmware.photon.controller.model.query.QueryUtils)20 UriUtils (com.vmware.xenon.common.UriUtils)20 HashSet (java.util.HashSet)20 QueryByPages (com.vmware.photon.controller.model.query.QueryUtils.QueryByPages)19 ServiceTypeCluster (com.vmware.photon.controller.model.util.ClusterUtil.ServiceTypeCluster)18 Set (java.util.Set)18 URI (java.net.URI)17 OperationJoin (com.vmware.xenon.common.OperationJoin)16 StatelessService (com.vmware.xenon.common.StatelessService)16 Collections (java.util.Collections)15 Collectors (java.util.stream.Collectors)15