digraph "g" { graph [ fontsize = "12" fontname = "Times-Roman" fontcolor = "black" bb = "0,0,398.922306,478.927856" color = "black" ] node [ fontsize = "12" fontname = "Times-Roman" fontcolor = "black" shape = "ellipse" color = "black" ] edge [ fontsize = "12" fontname = "Times-Roman" fontcolor = "black" color = "black" ] // special nodes "S_STARTING" [ color = "blue" fontcolor = "blue" ] "S_TERMINATE" [ color = "red" fontcolor = "red" ] // DC only nodes "S_RECOVERY_DC" [ fontcolor = "green" ] "S_INTEGRATION" [ fontcolor = "green" ] "S_POLICY_ENGINE" [ fontcolor = "green" ] "S_TRANSITION_ENGINE" [ fontcolor = "green" ] "S_RELEASE_DC" [ fontcolor = "green" ] "S_" [ fontcolor = "green" ] "S_IDLE" [ fontcolor = "green" ] // state transitions "S_" -> "S_ELECTION" [ label = "I_DC_TIMEOUT" ] "S_" -> "S_RECOVERY" [ label = "I_ERROR" ] "S_" -> "S_" [ label = "I_ROUTER,\nI_REQUEST" ] "S_" -> "S_RELEASE_DC" [ label = "I_SHUTDOWN" ] "S_" -> "S_INTEGRATION" [ label = "I_NODE_JOIN" ] "S_" -> "S_POLICY_ENGINE" [ label = "I_CIB_UPDATE,\nI_NODE_LEFT,\nI_NODE_LEAVING" ] "S_" -> "S_RECOVERY_DC" [ label = "I_ERROR" ] "S_" -> "S_" [ label = "I_ROUTER,\nI_REQUEST" ] "S_ELECTION" -> "S_INTEGRATION" [ label = "I_ELECTION_DC" ] "S_ELECTION" -> "S_NOT_DC" [ label = "I_NOT_DC" ] "S_ELECTION" -> "S_RELEASE_DC" [ label = "I_ELECTION_RELEASE_DC" ] "S_INTEGRATION" -> "S_POLICY_ENGINE" [ label = "I_SUCCESS" ] "S_NOT_DC" -> "S_STOPPING" [ label = "I_SHUTDOWN" ] "S_POLICY_ENGINE" -> "S_TRANSITION_ENGINE" [ label = "I_SUCCESS" ] "S_POLICY_ENGINE" -> "S_POLICY_ENGINE" [ label = "I_FAIL\nI_RESTART" ] "S_RECOVERY_DC" -> "S_INTEGRATION" [ label = "I_RECOVERED" ] "S_RECOVERY_DC" -> "S_RELEASE_DC" [ label = "I_NOT_DC,\nI_SHUTDOWN" ] "S_RECOVERY" -> "S_STOPPING" [ label = "I_SHUTDOWN" ] "S_RECOVERY" -> "S_NOT_DC" [ label = "I_RECOVERED" ] "S_RELEASE_DC" -> "S_NOT_DC" [ label = "I_RELEASE_SUCCESS" ] "S_RELEASE_DC" -> "S_STOPPING" [ label = "I_RELEASE_FAIL" ] "S_STARTING" -> "S_STOPPING" [ label = "I_FAIL" ] "S_STARTING" -> "S_NOT_DC" [ label = "I_SUCCESS" ] "S_STOPPING" -> "S_TERMINATE" [ label = "I_SUCCESS,\nI_FAIL" ] "S_TRANSITION_ENGINE" -> "S_POLICY_ENGINE" [ label = "I_FAIL" ] "S_TRANSITION_ENGINE" -> "S_IDLE" [ label = "I_SUCCESS" ] }