package core.aws.resource;
import core.aws.env.Goal;
import core.aws.workflow.Tasks;
/**
* @author neo
*/
public interface ServerResource {
void commandTasks(Tasks tasks);
void startTasks(Tasks tasks);
void stopTasks(Tasks tasks);
void provisionTasks(Tasks tasks);
void uploadTasks(Tasks tasks);
void deployTasks(Tasks tasks);
default void serverTasks(Goal goal, Tasks tasks) {
switch (goal) {
case EXEC:
commandTasks(tasks);
break;
case UPLOAD:
uploadTasks(tasks);
break;
case PROVISION:
provisionTasks(tasks);
break;
case START:
startTasks(tasks);
break;
case STOP:
stopTasks(tasks);
break;
case DEPLOY:
deployTasks(tasks);
break;
default:
throw new IllegalStateException("unsupported goal, goal=" + goal);
}
}
}