private UserInstanceStatus getInstanceNewStatus()

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;
        }
    }