private DeferredResult<QueryTask> removeTrustCerts(RegistryState rs) {
QueryTask queryTask = new QueryTask();
queryTask.querySpec = new QueryTask.QuerySpecification();
queryTask.taskInfo.isDirect = true;
Query q = Query.Builder.create()
.addFieldClause(QuerySpecification
.buildCompositeFieldName(ComputeState.FIELD_NAME_CUSTOM_PROPERTIES,
REGISTRY_TRUST_CERTS_PROP_NAME),
UriUtils.URI_WILDCARD_CHAR, MatchType.WILDCARD,
Occurance.MUST_NOT_OCCUR).build();
q.addBooleanClause(createKindClause(RegistryState.class));
queryTask.querySpec.query.addBooleanClause(q);
return sendWithDeferredResult(Operation
.createPost(UriUtils.buildUri(getHost(),
ServiceUriPaths.CORE_QUERY_TASKS))
.setBody(queryTask)
.setReferer(getHost().getUri()), QueryTask.class)
.thenCompose(qrt -> {
if (qrt.results.documentCount == 0 ||
(qrt.results.documentCount == 1 &&
DEFAULT_INSTANCE_LINK
.equals(qrt.results.documentLinks.get(0)))) {
return doRemoveTrustCerts(rs);
}
return DeferredResult.completed(null);
});
}