package com.sequenceiq.cloudbreak.core.flow2.stack.provision; import com.sequenceiq.cloudbreak.core.flow2.AbstractAction; import com.sequenceiq.cloudbreak.core.flow2.FlowState; import com.sequenceiq.cloudbreak.core.flow2.RestartAction; import com.sequenceiq.cloudbreak.core.flow2.restart.DisableOnGCPRestartAction; import com.sequenceiq.cloudbreak.core.flow2.restart.FillInMemoryStateStoreRestartAction; import com.sequenceiq.cloudbreak.core.flow2.stack.provision.action.CheckImageAction; public enum StackCreationState implements FlowState { INIT_STATE, STACK_CREATION_FAILED_STATE, VALIDATION_STATE, SETUP_STATE, IMAGESETUP_STATE, IMAGE_CHECK_STATE(CheckImageAction.class), CREATE_CREDENTIAL_STATE, START_PROVISIONING_STATE(null, DisableOnGCPRestartAction.class), PROVISIONING_FINISHED_STATE, COLLECTMETADATA_STATE, GET_TLS_INFO_STATE, TLS_SETUP_STATE, STACK_CREATION_FINISHED_STATE, FINAL_STATE; private Class<? extends AbstractAction> action; private Class<? extends RestartAction> restartAction = FillInMemoryStateStoreRestartAction.class; StackCreationState() { } StackCreationState(Class<? extends AbstractAction> action) { this.action = action; } StackCreationState(Class<? extends AbstractAction> action, Class<? extends RestartAction> restartAction) { this.action = action; this.restartAction = restartAction; } @Override public Class<? extends AbstractAction> action() { return action; } @Override public Class<? extends RestartAction> restartAction() { return restartAction; } }