private void createDiscoveredEntity(AtomicInteger counter, BaseKubernetesState entity,
Runnable callback) {
logFine("Creating KubernetesState for discovered entity: %s", entity.id);
String type = KubernetesUtil.getResourceType(entity.getType()).getName();
AtomicBoolean hasError = new AtomicBoolean(false);
sendRequest(OperationUtil
.createForcedPost(this, CompositeComponentRegistry.stateFactoryLinkByType(type))
.setBody(entity)
.setCompletion(
(o, ex) -> {
if (ex != null) {
logSevere("Failed to create KubernetesState for discovered entity"
+ " (id=%s): %s", entity.id, ex.getMessage());
if (hasError.compareAndSet(false, true)) {
callback.run();
}
} else {
logInfo("Created KubernetesState for discovered entity: %s",
entity.id);
}
if (counter.decrementAndGet() == 0) {
callback.run();
}
}));
}