in services/self-service/src/main/java/com/epam/datalab/backendapi/dao/EnvDAO.java [270:304]
private UserInstanceStatus getInstanceNewStatus(UserInstanceStatus oldStatus, String newStatus) {
/* AWS statuses: pending, running, shutting-down, terminated, stopping, stopped */
UserInstanceStatus status;
if ("pending".equalsIgnoreCase(newStatus) || "stopping".equalsIgnoreCase(newStatus)) {
return oldStatus;
} else if ("shutting-down".equalsIgnoreCase(newStatus)) {
status = TERMINATING;
} else {
status = UserInstanceStatus.of(newStatus);
}
switch (oldStatus) {
case CREATING_IMAGE:
return !status.in(UserInstanceStatus.TERMINATED, TERMINATING,
UserInstanceStatus.RUNNING) ? status : oldStatus;
case CREATING:
return (status.in(UserInstanceStatus.TERMINATED, UserInstanceStatus.STOPPED) ? status : oldStatus);
case RUNNING:
case STOPPING:
return (status.in(TERMINATING, UserInstanceStatus.TERMINATED,
UserInstanceStatus.STOPPING, UserInstanceStatus.STOPPED) ? status : oldStatus);
case STARTING:
return (status.in(TERMINATING, UserInstanceStatus.TERMINATED,
UserInstanceStatus.STOPPING) ? status : oldStatus);
case STOPPED:
return (status.in(TERMINATING, UserInstanceStatus.TERMINATED,
UserInstanceStatus.RUNNING) ? status : oldStatus);
case TERMINATING:
return (status.in(UserInstanceStatus.TERMINATED) ? status : oldStatus);
case FAILED:
case TERMINATED:
default:
return oldStatus;
}
}