public static void addListValueClause(QueryTask q, String propName, Collection<String> values) { addListValueClause(q, propName, values, MatchType.TERM); }
public static void addListValueClause(QueryTask.Query q, String propName, Collection<String> values, MatchType termMatchType) { QueryTask.Query inClause = addListValueClause(propName, values, termMatchType); q.addBooleanClause(inClause); }
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 void addListValueClause(QueryTask q, String propName, Collection<String> values, MatchType termMatchType) { Query inClause = addListValueClause(propName, values, termMatchType); q.querySpec.query.addBooleanClause(inClause); }
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 Query addTenantAndGroupClause(List<String> tenantLinks) { Query groupClause = null; String propertyName = QueryTask.QuerySpecification .buildCollectionItemName(MultiTenantDocument.FIELD_NAME_TENANT_LINKS); // if a tenant is not specified, search global only if (tenantLinks == null || tenantLinks.isEmpty()) { groupClause = new Query() .setTermPropertyName(propertyName); groupClause.setTermMatchType(MatchType.WILDCARD) .setTermMatchValue(UriUtils.URI_WILDCARD_CHAR); groupClause.occurance = Occurance.MUST_NOT_OCCUR; } else { groupClause = addListValueClause(propertyName, tenantLinks.stream() .filter(tenantLink -> !tenantLink.startsWith(MultiTenantDocument.USERS_PREFIX)) .collect(Collectors.toList()), MatchType.TERM); } return groupClause; }
public static Query addTenantClause(List<String> tenantLinks) { Query groupClause = null; String propertyName = QueryTask.QuerySpecification .buildCollectionItemName(MultiTenantDocument.FIELD_NAME_TENANT_LINKS); // if a tenant is not specified, search global only if (tenantLinks == null || tenantLinks.isEmpty()) { groupClause = new Query() .setTermPropertyName(propertyName); groupClause.setTermMatchType(MatchType.WILDCARD) .setTermMatchValue(UriUtils.URI_WILDCARD_CHAR); groupClause.occurance = Occurance.MUST_NOT_OCCUR; } else { groupClause = addListValueClause(propertyName, tenantLinks.stream() .filter(tenantLink -> tenantLink.startsWith(MultiTenantDocument.TENANTS_PREFIX) || tenantLink.startsWith(MultiTenantDocument.PROJECTS_IDENTIFIER)) .filter(tenantLink -> !tenantLink.contains( MultiTenantDocument.GROUP_IDENTIFIER)) .collect(Collectors.toList()), MatchType.TERM); } return groupClause; }
public static Query addTenantAndUserClause(List<String> tenantLinks) { Query groupClause = null; String propertyName = QueryTask.QuerySpecification .buildCollectionItemName(MultiTenantDocument.FIELD_NAME_TENANT_LINKS); // if a tenant is not specified, search global only if (tenantLinks == null || tenantLinks.isEmpty()) { groupClause = new Query() .setTermPropertyName(propertyName); groupClause.setTermMatchType(MatchType.WILDCARD) .setTermMatchValue(UriUtils.URI_WILDCARD_CHAR); groupClause.occurance = Occurance.MUST_NOT_OCCUR; } else { groupClause = addListValueClause(propertyName, tenantLinks.stream() .filter(tenantLink -> !tenantLink.contains( MultiTenantDocument.GROUP_IDENTIFIER)) .collect(Collectors.toList()), MatchType.TERM); } return groupClause; }
private void getContextContainerDescriptions( Map<String, List<ContainerState>> containersByDescriptionLink, Consumer<List<ContainerDescription>> callback) { if ((containersByDescriptionLink == null) || (containersByDescriptionLink.isEmpty())) { callback.accept(Collections.emptyList()); return; } QueryTask q = QueryUtil.buildQuery(ContainerDescription.class, true); QueryUtil.addExpandOption(q); QueryUtil.addListValueClause(q, ContainerDescription.FIELD_NAME_SELF_LINK, containersByDescriptionLink.keySet()); q.taskInfo.isDirect = false; List<ContainerDescription> result = new ArrayList<>(); new ServiceDocumentQuery<ContainerDescription>(getHost(), ContainerDescription.class) .query(q, (r) -> { if (r.hasException()) { failTask("Exception while selecting container descriptions", r.getException()); } else if (r.hasResult()) { result.add(r.getResult()); } else { callback.accept(result); } }); }
public static Query addTenantGroupAndUserClause(Collection<String> tenantLinks) { Query groupClause = null; String propertyName = QueryTask.QuerySpecification .buildCollectionItemName(MultiTenantDocument.FIELD_NAME_TENANT_LINKS); // if a tenant is not specified, search global only if (tenantLinks == null || tenantLinks.isEmpty()) { groupClause = new Query() .setTermPropertyName(propertyName); groupClause.setTermMatchType(MatchType.WILDCARD) .setTermMatchValue(UriUtils.URI_WILDCARD_CHAR); groupClause.occurance = Occurance.MUST_NOT_OCCUR; } else { groupClause = addListValueClause(propertyName, tenantLinks, MatchType.TERM); } return groupClause; }
private void getContextContainerDescriptions( Map<String, List<ContainerState>> containersByDescriptionLink, Consumer<List<ContainerDescription>> callback) { if ((containersByDescriptionLink == null) || (containersByDescriptionLink.isEmpty())) { callback.accept(Collections.emptyList()); return; } QueryTask q = QueryUtil.buildQuery(ContainerDescription.class, true); QueryUtil.addExpandOption(q); QueryUtil.addListValueClause(q, ContainerDescription.FIELD_NAME_SELF_LINK, containersByDescriptionLink.keySet()); q.taskInfo.isDirect = false; List<ContainerDescription> result = new ArrayList<>(); new ServiceDocumentQuery<ContainerDescription>(getHost(), ContainerDescription.class) .query(q, (r) -> { if (r.hasException()) { failTask("Exception while selecting container descriptions", r.getException()); } else if (r.hasResult()) { result.add(r.getResult()); } else { callback.accept(result); } }); }
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); } }); }
private void queryContainers(ContainerHostRemovalTaskState state) { QueryTask containerQuery = QueryUtil.buildQuery(ContainerState.class, true); QueryUtil.addListValueClause(containerQuery, ContainerState.FIELD_NAME_PARENT_LINK, state.resourceLinks); Set<String> containerLinks = new HashSet<>(); new ServiceDocumentQuery<ContainerState>(getHost(), ContainerState.class).query( containerQuery, (r) -> { if (r.hasException()) { failTask("Failure retrieving query results", r.getException()); return; } else if (r.hasResult()) { containerLinks.add(r.getDocumentSelfLink()); } else { if (containerLinks.isEmpty()) { queryNetworks(state); return; } removeContainers(state, containerLinks); } }); }
private void queryPortProfiles(ContainerHostRemovalTaskState state) { QueryTask q = QueryUtil .buildQuery(HostPortProfileService.HostPortProfileState.class, false); QueryUtil.addListValueClause(q, HostPortProfileService.HostPortProfileState.FIELD_HOST_LINK, state.resourceLinks); ServiceDocumentQuery<HostPortProfileService.HostPortProfileState> query = new ServiceDocumentQuery<>( getHost(), HostPortProfileService.HostPortProfileState.class); QueryUtil.addBroadcastOption(q); ArrayList<String> hostPortProfileLinks = new ArrayList<>(); query.query(q, (r) -> { if (r.hasException()) { failTask("Failure retrieving query results", r.getException()); return; } else if (r.hasResult()) { hostPortProfileLinks.add(r.getDocumentSelfLink()); } else { // if there are no host port profiles, go to the next stage if (hostPortProfileLinks.isEmpty()) { proceedTo(SubStage.REMOVED_PORT_PROFILES); return; } removePortProfiles(state, hostPortProfileLinks, null); proceedTo(SubStage.REMOVING_PORT_PROFILES); } }); }
@Override public void handleDelete(Operation delete) { if (delete.getBodyRaw() == null) { super.handleDelete(delete); return; } QueryTask compositeQueryTask = QueryUtil.buildQuery(CompositeDescription.class, true); String descriptionLinksItemField = QueryTask.QuerySpecification.buildCollectionItemName( CompositeDescription.FIELD_NAME_DESCRIPTION_LINKS); QueryUtil.addExpandOption(compositeQueryTask); QueryUtil.addListValueClause(compositeQueryTask, descriptionLinksItemField, Arrays.asList(getSelfLink())); List<String> compositeDescriptions = new ArrayList<>(); new ServiceDocumentQuery<CompositeDescription>(getHost(), CompositeDescription.class) .query(compositeQueryTask, (r) -> { if (r.hasException()) { logSevere( "Failed to retrieve composite-descriptions: %s - %s", r.getDocumentSelfLink(), r.getException()); } else if (r.hasResult()) { compositeDescriptions.addAll(r.getResult().descriptionLinks); } else { deleteContainerDescriptionLink(getState(delete), compositeDescriptions); } }); super.handleDelete(delete); }
private void processContainerHealth(ServiceHost host, ContainerDescription containerDescription) { if (containerDescription.healthConfig == null || containerDescription.healthConfig.protocol == null) { host.log(Level.FINE, "Container's health config not set for: %s", containerDescription.documentSelfLink); return; } QueryTask compositeQueryTask = QueryUtil.buildQuery(ContainerState.class, true); QueryUtil.addExpandOption(compositeQueryTask); String containerDescriptionLink = UriUtils.buildUriPath( ManagementUriParts.CONTAINER_DESC, Service.getId(containerDescription.documentSelfLink)); QueryUtil.addListValueClause(compositeQueryTask, ContainerState.FIELD_NAME_DESCRIPTION_LINK, Arrays.asList(containerDescriptionLink)); new ServiceDocumentQuery<>(host, ContainerState.class) .query(compositeQueryTask, (r) -> { if (r.hasException()) { host.log(Level.SEVERE, "Failed to retrieve child containers for: %s - %s", containerDescriptionLink, Utils.toString(r.getException())); } else if (r.hasResult()) { doHealthCheckRequest(host, r.getResult(), containerDescription.healthConfig, null); } }); }
public List<String> findResourceLinks(Class<? extends ServiceDocument> type, Collection<String> resourceLinks) throws Throwable { TestContext ctx = testCreate(1); QueryTask query = QueryUtil.buildQuery(type, true); QueryUtil.addListValueClause(query, ServiceDocument.FIELD_NAME_SELF_LINK, resourceLinks); List<String> result = new LinkedList<>(); new ServiceDocumentQuery<>( host, type).query(query, (r) -> { if (r.hasException()) { ctx.failIteration(r.getException()); return; } if (r.hasResult()) { result.add(r.getDocumentSelfLink()); return; } ctx.completeIteration(); }); ctx.await(); return result; }