package com.sequenceiq.cloudbreak.service.cluster.flow;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;
import com.sequenceiq.cloudbreak.service.CloudbreakServiceException;
import com.sequenceiq.cloudbreak.service.ClusterBasedStatusCheckerTask;
@Component
public class AmbariHealthCheckerTask extends ClusterBasedStatusCheckerTask<AmbariClientPollerObject> {
private static final Logger LOGGER = LoggerFactory.getLogger(AmbariHealthCheckerTask.class);
@Override
public boolean checkStatus(AmbariClientPollerObject ambariClientPollerObject) {
try {
String ambariHealth = ambariClientPollerObject.getAmbariClient().healthCheck();
return "RUNNING".equals(ambariHealth);
} catch (Exception e) {
LOGGER.info("Ambari is not running yet: {}", e.getMessage());
return false;
}
}
@Override
public void handleTimeout(AmbariClientPollerObject t) {
throw new CloudbreakServiceException(String.format("Operation timed out. Ambari server could not start %s", t.getAmbariClient().getAmbari().getUri()));
}
@Override
public String successMessage(AmbariClientPollerObject t) {
return String.format("Ambari server successfully started '%s'", t.getAmbariClient().getAmbari().getUri());
}
}