package com.sequenceiq.cloudbreak.core.bootstrap.service;
import static com.sequenceiq.cloudbreak.cloud.scheduler.PollGroup.CANCELLED;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Service;
import com.sequenceiq.cloudbreak.cloud.scheduler.PollGroup;
import com.sequenceiq.cloudbreak.cloud.store.InMemoryStateStore;
import com.sequenceiq.cloudbreak.orchestrator.state.ExitCriteria;
import com.sequenceiq.cloudbreak.orchestrator.state.ExitCriteriaModel;
@Service
public class StackDeletionBasedExitCriteria implements ExitCriteria {
private static final Logger LOGGER = LoggerFactory.getLogger(StackDeletionBasedExitCriteria.class);
@Override
public boolean isExitNeeded(ExitCriteriaModel exitCriteriaModel) {
StackDeletionBasedExitCriteriaModel model = (StackDeletionBasedExitCriteriaModel) exitCriteriaModel;
LOGGER.debug("Check isExitNeeded for model: {}", model);
PollGroup pollGroup = InMemoryStateStore.getStack(model.getStackId());
if (pollGroup != null && CANCELLED.equals(pollGroup)) {
LOGGER.warn("Stack is getting terminated, polling is cancelled.");
return true;
}
return false;
}
@Override
public String exitMessage() {
return "Stack is getting terminated, polling is cancelled.";
}
}