in java/src/main/java/org/apache/brooklyn/rest/client/BrooklynApiUtil.java [101:128]
public static Status waitForAppStatus(final BrooklynApi api, final String application, final Status desiredStatus,
Duration timeout, Duration pollPeriod) {
final AtomicReference<Status> appStatus = new AtomicReference<>(Status.UNKNOWN);
final boolean shortcutOnError = !Status.ERROR.equals(desiredStatus) && !Status.UNKNOWN.equals(desiredStatus);
LOG.info("Waiting " + timeout + " from " + new Date() + " for application " + application + " to be " + desiredStatus);
Repeater.create("Waiting for application " + application + " status to be " + desiredStatus)
.every(pollPeriod)
.limitTimeTo(timeout)
.rethrowExceptionImmediately()
.until(new Callable<Boolean>() {
@Override
public Boolean call() throws Exception {
Status status = api.getApplicationApi().get(application).getStatus();
LOG.debug("Application " + application + " status is: " + status);
appStatus.set(status);
return desiredStatus.equals(status) || (shortcutOnError &&
(Status.ERROR.equals(status) || Status.UNKNOWN.equals(status)));
}
})
.run();
if (appStatus.get().equals(desiredStatus)) {
LOG.info("Application " + application + " is " + desiredStatus.name());
} else {
LOG.warn("Application is not " + desiredStatus.name() + " within " + timeout +
". Status is: " + appStatus.get());
}
return appStatus.get();
}