public static QueryTask createQueryTaskForProjectAssociatedWithPlacement(ResourceState project, Query query) { QueryTask queryTask = null; if (query != null) { queryTask = QueryTask.Builder.createDirectTask().setQuery(query).build(); } else if (project != null && project.documentSelfLink != null) { queryTask = QueryUtil.buildQuery(GroupResourcePlacementState.class, true, QueryUtil.addTenantAndGroupClause(Arrays.asList(project.documentSelfLink))); } if (queryTask != null) { QueryUtil.addCountOption(queryTask); } return queryTask; }
private void verifyPlacementZoneIsEmpty(ContainerHostSpec hostSpec, Operation op, Runnable successCallback) { String placementZoneLink = hostSpec.hostState.resourcePoolLink; if (placementZoneLink == null || placementZoneLink.isEmpty()) { // no placement zone to verify successCallback.run(); return; } AtomicBoolean emptyZone = new AtomicBoolean(true); QueryTask queryTask = QueryUtil.buildPropertyQuery(ComputeState.class, ComputeState.FIELD_NAME_RESOURCE_POOL_LINK, placementZoneLink); QueryUtil.addCountOption(queryTask); new ServiceDocumentQuery<>(getHost(), ComputeState.class) .query(queryTask, (r) -> { if (r.hasException()) { op.fail(r.getException()); } else if (r.getCount() > 0) { emptyZone.set(false); op.fail(new LocalizableValidationException(PLACEMENT_ZONE_NOT_EMPTY_MESSAGE, PLACEMENT_ZONE_NOT_EMPTY_MESSAGE_CODE)); } else { if (emptyZone.get()) { successCallback.run(); } } }); }
@SuppressWarnings("unchecked") private <T extends ServiceDocument> void countResourcesForPlacement( GroupResourcePlacementState state, Consumer<ServiceDocumentQueryElementResult<T>> completionHandler) { QueryTask queryTask; Class<T> resourceClass; if (ResourceType.CONTAINER_TYPE.getName().equals(state.resourceType)) { resourceClass = (Class<T>) ContainerState.class; queryTask = QueryUtil.buildPropertyQuery(resourceClass, ContainerState.FIELD_NAME_GROUP_RESOURCE_PLACEMENT_LINK, state.documentSelfLink); } else { throw new LocalizableValidationException("Unsupported placement resourceType " + state.resourceType, "compute.placements.invalid.resource.type"); } QueryUtil.addCountOption(queryTask); new ServiceDocumentQuery<>(getHost(), resourceClass) .query(queryTask, completionHandler); }
QueryUtil.addListValueClause(q, ContainerVolumeState.FIELD_NAME_DESCRIPTION_LINK, descLinksWithNames.keySet()); QueryUtil.addCountOption(q);
QueryTask containerQuery = QueryUtil.buildPropertyQuery(ContainerState.class, ContainerState.FIELD_NAME_PARENT_LINK, containerHostLink); QueryUtil.addCountOption(containerQuery); ContainerState.FIELD_NAME_SYSTEM, Arrays.asList(Boolean.TRUE.toString())); QueryUtil.addCountOption(systemContainerQuery); new ServiceDocumentQuery<ContainerState>(getHost(), ContainerState.class) .query(systemContainerQuery, (result) -> {
Arrays.asList(resourceDescriptionLink)); QueryUtil.addCountOption(resourceStateQueryTask);
public static DeferredResult<Void> handleDelete(Service service, Operation op) { ResourcePoolState currentState = service.getState(op); QueryTask queryTask; if (currentState.query != null) { queryTask = QueryTask.Builder.createDirectTask().setQuery(currentState.query).build(); } else if (currentState.documentSelfLink != null) { queryTask = QueryUtil.buildPropertyQuery(ComputeState.class, ComputeState.FIELD_NAME_RESOURCE_POOL_LINK, currentState.documentSelfLink); } else { return null; } QueryUtil.addCountOption(queryTask); return QueryUtils.startQueryTask(service, queryTask) .thenAccept(qt -> { ServiceDocumentQueryResult result = qt.results; if (result.documentCount != 0) { throw new LocalizableValidationException( PLACEMENT_ZONE_IN_USE_MESSAGE, PLACEMENT_ZONE_IN_USE_MESSAGE_CODE); } }); } }
private QueryTask buildRequestStatusQuery(List<String> tenantLinks) { QueryTask requestStatusQuery = QueryUtil.buildQuery(RequestStatus.class, true); QueryTask.Query runningTasksClause = new QueryTask.Query(); if (!tenantLinks.isEmpty()) { requestStatusQuery.querySpec.query.addBooleanClause(QueryUtil .addTenantGroupAndUserClause(tenantLinks)); } QueryTask.Query taskCreatedClause = new QueryTask.Query() .setTermPropertyName(TaskStatusState.FIELD_NAME_TASK_INFO + ".stage") .setTermMatchValue(TaskState.TaskStage.CREATED.toString()); taskCreatedClause.occurance = Occurance.SHOULD_OCCUR; runningTasksClause.addBooleanClause(taskCreatedClause); QueryTask.Query taskStartedClause = new QueryTask.Query() .setTermPropertyName(TaskStatusState.FIELD_NAME_TASK_INFO + ".stage") .setTermMatchValue(TaskState.TaskStage.STARTED.toString()); taskStartedClause.occurance = Occurance.SHOULD_OCCUR; runningTasksClause.addBooleanClause(taskStartedClause); requestStatusQuery.querySpec.query.addBooleanClause(runningTasksClause); QueryUtil.addCountOption(requestStatusQuery); return requestStatusQuery; }
private QueryTask buildEventLogCountQuery(List<String> tenantLinks) { QueryTask qt = QueryUtil.buildQuery(EventLogState.class, true); if (!tenantLinks.isEmpty()) { qt.querySpec.query.addBooleanClause(QueryUtil.addTenantGroupAndUserClause(tenantLinks)); } long nMinutesAgo = Utils.fromNowMicrosUtc(-EVENTS_TIME_INTERVAL_MICROS); QueryTask.Query numOfInstancesClause = new QueryTask.Query() .setTermPropertyName(ServiceDocument.FIELD_NAME_UPDATE_TIME_MICROS) .setNumericRange(NumericRange.createLongRange(nMinutesAgo, Long.MAX_VALUE, true, false)) .setTermMatchType(MatchType.TERM); qt.querySpec.query.addBooleanClause(numOfInstancesClause); QueryTask.Query eventTypeClause = new QueryTask.Query() .setTermPropertyName(EventLogState.FIELD_NAME_EVENT_LOG_TYPE) .setTermMatchValue(EventLogState.EventLogType.INFO.toString()) .setTermMatchType(MatchType.TERM); eventTypeClause.occurance = Occurance.MUST_NOT_OCCUR; qt.querySpec.query.addBooleanClause(eventTypeClause); QueryUtil.addCountOption(qt); return qt; }
QueryUtil.addCountOption(queryTask);
ContainerHostService.CUSTOM_PROPERTY_DEPLOYMENT_POLICY), getSelfLink()); QueryUtil.addCountOption(computeTask); QueryUtil.addCountOption(computeTask);
private void verifyEventsCount(int count) throws Throwable { Long[] resultCount = new Long[1]; Throwable[] ex = new Throwable[1]; waitFor(() -> { QueryTask query = QueryUtil.buildQuery(EventLogState.class, true); QueryUtil.addCountOption(query); new ServiceDocumentQuery<EventLogState>(host, EventLogState.class) .query(query, (r) -> { if (r.hasException()) { ex[0] = r.getException(); return; } resultCount[0] = r.getCount(); }); return resultCount[0] != null; }); if (ex[0] != null) { Assert.fail("Could not retrieve list of events after delete"); } Assert.assertEquals(count, resultCount[0].longValue()); }
QueryUtil.addCountOption(query); waitFor(() -> { QueryTask query = QueryUtil.buildQuery(EventLogState.class, true); QueryUtil.addCountOption(query);
private void countQueryContainers(int expectedCount) throws Throwable { List<Long> list = new ArrayList<>(); QuerySpecification qs = new QuerySpecification(); qs.query = Query.Builder.create().addKindFieldClause(ContainerState.class).build(); QueryTask qt = QueryTask.create(qs); QueryUtil.addCountOption(qt); host.testStart(1); new ServiceDocumentQuery<>( host, null).query(qt, (r) -> { if (r.hasException()) { host.failIteration(r.getException()); return; } list.add(r.getCount()); host.completeIteration(); }); host.testWait(); assertTrue(expectedCount == list.get(0)); }
public static DeferredResult<Void> handleDelete(Service service, Operation op) { DeferredResult<Void> dr = new DeferredResult<>(); service.sendRequest(Operation.createPost(service, ServiceUriPaths.CORE_QUERY_TASKS) .setBody(QueryUtil.addCountOption(QueryUtil.buildPropertyQuery(ComputeState.class, QuerySpecification.buildCompositeFieldName( ComputeState.FIELD_NAME_CUSTOM_PROPERTIES, ComputeConstants.HOST_AUTH_CREDENTIALS_PROP_NAME), service.getSelfLink()))) .setCompletion((o, e) -> { if (e != null) { service.getHost().log(Level.WARNING, Utils.toString(e)); dr.fail(e); } ServiceDocumentQueryResult result = o.getBody(QueryTask.class).results; if (result.documentCount != 0) { op.fail(new LocalizableValidationException(CREDENTIALS_IN_USE_MESSAGE, CREDENTIALS_IN_USE_MESSAGE_CODE)); } dr.complete(null); })); return dr; }
qs.query = Query.Builder.create().addKindFieldClause(ContainerDescription.class).build(); qt = QueryTask.create(qs); QueryUtil.addCountOption(qt); qt.documentSelfLink = queryTaskDocumentSelfLink + 3; host.testStart(1);