package tw.com.repository; import com.amazonaws.services.cloudformation.model.*; import tw.com.MonitorStackEvents; import tw.com.entity.*; import tw.com.exceptions.CfnAssistException; import tw.com.exceptions.WrongNumberOfStacksException; import java.util.Collection; import java.util.List; public interface StackRepository { List<StackEntry> getStacks(); List<StackEntry> getStacks(EnvironmentTag envTag); List<StackEntry> getStacksMatching(EnvironmentTag envTag, String name); StackEntry getStacknameByIndex(EnvironmentTag envTag, Integer index) throws WrongNumberOfStacksException; String waitForStatusToChangeFrom(String stackName, StackStatus currentStatus, List<String> aborts) throws WrongNumberOfStacksException, InterruptedException; List<StackEvent> getStackEvents(String stackName); String getStackStatus(String stackName); StackNameAndId getStackNameAndId(String stackName) throws WrongNumberOfStacksException; Stack getStack(String stackName) throws WrongNumberOfStacksException; void createFail(StackNameAndId id) throws WrongNumberOfStacksException; Stack createSuccess(StackNameAndId id) throws WrongNumberOfStacksException; void updateFail(StackNameAndId id) throws WrongNumberOfStacksException; Stack updateSuccess(StackNameAndId id) throws WrongNumberOfStacksException; StackNameAndId updateStack(String contents, Collection<Parameter> parameters, MonitorStackEvents monitor, String stackName) throws CfnAssistException; StackNameAndId createStack(ProjectAndEnv projAndEnv, String contents, String stackName, Collection<Parameter> parameters, MonitorStackEvents monitor, Tagging tagging) throws CfnAssistException; void deleteStack(String stackName); List<TemplateParameter> validateStackTemplate(String templateContents); }