private QueryTask createResourcesQuery(Class<? extends ServiceDocument> type, Collection<String> resourceLinks) { QueryTask query = QueryUtil.buildQuery(type, false); QueryUtil.addListValueClause(query, ServiceDocument.FIELD_NAME_SELF_LINK, resourceLinks); return query; }
private QueryTask createResourcesQuery(Class<? extends ServiceDocument> type, Set<String> resourceLinks) { QueryTask query = QueryUtil.buildQuery(type, false); query.querySpec.options = EnumSet.of(QueryOption.EXPAND_CONTENT); QueryUtil.addListValueClause(query, ServiceDocument.FIELD_NAME_SELF_LINK, resourceLinks); return query; }
private QueryTask createResourcesQuery(Class<? extends ServiceDocument> type, Collection<String> resourceLinks) { QueryTask query = QueryUtil.buildQuery(type, false); if (resourceLinks != null && !resourceLinks.isEmpty()) { QueryUtil.addListValueClause(query, ServiceDocument.FIELD_NAME_SELF_LINK, resourceLinks); } return query; }
private QueryTask createResourcesQuery(Class<? extends ServiceDocument> type, Collection<String> resourceLinks) { QueryTask query = QueryUtil.buildQuery(type, false); QueryUtil.addListValueClause(query, ServiceDocument.FIELD_NAME_SELF_LINK, resourceLinks); return query; } }
public static QueryTask buildQuery(Class<? extends ServiceDocument> stateClass, boolean direct, QueryTask.Query... clauses) { String kind = Utils.buildKind(stateClass); return buildQuery(kind, direct, clauses); }
protected QueryTask getDescQuery() { final QueryTask q = QueryUtil.buildQuery(ContainerDescription.class, false); QueryUtil.addCaseInsensitiveListValueClause(q, ContainerDescription.FIELD_NAME_NAME, getAffinity()); QueryUtil.addExpandOption(q); return q; }
public static QueryTask buildPropertyQuery(Class<? extends ServiceDocument> stateClass, String... propsAndValues) { QueryTask.Query[] queries = new QueryTask.Query[propsAndValues.length / 2]; for (int i = 0; i < propsAndValues.length; i++) { String prop = propsAndValues[i]; String value = propsAndValues[++i]; QueryTask.Query clause = new QueryTask.Query() .setTermPropertyName(prop) .setTermMatchValue(value); queries[(i - 1) / 2] = clause; } return buildQuery(stateClass, true, queries); }
protected QueryTask getDescQuery(List<String> descriptionLinks) { // get container descriptions for descriptionLinks having a service link to // the container description which is being clustered QueryTask q = QueryUtil.buildQuery(ContainerDescription.class, false); String linksItemField = QueryTask.QuerySpecification.buildCollectionItemName( ContainerDescription.FIELD_NAME_LINKS); QueryUtil.addListValueClause(q, linksItemField, Arrays.asList(containerDescriptionName + ":*", containerDescriptionName), MatchType.WILDCARD); QueryUtil.addListValueClause(q, ContainerDescription.FIELD_NAME_SELF_LINK, descriptionLinks); QueryUtil.addExpandOption(q); return q; }
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 queryResourceNamePrefixes(ResourceNamePrefixTaskState state, boolean globalSearch) { // match on group property: QueryTask q = QueryUtil.buildQuery(ResourceNamePrefixState.class, true); q.tenantLinks = state.tenantLinks; List<String> documentLinks = new ArrayList<>(); new ServiceDocumentQuery<>(getHost(), ResourceNamePrefixState.class) .query(q, (r) -> { if (r.hasException()) { failTask("Cannot retrieve prefixes", r.getException()); } else if (r.hasResult()) { documentLinks.add(r.getDocumentSelfLink()); } else { selectResourceNamePrefix(state, documentLinks.iterator(), globalSearch); } }); }
public static <R extends MultiTenantDocument> void getDocuments(Class<R> type, Consumer<List<MultiTenantDocument>> consumer, ServiceHost host, Operation post) { QueryTask queryTask = QueryUtil.buildQuery(type, true); QueryUtil.addExpandOption(queryTask); List<MultiTenantDocument> documents = new ArrayList<>(); new ServiceDocumentQuery<R>(host, type) .query(queryTask, (r) -> { if (r.hasException()) { host.log(Level.SEVERE, "Failed to query for project states"); post.fail(r.getException()); } else if (r.hasResult()) { documents.add((MultiTenantDocument) r.getResult()); } else { host.log(Level.INFO, "projects found: %d", documents.size()); consumer.accept(documents); } }); } }
private void queryVolumes(ContainerHostRemovalTaskState state) { QueryTask volumeQuery = QueryUtil.buildQuery(ContainerVolumeState.class, false); QueryUtil.addListValueClause(volumeQuery, ContainerVolumeState.FIELD_NAME_ORIGINATING_HOST_LINK, state.resourceLinks); Set<String> volumeLinks = new HashSet<>(); new ServiceDocumentQuery<ContainerVolumeState>(getHost(), ContainerVolumeState.class).query( volumeQuery, (r) -> { if (r.hasException()) { failTask("Failure retrieving query results", r.getException()); return; } else if (r.hasResult()) { volumeLinks.add(r.getDocumentSelfLink()); } else { if (volumeLinks.isEmpty()) { filterKubernetesHosts(state); return; } removeVolumes(state, volumeLinks); } }); }
@Override public void handlePost(Operation post) { QueryTask queryTask = QueryUtil.buildQuery(ComputeState.class, true); QueryUtil.addExpandOption(queryTask); List<ComputeState> hosts = new ArrayList<ComputeState>(); new ServiceDocumentQuery<ComputeState>(getHost(), ComputeState.class) .query(queryTask, (r) -> { if (r.hasException()) { post.fail(r.getException()); logSevere("Failed to get compute states"); } else if (r.hasResult()) { hosts.add(r.getResult()); } else { if (hosts.isEmpty()) { post.complete(); } logInfo("Number of hosts found: %d", hosts.size()); processHosts(hosts, post); } }); }
@Override public void handleStart(Operation post) { QueryTask queryTask = QueryUtil.buildQuery(ProjectState.class, true); QueryUtil.addExpandOption(queryTask); List<ProjectState> projects = new ArrayList<ProjectState>(); new ServiceDocumentQuery<ProjectState>(getHost(), ProjectState.class) .query(queryTask, (r) -> { if (r.hasException()) { post.fail(r.getException()); } else if (r.hasResult()) { projects.add(r.getResult()); } else { getHost().log(Level.INFO, "projects found: %d", projects.size()); processProjects(projects, post); } }); }
private QueryTask createDockerComputeDescriptionQuery() { QueryTask q = QueryUtil.buildQuery(ComputeDescription.class, true); QueryTask.Query hostTypeClause = new QueryTask.Query() .setTermPropertyName(QuerySpecification.buildCollectionItemName( ComputeDescription.FIELD_NAME_SUPPORTED_CHILDREN)) .setTermMatchValue(ComputeType.DOCKER_CONTAINER.name()); q.querySpec.query.addBooleanClause(hostTypeClause); q.querySpec.resultLimit = ServiceDocumentQuery.DEFAULT_QUERY_RESULT_LIMIT; q.documentExpirationTimeMicros = ServiceDocumentQuery.getDefaultQueryExpiration(); return q; }
private QueryTask createGroupResourcePlacementQueryTask(GroupResourcePlacementState state) { QueryTask q = QueryUtil.buildQuery(GroupResourcePlacementState.class, true); QueryTask.Query resourcePoolClause = new QueryTask.Query() .setTermPropertyName(GroupResourcePlacementPoolState.FIELD_NAME_RESOURCE_POOL_LINK) .setTermMatchValue(state.resourcePoolLink); QueryTask.Query notThisGroupClause = new QueryTask.Query() .setTermPropertyName(GroupResourcePlacementPoolState.FIELD_NAME_SELF_LINK) .setTermMatchValue(getSelfLink()); notThisGroupClause.occurance = QueryTask.Query.Occurance.MUST_NOT_OCCUR; q.querySpec.query.addBooleanClause(resourcePoolClause); q.querySpec.query.addBooleanClause(notThisGroupClause); QueryUtil.addExpandOption(q); return q; }
private List<CompositeKubernetesRemovalTaskState> queryCompositeKubernetesRemovalTask() { QueryTask q = QueryUtil.buildQuery(CompositeKubernetesRemovalTaskState.class, false); q.querySpec.options = EnumSet.of(QueryOption.EXPAND_CONTENT); ServiceDocumentQuery<CompositeKubernetesRemovalTaskState> query = new ServiceDocumentQuery<>( host, CompositeKubernetesRemovalTaskState.class); List<CompositeKubernetesRemovalTaskState> result = new ArrayList<>(); TestContext ctx = testCreate(1); query.query(q, (r) -> { if (r.hasException()) { ctx.failIteration(r.getException()); } else if (r.hasResult()) { result.add(r.getResult()); } else { ctx.completeIteration(); } }); ctx.await(); return result; } }
private List<CompositionSubTaskState> queryCompositionSubTasks() { QueryTask q = QueryUtil.buildQuery(CompositionSubTaskState.class, false); q.querySpec.options = EnumSet.of(QueryOption.EXPAND_CONTENT); ServiceDocumentQuery<CompositionSubTaskState> query = new ServiceDocumentQuery<>(host, CompositionSubTaskState.class); List<CompositionSubTaskState> result = new ArrayList<>(); TestContext ctx = testCreate(1); query.query(q, (r) -> { if (r.hasException()) { ctx.failIteration(r.getException()); } else if (r.hasResult()) { result.add(r.getResult()); } else { ctx.completeIteration(); } }); ctx.await(); return result; }
public List<String> getDocumentLinksOfType(Class<? extends ServiceDocument> type) throws Throwable { TestContext ctx = testCreate(1); QueryTask query = QueryUtil.buildQuery(type, true); List<String> result = new LinkedList<>(); new ServiceDocumentQuery<>( host, type).query(query, (r) -> { if (r.hasException()) { ctx.failIteration(r.getException()); return; } else if (r.hasResult()) { result.add(r.getDocumentSelfLink()); } else { ctx.completeIteration(); } }); ctx.await(); return result; }
private void verifyCompositesRemoved() throws Throwable { QueryTask q = QueryUtil.buildQuery(CompositeComponent.class, false); ServiceDocumentQuery<?> query = new ServiceDocumentQuery<>(host, CompositeComponent.class); TestContext ctx = testCreate(1); query.query(q, (r) -> { if (r.hasException()) { host.log(Level.SEVERE, "Exception during search for CompositeComponents", r.getException().getMessage()); ctx.failIteration(r.getException()); } else if (r.hasResult()) { ctx.failIteration(new IllegalStateException("CompositeComponents found!")); } else { ctx.completeIteration(); } }); ctx.await(); } }