package com.sequenceiq.cloudbreak.orchestrator.container; import java.util.List; import java.util.Optional; import java.util.Set; import com.sequenceiq.cloudbreak.orchestrator.exception.CloudbreakOrchestratorException; import com.sequenceiq.cloudbreak.orchestrator.model.ContainerConfig; import com.sequenceiq.cloudbreak.orchestrator.model.ContainerConstraint; import com.sequenceiq.cloudbreak.orchestrator.model.ContainerInfo; import com.sequenceiq.cloudbreak.orchestrator.model.GatewayConfig; import com.sequenceiq.cloudbreak.orchestrator.model.Node; import com.sequenceiq.cloudbreak.orchestrator.model.OrchestrationCredential; import com.sequenceiq.cloudbreak.orchestrator.state.ExitCriteriaModel; public interface ContainerOrchestrator extends ContainerOrchestrationBootstrap { void validateApiEndpoint(OrchestrationCredential cred) throws CloudbreakOrchestratorException; List<ContainerInfo> runContainer(ContainerConfig config, OrchestrationCredential cred, ContainerConstraint constraint, ExitCriteriaModel exitCriteriaModel) throws CloudbreakOrchestratorException; void startContainer(List<ContainerInfo> info, OrchestrationCredential cred); void stopContainer(List<ContainerInfo> info, OrchestrationCredential cred); void deleteContainer(List<ContainerInfo> containerInfos, OrchestrationCredential cred) throws CloudbreakOrchestratorException; List<String> getMissingNodes(GatewayConfig gatewayConfig, Set<Node> nodes); List<String> getAvailableNodes(GatewayConfig gatewayConfig, Set<Node> nodes); String ambariServerContainer(Optional<String> name); String ambariClientContainer(Optional<String> name); String ambariDbContainer(Optional<String> name); }