package com.sequenceiq.cloudbreak.core.flow2.stack.repair; import com.sequenceiq.cloudbreak.core.flow2.config.AbstractFlowConfiguration; import org.springframework.stereotype.Component; import static com.sequenceiq.cloudbreak.core.flow2.stack.repair.ManualStackRepairTriggerEvent.MANUAL_STACK_REPAIR_TRIGGER_EVENT; import static com.sequenceiq.cloudbreak.core.flow2.stack.repair.ManualStackRepairTriggerEvent.MANUAL_STACK_REPAIR_TRIGGER_FAILURE_EVENT; import static com.sequenceiq.cloudbreak.core.flow2.stack.repair.ManualStackRepairTriggerEvent.MANUAL_STACK_REPAIR_TRIGGER_FAILURE_HANDLED_EVENT; import static com.sequenceiq.cloudbreak.core.flow2.stack.repair.ManualStackRepairTriggerEvent.NOTIFY_REPAIR_SERVICE_EVENT; import static com.sequenceiq.cloudbreak.core.flow2.stack.repair.ManualStackRepairTriggerEvent.REPAIR_SERVICE_NOTIFIED_EVENT; import static com.sequenceiq.cloudbreak.core.flow2.stack.repair.ManualStackRepairTriggerState.INIT_STATE; import static com.sequenceiq.cloudbreak.core.flow2.stack.repair.ManualStackRepairTriggerState.UNHEALTHY_INSTANCES_DETECTION_STATE; import static com.sequenceiq.cloudbreak.core.flow2.stack.repair.ManualStackRepairTriggerState.NOTIFY_STACK_REPAIR_SERVICE_STATE; import static com.sequenceiq.cloudbreak.core.flow2.stack.repair.ManualStackRepairTriggerState.MANUAL_STACK_REPAIR_TRIGGER_FAILED_STATE; import static com.sequenceiq.cloudbreak.core.flow2.stack.repair.ManualStackRepairTriggerState.FINAL_STATE; import java.util.List; @Component public class ManualStackRepairTriggerFlowConfig extends AbstractFlowConfiguration<ManualStackRepairTriggerState, ManualStackRepairTriggerEvent> { private static final List<Transition<ManualStackRepairTriggerState, ManualStackRepairTriggerEvent>> TRANSITIONS = new Transition.Builder<ManualStackRepairTriggerState, ManualStackRepairTriggerEvent>() .defaultFailureEvent(MANUAL_STACK_REPAIR_TRIGGER_FAILURE_EVENT) .from(INIT_STATE).to(UNHEALTHY_INSTANCES_DETECTION_STATE).event(MANUAL_STACK_REPAIR_TRIGGER_EVENT).defaultFailureEvent() .from(UNHEALTHY_INSTANCES_DETECTION_STATE).to(NOTIFY_STACK_REPAIR_SERVICE_STATE).event(NOTIFY_REPAIR_SERVICE_EVENT).defaultFailureEvent() .from(NOTIFY_STACK_REPAIR_SERVICE_STATE).to(FINAL_STATE).event(REPAIR_SERVICE_NOTIFIED_EVENT).defaultFailureEvent() .build(); private static final FlowEdgeConfig<ManualStackRepairTriggerState, ManualStackRepairTriggerEvent> EDGE_CONFIG = new FlowEdgeConfig<>(INIT_STATE, FINAL_STATE, MANUAL_STACK_REPAIR_TRIGGER_FAILED_STATE, MANUAL_STACK_REPAIR_TRIGGER_FAILURE_HANDLED_EVENT); public ManualStackRepairTriggerFlowConfig() { super(ManualStackRepairTriggerState.class, ManualStackRepairTriggerEvent.class); } @Override protected List<Transition<ManualStackRepairTriggerState, ManualStackRepairTriggerEvent>> getTransitions() { return TRANSITIONS; } @Override protected FlowEdgeConfig<ManualStackRepairTriggerState, ManualStackRepairTriggerEvent> getEdgeConfig() { return EDGE_CONFIG; } @Override public ManualStackRepairTriggerEvent[] getEvents() { return ManualStackRepairTriggerEvent.values(); } @Override public ManualStackRepairTriggerEvent[] getInitEvents() { return new ManualStackRepairTriggerEvent[] { ManualStackRepairTriggerEvent.MANUAL_STACK_REPAIR_TRIGGER_EVENT }; } }