package com.sequenceiq.cloudbreak.core.flow2.cluster.reset;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetEvent.CLUSTER_RESET_EVENT;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetEvent.CLUSTER_RESET_FINISHED_EVENT;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetEvent.CLUSTER_RESET_FINISHED_FAILURE_EVENT;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetEvent.CLUSTER_RESET_START_AMBARI_FINISHED_EVENT;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetEvent.CLUSTER_RESET_START_AMBARI_FINISHED_FAILURE_EVENT;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetEvent.FAILURE_EVENT;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetEvent.FAIL_HANDLED_EVENT;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetEvent.FINALIZED_EVENT;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetState.CLUSTER_RESET_FAILED_STATE;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetState.CLUSTER_RESET_FINISHED_STATE;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetState.CLUSTER_RESET_START_AMBARI_FINISHED_STATE;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetState.CLUSTER_RESET_STATE;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetState.FINAL_STATE;
import static com.sequenceiq.cloudbreak.core.flow2.cluster.reset.ClusterResetState.INIT_STATE;
import java.util.List;
import org.springframework.stereotype.Component;
import com.sequenceiq.cloudbreak.core.flow2.config.AbstractFlowConfiguration;
@Component
public class ClusterResetFlowConfig extends AbstractFlowConfiguration<ClusterResetState, ClusterResetEvent> {
private static final List<Transition<ClusterResetState, ClusterResetEvent>> TRANSITIONS =
new Transition.Builder<ClusterResetState, ClusterResetEvent>()
.from(INIT_STATE).to(CLUSTER_RESET_STATE).event(CLUSTER_RESET_EVENT).noFailureEvent()
.from(CLUSTER_RESET_STATE).to(CLUSTER_RESET_FINISHED_STATE).event(CLUSTER_RESET_FINISHED_EVENT)
.failureEvent(CLUSTER_RESET_FINISHED_FAILURE_EVENT)
.from(CLUSTER_RESET_FINISHED_STATE).to(CLUSTER_RESET_START_AMBARI_FINISHED_STATE).event(CLUSTER_RESET_START_AMBARI_FINISHED_EVENT)
.failureEvent(CLUSTER_RESET_START_AMBARI_FINISHED_FAILURE_EVENT)
.from(CLUSTER_RESET_START_AMBARI_FINISHED_STATE).to(FINAL_STATE).event(FINALIZED_EVENT).failureEvent(FAILURE_EVENT)
.build();
private static final FlowEdgeConfig<ClusterResetState, ClusterResetEvent> EDGE_CONFIG = new FlowEdgeConfig<>(INIT_STATE, FINAL_STATE,
CLUSTER_RESET_FAILED_STATE, FAIL_HANDLED_EVENT);
public ClusterResetFlowConfig() {
super(ClusterResetState.class, ClusterResetEvent.class);
}
@Override
protected List<Transition<ClusterResetState, ClusterResetEvent>> getTransitions() {
return TRANSITIONS;
}
@Override
protected AbstractFlowConfiguration.FlowEdgeConfig<ClusterResetState, ClusterResetEvent> getEdgeConfig() {
return EDGE_CONFIG;
}
@Override
public ClusterResetEvent[] getEvents() {
return ClusterResetEvent.values();
}
@Override
public ClusterResetEvent[] getInitEvents() {
return new ClusterResetEvent[]{
CLUSTER_RESET_EVENT
};
}
}