private void doRemoveTrustCerts(ContainerHostRemovalTaskState state) { collectTrustCert(state) .thenApply(trustCertSelfLinks -> { return trustCertSelfLinks.stream() .filter(Objects::nonNull) .filter(link -> link.startsWith(SslTrustCertificateService.FACTORY_LINK)) .collect(Collectors.toSet()); }) .thenCompose(trustCertSelfLinks -> { return CertificateCleanupUtil.removeTrustCertsIfUnused(getHost(), trustCertSelfLinks, state.resourceLinks); }) .whenComplete((ignore, ex) -> { if (ex != null) { logWarning("Failed to remove unused trust certificates.", ex); } proceedTo(SubStage.REMOVED_CERTIFICATES); }); }
private void updateNetworkParentLinks(ContainerNetworkState networkState) { ContainerNetworkState patchNetworkState = new ContainerNetworkState(); patchNetworkState.parentLinks = networkState.parentLinks; if ((networkState.originatingHostLink != null) && !networkState.parentLinks.isEmpty() && (!networkState.parentLinks.contains(networkState.originatingHostLink))) { // set another parent like the "owner" of the network patchNetworkState.originatingHostLink = networkState.parentLinks.get(0); } sendRequest(Operation .createPatch(this, networkState.documentSelfLink) .setBody(patchNetworkState) .setCompletion((o, ex) -> { if (o.getStatusCode() == Operation.STATUS_CODE_NOT_FOUND) { logFine("Network %s not found to be updated its parent links.", networkState.documentSelfLink); } else if (ex != null) { logWarning("Failed to update network %s parent links: %s", networkState.documentSelfLink, Utils.toString(ex)); } else { logInfo("Updated network parent links: %s", networkState.documentSelfLink); } })); }
private DeferredResult<List<Operation>> unsubscribeHostForEvents(ContainerHostRemovalTaskState state) { List<DeferredResult<Operation>> deferredResults = new ArrayList<>(state.resourceLinks.size()); for (String resourceLink : state.resourceLinks) { AdapterRequest request = new AdapterRequest(); request.operationTypeId = ContainerHostOperationType.EVENTS_UNSUBSCRIBE.id; request.serviceTaskCallback = ServiceTaskCallback.createEmpty(); request.resourceReference = UriUtils.buildUri(getHost(), resourceLink); URI adapterManagementReference = UriUtils.buildUri(getHost(), ManagementUriParts.ADAPTER_DOCKER_HOST); deferredResults.add(getHost() .sendWithDeferredResult(Operation .createPatch(adapterManagementReference) .setReferer(this.getUri()) .setBodyNoCloning(request)) .whenComplete((o, e) -> { if (e != null) { logWarning("Failed to unsubscribe for host events."); } })); } return DeferredResult.allOf(deferredResults); } }
.setCompletion((o1, ex1) -> { if (ex1 != null) { logWarning("Failed to update host data collection: %s", ex1.getMessage()); .setCompletion((o, e) -> { if (e != null) { logWarning("Failed deleting ComputeState: %s", resourceLink); completeSubTasksCounter(subTaskLink, e);
if (e != null) { if (error.compareAndSet(false, true)) { logWarning("Failed suspending ComputeState: %s", resourceLink); completeSubTasksCounter(subTaskLink, e);
private void removeTrustCerts(ContainerHostRemovalTaskState state) { 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, ComputeConstants.HOST_TRUST_CERTS_PROP_NAME), UriUtils.URI_WILDCARD_CHAR, MatchType.WILDCARD, Occurance.MUST_NOT_OCCUR).build(); q.addBooleanClause(createKindClause(ComputeState.class)); queryTask.querySpec.query.addBooleanClause(q); sendWithDeferredResult(Operation .createPost(UriUtils.buildUri(getHost(), ServiceUriPaths.CORE_QUERY_TASKS)) .setBody(queryTask) .setReferer(getHost().getUri()), QueryTask.class) .thenAccept(qrt -> { if (qrt.results.documentCount == 0) { doRemoveTrustCerts(state); } else { proceedTo(SubStage.REMOVED_CERTIFICATES); } }).exceptionally(e -> { logWarning("Failed to remove unused trust certificate.", e); proceedTo(SubStage.REMOVED_CERTIFICATES); return null; }); }