in ambari-server/src/main/java/org/apache/ambari/server/state/State.java [139:181]
public static boolean isValidStateTransition(State startState, State desiredState) {
switch(desiredState) {
case INSTALLED:
if (startState == State.INIT
|| startState == State.UNINSTALLED
|| startState == State.INSTALLED
|| startState == State.INSTALLING
|| startState == State.STARTED
|| startState == State.INSTALL_FAILED
|| startState == State.UPGRADING
|| startState == State.STOPPING
|| startState == State.UNKNOWN
|| startState == State.MAINTENANCE) {
return true;
}
break;
case STARTED:
if (startState == State.INSTALLED
|| startState == State.STARTING
|| startState == State.STARTED) {
return true;
}
break;
case UNINSTALLED:
if (startState == State.INSTALLED
|| startState == State.UNINSTALLED
|| startState == State.UNINSTALLING) {
return true;
}
case INIT:
if (startState == State.UNINSTALLED
|| startState == State.INIT
|| startState == State.WIPING_OUT) {
return true;
}
case MAINTENANCE:
if (startState == State.INSTALLED
|| startState == State.UNKNOWN) {
return true;
}
}
return false;
}