private DeferredResult<Void> queryExistingContainerStates(String containerHostLink) { QueryTask queryTask = QueryUtil.buildPropertyQuery(ContainerState.class, ContainerState.FIELD_NAME_PARENT_LINK, containerHostLink); DeferredResult<Void> df = new DeferredResult<>(); new ServiceDocumentQuery<ContainerState>(host, ContainerState.class) .query(queryTask, processContainerStatesQueryResults(df)); return df; }
private void getHealthConfig(String containerDescriptionLink, Consumer<HealthConfig> callback) { ServiceDocumentQuery<ContainerDescription> query = new ServiceDocumentQuery<ContainerDescription>( host, ContainerDescription.class); String healthConfigUriPath = UriUtils.buildUriPath(containerDescriptionLink); query.queryDocument(healthConfigUriPath, (r) -> { if (r.hasException()) { host.log(Level.FINE, "Failed to retrieve container's health config: %s - %s", containerState.documentSelfLink, r.getException()); } else if (r.hasResult() && r.getResult().healthConfig != null) { callback.accept(r.getResult().healthConfig); } else { host.log(Level.FINE, "Container's health config: %s not found.", containerState.documentSelfLink); HealthConfig defaultConfig = createDefaultHealthConfig(); callback.accept(defaultConfig); } }); }
QueryTask q = QueryUtil.buildPropertyQuery(type, ServiceDocument.FIELD_NAME_SELF_LINK, documentSelfLink); q.documentExpirationTimeMicros = getDefaultQueryExpiration(); q.querySpec.options = EnumSet.of(QueryOption.EXPAND_CONTENT); if (documentSinceUpdateTimeMicros != -1) { q.querySpec.options.add(QueryOption.INCLUDE_DELETED); q.querySpec.query .addBooleanClause(createUpdatedSinceTimeRange(documentSinceUpdateTimeMicros)); (o, e) -> { if (e != null) { completionHandler.accept(error(e)); return; if (qtr.results.documents == null || qtr.results.documents.isEmpty()) { completionHandler.accept(noResult()); } else { Collection<Object> values = qtr.results.documents.values(); completionHandler.accept(result(values.iterator().next(), values.size())); completionHandler.accept(error(ex));
private void processResults(QueryTask rsp, Consumer<ServiceDocumentQueryElementResult<T>> handler) { List<String> links = rsp.results.documentLinks; if (isExpandQuery(rsp)) { if (rsp.results.documents.isEmpty()) { handler.accept(noResult()); } else { long count = links.size(); for (String documentLink : links) { handler.accept(result(rsp.results.documents.get(documentLink), count)); } // close the query; handler.accept(noResult()); } } else if (isCountQuery(rsp)) { handler.accept(countResult(rsp.results.documentCount)); } else { if (links == null || links.isEmpty()) { handler.accept(noResult()); } else { for (String selfLink : links) { handler.accept(resultLink(selfLink, links.size())); } // close the query; handler.accept(noResult()); } } }
try { if (nextPageLink == null) { handler.accept(noResult()); return; .setCompletion((o, e) -> { if (e != null) { handler.accept(error(e)); return; if (isExpandQuery(page)) { Collection<Object> values = page.results.documents.values(); for (Object json : values) { handler.accept(result(json, values.size())); } else if (isCountQuery(page)) { handler.accept(countResult(page.results.documentCount)); } else { List<String> links = page.results.documentLinks; for (String link : links) { handler.accept(resultLink(link, links.size())); getNextPageLinks(page.results.nextPageLink, resultLimit, handler); } catch (Throwable ex) { handler.accept(error(ex)); handler.accept(error(ex));
.setCompletion((o, ex) -> { if (ex != null) { resultConsumer.accept(error(ex), null); resultConsumer.accept(noResult(), null); return; if (link.startsWith(CompositeDescriptionFactoryService.SELF_LINK)) { compositeDescriptionLinks.add(link); resultConsumer.accept(result(createTemplateFromCompositeDesc( document), result.documents.size()), null); resultConsumer.accept(noResult(), null); return; compositeDescriptionLinks); new ServiceDocumentQuery<TemplateSpec>(getHost(), TemplateSpec.class) .query(compositeQueryTask, (r) -> { if (r.hasResult()) {
ServiceDocumentQuery<DockerImage> query = new ServiceDocumentQuery<>( getHost(), DockerImage.class); query.query(q, (r) -> { if (r.hasException()) { completionHandler.accept(error(r.getException())); } else if (r.hasResult()) { DockerImage dockerImage = r.getResult(); logWarning("No available hosts configured! Aborting deployment..."); completionHandler .accept(error(new Exception("No available hosts configured!"))); completionHandler.accept(resultLink(selectedComputeLink, 1));
q.querySpec.query.addBooleanClause(hostTypeClause); q.querySpec.resultLimit = ServiceDocumentQuery.DEFAULT_QUERY_RESULT_LIMIT; q.documentExpirationTimeMicros = ServiceDocumentQuery.getDefaultQueryExpiration(); ServiceDocumentQuery<ComputeState> query = new ServiceDocumentQuery<>(getHost(), ComputeState.class); query.query(q, (r) -> { if (r.hasException()) { logWarning("Exception while retrieving docker host states. Error: %s",
@Before public void setUp() throws Throwable { query = new ServiceDocumentQuery<>(host, ContainerDescription.class); descs = new ArrayList<>(); waitForServiceAvailability(ContainerDescriptionService.FACTORY_LINK); }
/** * Query for a list of expanded documents extending {@link ServiceDocument}s that are updated or * deleted since given time. The result will include both updated and deleted documents. * If document is deleted : {@link ServiceDocument#isDeleted(ServiceDocument)}. * * @param documentSinceUpdateTimeMicros * Indicating a time since the document was last updated matching the property * {@link ServiceDocument#documentUpdateTimeMicros}. * @param completionHandler * The completion handler to be called. Either the list of ServiceDocuments will be * passed as parameter or exception in case of errors. */ public void queryUpdatedSince(long documentSinceUpdateTimeMicros, Consumer<ServiceDocumentQueryElementResult<T>> completionHandler) { AssertUtil.assertNotNull(type, "type"); AssertUtil.assertNotNull(completionHandler, "completionHandler"); QueryTask q = QueryUtil.buildQuery(type, true); q.querySpec.options = EnumSet.of(QueryOption.EXPAND_CONTENT, QueryOption.INCLUDE_DELETED); q.querySpec.query .addBooleanClause(createUpdatedSinceTimeRange(documentSinceUpdateTimeMicros)); q.documentExpirationTimeMicros = Utils.fromNowMicrosUtc(DEFAULT_EXPIRATION_TIME_IN_MICROS); q.querySpec.resultLimit = DEFAULT_QUERY_RESULT_LIMIT; query(q, completionHandler); }
Consumer<ServiceDocumentQueryElementResult<T>> completionHandler) { if (q.documentExpirationTimeMicros == 0) { q.documentExpirationTimeMicros = getDefaultQueryExpiration(); if (!(isCountQuery(q)) && q.querySpec.resultLimit == null) { q.querySpec.resultLimit = DEFAULT_QUERY_RESULT_LIMIT; .setCompletion((o, e) -> { if (e != null) { completionHandler.accept(error(e)); return; processQuery(qrt, completionHandler); }));
resultConsumer.accept(noResult(),null); return; .setCompletion((o, ex) -> { if (ex != null) { resultConsumer.accept(error(ex), null); } else { RegistrySearchResponse response = o.getBody(RegistrySearchResponse.class); List<Result> results = response.results; for (Result result : results) { resultConsumer.accept(result(createTemplateFromImageResult( result), results.size()), null); resultConsumer.accept(noResult(), response.isPartialResult);
componentDescriptionQueryTask.taskInfo.isDirect = true; componentDescriptionQueryTask.documentExpirationTimeMicros = ServiceDocumentQuery .getDefaultQueryExpiration();
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 void handleFetchedComputeStates(ContainerDescription containerDesc, AdmiralAdapterTaskState state, String propValue, Consumer<ServiceDocumentQuery.ServiceDocumentQueryElementResult<ServiceDocument>> completionHandler, Operation o) { try { QueryTask qtr = o.getBody(QueryTask.class); if (qtr.results.documents == null || qtr.results.documents.isEmpty()) { logWarning("No available computes configured for: %s", propValue); completionHandler .accept(error(new Exception("No computes configured for: " + propValue))); } else { Collection<Object> values = qtr.results.documents.values(); if (values.isEmpty()) { completionHandler.accept(noResult()); return; } Collection<ComputeState> computeStates = convertToComputeStates(values); logInfo("Size of available compute states: %s", computeStates.size()); proceedWithPlacement(containerDesc, computeStates, state, completionHandler); } } catch (Throwable ex) { logSevere("Error occurred: %s", Utils.toString(ex)); completionHandler.accept(error(ex)); } }
private void fetchGroupPlacement(AdmiralAdapterTaskState state, Consumer<ServiceDocumentQuery.ServiceDocumentQueryElementResult<GroupResourcePlacementState>> callbackFunction) { logInfo("Fetching group placement: %s", state.groupResourcePlacementLink); try { sendRequest(Operation.createGet(getHost(), state.groupResourcePlacementLink) .setCompletion((op, ex) -> { if (ex != null) { callbackFunction.accept(error(ex)); } else { GroupResourcePlacementState placement = op.getBody (GroupResourcePlacementState.class); callbackFunction.accept(result(placement, 1)); } })); } catch (Throwable ex) { logSevere("Unable to fetch group placement: %s. Error: %s", state.groupResourcePlacementLink, Utils.toString(ex)); } }
private List<ContainerDescription> queryDocument(String documentSelfLink) throws Throwable { host.testStart(1); query.queryDocument(documentSelfLink, handler(true)); host.testWait(); return descs; }
private void processQuery(QueryTask q, Consumer<ServiceDocumentQueryElementResult<T>> handler) { if (TaskState.isFailed(q.taskInfo)) { handler.accept(error(new IllegalStateException( q.taskInfo.failure.message))); return; processQueryResult(q, handler); return; .setCompletion((o, e) -> { if (e != null) { handler.accept(error(e)); return; "Resource query not complete yet, retrying..."); host.schedule(() -> { processQuery(rsp, handler); }, QueryUtil.QUERY_RETRY_INTERVAL_MILLIS, TimeUnit.MILLISECONDS); return; processQueryResult(rsp, handler); }));
private void loadSslTrustCertServices() { // make sure first get the time, then issue the query not to miss an interval with updates long currentDocumentUpdateTimeMicros = Utils.getNowMicrosUtc(); sslTrustQuery.queryUpdatedSince(documentUpdateTimeMicros, queryHandler); this.documentUpdateTimeMicros = currentDocumentUpdateTimeMicros; }
.setCompletion((o, ex) -> { if (ex != null) { resultConsumer.accept(error(ex)); resultConsumer.accept(noResult()); return; closureDescriptionLinks); new ServiceDocumentQuery<ClosureDescription>(getHost(), ClosureDescription.class) .query(closureQueryTask, (r) -> { resultConsumer.accept(r);