/** * Builds a query task from the given queries. * @param additionalClauses * @return */ private static QueryTask buildRegistryQuery(Query... additionalClauses) { List<Query> clauses = new ArrayList<>(); if (additionalClauses != null) { clauses.addAll(Arrays.asList(additionalClauses)); } Query excludeDisabledClause = new Query() .setTermPropertyName(RegistryState.FIELD_NAME_DISABLED) .setTermMatchValue(Boolean.TRUE.toString()); excludeDisabledClause.occurance = Occurance.MUST_NOT_OCCUR; clauses.add(excludeDisabledClause); QueryTask queryTask = QueryUtil.buildQuery(RegistryState.class, true, clauses.toArray(new Query[clauses.size()])); QueryUtil.addExpandOption(queryTask); return queryTask; }
protected QueryTask getDescQuery() { final QueryTask q = QueryUtil.buildQuery(ContainerDescription.class, false); QueryUtil.addCaseInsensitiveListValueClause(q, ContainerDescription.FIELD_NAME_NAME, getAffinity()); QueryUtil.addExpandOption(q); return q; }
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; }
private void queryContainersByHost(AdapterRequest state, Consumer<List<ContainerState>> callback) { String parentLink = state.resourceReference.getPath(); QueryTask q = QueryUtil.buildPropertyQuery(MockDockerContainerToHostState.class, MockDockerContainerToHostState.FIELD_NAME_PARENT_LINK, parentLink); QueryUtil.addExpandOption(q); List<ContainerState> containerStates = new ArrayList<>(); new ServiceDocumentQuery<>(getHost(), MockDockerContainerToHostState.class).query(q, (r) -> { if (r.hasException()) { patchTaskStage(state, r.getException()); } else if (r.hasResult()) { containerStates.add(buildContainer(r.getResult())); } else { callback.accept(containerStates); } }); }
private void queryNetworksByHost(AdapterRequest state, Consumer<List<ContainerNetworkState>> callback) { String hostLink = state.resourceReference.getPath(); QueryTask q = QueryUtil.buildPropertyQuery(MockDockerNetworkToHostState.class, MockDockerNetworkToHostState.FIELD_NAME_HOST_LINK, hostLink); QueryUtil.addExpandOption(q); List<ContainerNetworkState> networkStates = new ArrayList< >(); new ServiceDocumentQuery<>(getHost(), MockDockerNetworkToHostState.class).query(q, (r) -> { if (r.hasException()) { patchTaskStage(state, r.getException()); } else if (r.hasResult()) { networkStates.add(buildContainerNetwork(r.getResult())); } else { callback.accept(networkStates); } }); }
private void queryVolumesByHost(AdapterRequest state, Consumer<List<ContainerVolumeState>> callback) { String hostLink = state.resourceReference.getPath(); QueryTask q = QueryUtil.buildPropertyQuery(MockDockerVolumeToHostState.class, MockDockerVolumeToHostState.FIELD_NAME_HOST_LINK, hostLink); QueryUtil.addExpandOption(q); List<ContainerVolumeState> volumeStates = new ArrayList< >(); new ServiceDocumentQuery<>(getHost(), MockDockerVolumeToHostState.class).query(q, (r) -> { if (r.hasException()) { patchTaskStage(state, r.getException()); } else if (r.hasResult()) { volumeStates.add(buildContainerVolume(r.getResult())); } else { callback.accept(volumeStates); } }); }
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 queryExistingContainerStates(ContainerListCallback body) { String containerHostLink = body.containerHostLink; QueryTask queryTask = QueryUtil.buildPropertyQuery(ContainerState.class, ContainerState.FIELD_NAME_PARENT_LINK, containerHostLink); QueryUtil.addExpandOption(queryTask); QueryUtil.addBroadcastOption(queryTask); new ServiceDocumentQuery<ContainerState>(getHost(), ContainerState.class) .query(queryTask, processContainerStatesQueryResults(body)); }
public static void processDocuments(List<MultiTenantDocument> documents, Operation post, Service sender, String factoryLink, URI referer, ServiceHost host, boolean generateSelfLink) { QueryTask queryTask = QueryUtil.buildQuery(ProjectState.class, true); QueryUtil.addExpandOption(queryTask); List<ProjectState> projects = new ArrayList<ProjectState>(); new ServiceDocumentQuery<ProjectState>(host, ProjectState.class) .query(queryTask, (r) -> { if (r.hasException()) { host.log(Level.SEVERE, "Failed to query for project states"); post.fail(r.getException()); } else if (r.hasResult()) { projects.add(r.getResult()); } else { host.log(Level.INFO, "projects found: %d", projects.size()); processProjects(projects, documents, post, sender, factoryLink, referer, host, generateSelfLink); } }); }
@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); } }); }
@SuppressWarnings("unchecked") @Override public void handlePost(Operation post) { logInfo("Population of favorite images for specific tenants triggered."); List<String> tenantLinks = post.getBody(List.class); List<FavoriteImage> globalFavorites = new LinkedList<>(); QueryTask queryTask = QueryUtil.buildQuery(FavoriteImage.class, true, QueryUtil.addTenantClause(null)); QueryUtil.addExpandOption(queryTask); new ServiceDocumentQuery<>(getHost(), FavoriteImage.class) .query(queryTask, r -> { if (r.hasException()) { post.fail(r.getException()); } else if (r.hasResult()) { globalFavorites.add(r.getResult()); } else { createFavoriteImagesBasedOnFlagStatus(post, tenantLinks, globalFavorites); } }); }
private void proceedWithComputeStates(ContainerDescription containerDesc, AdmiralAdapterTaskState state, Class<? extends ServiceDocument> type, String propId, String propValue, Consumer<ServiceDocumentQuery.ServiceDocumentQueryElementResult<ServiceDocument>> completionHandler) { QueryTask q = QueryUtil.buildPropertyQuery(type, propId, propValue); q.documentExpirationTimeMicros = ServiceDocumentQuery.getDefaultQueryExpiration(); QueryUtil.addExpandOption(q); sendRequest(Operation .createPost(UriUtils.buildUri(getHost(), ServiceUriPaths.CORE_QUERY_TASKS)) .setBody(q) .setCompletion( (o, e) -> { if (e != null) { completionHandler.accept(error(e)); return; } handleFetchedComputeStates(containerDesc, state, propValue, completionHandler, o); })); }
private QueryTask getKubernetesStatesQueryTask() { QueryTask q = new QueryTask(); q.querySpec = new QueryTask.QuerySpecification(); q.taskInfo.isDirect = true; Iterator<Class<? extends ResourceState>> iterator = CompositeComponentRegistry.getClasses(); QueryTask.Query clause = new QueryTask.Query().setOccurance(Occurance.MUST_OCCUR); while (iterator.hasNext()) { clause.addBooleanClause(new Query() .setTermPropertyName(ServiceDocument.FIELD_NAME_KIND) .setTermMatchValue(Utils.buildKind(iterator.next())) .setOccurance(Occurance.SHOULD_OCCUR)); } q.querySpec.query.addBooleanClause(clause); q.documentExpirationTimeMicros = ServiceDocumentQuery.getDefaultQueryExpiration(); QueryUtil.addExpandOption(q); QueryUtil.addBroadcastOption(q); return q; }
private DeferredResult<Void> loadSubscriptions() { DeferredResult<Void> res = new DeferredResult<>(); QueryTask q = QueryUtil.buildQuery(ExtensibilitySubscription.class, false); QueryUtil.addExpandOption(q); new ServiceDocumentQuery<>(getHost(), ExtensibilitySubscription.class) .query(q, (r) -> { if (r.hasException()) { logSevere("Exception while initializing LifecycleExtensibilityManager. " + "Error: [%s]", r.getException().getMessage()); res.fail(r.getException()); } else if (r.hasResult()) { ExtensibilitySubscription state = r.getResult(); addExtensibilitySubscription(state); } else { logInfo("Loaded %d extensibility states", subscriptions.size()); res.complete(null); } }); return res; }
private DeferredResult<Void> loadTopics() { DeferredResult<Void> res = new DeferredResult<>(); QueryTask q = QueryUtil.buildQuery(EventTopicState.class, false); QueryUtil.addExpandOption(q); new ServiceDocumentQuery<>(getHost(), EventTopicState.class) .query(q, (r) -> { if (r.hasException()) { logSevere("Exception while initializing LifecycleExtensibilityManager. " + "Error: [%s]", r.getException().getMessage()); res.fail(r.getException()); } else if (r.hasResult()) { EventTopicState state = r.getResult(); handleUpdateEventTopicState(state); } else { logInfo("Loaded %d extensibility states", subscriptions.size()); res.complete(null); } }); return res; }
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; }
public <T extends ServiceDocument> List<T> getDocumentsOfType(Class<T> type) throws Throwable { TestContext ctx = testCreate(1); QueryTask query = QueryUtil.addExpandOption(QueryUtil.buildQuery(type, true)); List<T> 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.getResult()); } else { ctx.completeIteration(); } }); ctx.await(); return result; }
protected Set<ContainerState> getExistingContainersInAdapter() { host.testStart(1); QueryTask q = QueryUtil.buildPropertyQuery(MockDockerContainerToHostState.class); QueryUtil.addExpandOption(q); Set<ContainerState> containerStates = new HashSet<>(); new ServiceDocumentQuery<>(host, MockDockerContainerToHostState.class).query(q, (r) -> { if (r.hasException()) { host.failIteration(r.getException()); } else if (r.hasResult()) { containerStates.add(buildContainer(r.getResult())); } else { host.completeIteration(); } }); host.testWait(); return containerStates; }
private List<ContainerVolumeState> getVolumeStates() throws Throwable { List<ContainerVolumeState> volumeStatesFound = new ArrayList<>(); TestContext ctx = testCreate(1); ServiceDocumentQuery<ContainerVolumeState> query = new ServiceDocumentQuery<>(host, ContainerVolumeState.class); QueryTask queryTask = QueryUtil.buildPropertyQuery(ContainerVolumeState.class); QueryUtil.addExpandOption(queryTask); query.query(queryTask, (r) -> { if (r.hasException()) { host.log("Exception while retrieving ContainerVolumeState: " + (r.getException() instanceof CancellationException ? r.getException().getMessage() : Utils.toString(r.getException()))); ctx.fail(r.getException()); } else if (r.hasResult()) { volumeStatesFound.add(r.getResult()); } else { ctx.complete(); } }); ctx.await(); return volumeStatesFound; }