1digraph "g" {
2	graph [
3		fontsize = "12"
4		fontname = "Times-Roman"
5		fontcolor = "black"
6		bb = "0,0,398.922306,478.927856"
7		color = "black"
8	]
9	node [
10		fontsize = "12"
11		fontname = "Times-Roman"
12		fontcolor = "black"
13		shape = "ellipse"
14		color = "black"
15	]
16	edge [
17		fontsize = "12"
18		fontname = "Times-Roman"
19		fontcolor = "black"
20		color = "black"
21	]
22
23// special nodes
24	"S_STARTING"
25	[
26	 color = "blue"
27	 fontcolor = "blue"
28	 ]
29	"S_TERMINATE"
30	[
31	 color = "red"
32	 fontcolor = "red"
33	 ]
34
35// DC only nodes
36	"S_RECOVERY_DC" [ fontcolor = "green" ]
37	"S_INTEGRATION" [ fontcolor = "green" ]
38	"S_POLICY_ENGINE" [ fontcolor = "green" ]
39	"S_TRANSITION_ENGINE" [ fontcolor = "green" ]
40	"S_RELEASE_DC" [ fontcolor = "green" ]
41	"S_<ANY_DC>" [ fontcolor = "green" ]
42	"S_IDLE" [ fontcolor = "green" ]
43
44// state transitions
45	"S_<ANY>" -> "S_ELECTION" [ label = "I_DC_TIMEOUT" ]
46	"S_<ANY>" -> "S_RECOVERY"  [ label = "I_ERROR" ]
47	"S_<ANY>" -> "S_<ANY>" [ label = "I_ROUTER,\nI_REQUEST" ]
48
49	"S_<ANY_DC>" -> "S_RELEASE_DC"  [ label = "I_SHUTDOWN" ]
50	"S_<ANY_DC>" -> "S_INTEGRATION"  [ label = "I_NODE_JOIN" ]
51	"S_<ANY_DC>" -> "S_POLICY_ENGINE"  [ label = "I_CIB_UPDATE,\nI_NODE_LEFT,\nI_NODE_LEAVING" ]
52	"S_<ANY_DC>" -> "S_RECOVERY_DC" [ label = "I_ERROR" ]
53	"S_<ANY_DC>" -> "S_<ANY_DC>" [ label = "I_ROUTER,\nI_REQUEST" ]
54
55	"S_ELECTION" -> "S_INTEGRATION"  [ label = "I_ELECTION_DC" ]
56	"S_ELECTION" -> "S_NOT_DC"  [ label = "I_NOT_DC" ]
57	"S_ELECTION" -> "S_RELEASE_DC"  [ label = "I_ELECTION_RELEASE_DC" ]
58
59	"S_INTEGRATION" -> "S_POLICY_ENGINE"  [ label = "I_SUCCESS" ]
60
61	"S_NOT_DC" -> "S_STOPPING"  [ label = "I_SHUTDOWN" ]
62
63	"S_POLICY_ENGINE" -> "S_TRANSITION_ENGINE"  [ label = "I_SUCCESS" ]
64	"S_POLICY_ENGINE" -> "S_POLICY_ENGINE"  [ label = "I_FAIL\nI_RESTART" ]
65
66	"S_RECOVERY_DC" -> "S_INTEGRATION" [ label = "I_RECOVERED" ]
67	"S_RECOVERY_DC" -> "S_RELEASE_DC" [ label = "I_NOT_DC,\nI_SHUTDOWN" ]
68
69	"S_RECOVERY" -> "S_STOPPING" [ label = "I_SHUTDOWN" ]
70	"S_RECOVERY" -> "S_NOT_DC" [ label = "I_RECOVERED" ]
71
72	"S_RELEASE_DC" -> "S_NOT_DC"  [ label = "I_RELEASE_SUCCESS" ]
73	"S_RELEASE_DC" -> "S_STOPPING"  [ label = "I_RELEASE_FAIL" ]
74
75	"S_STARTING" -> "S_STOPPING"  [ label = "I_FAIL" ]
76	"S_STARTING" -> "S_NOT_DC"  [ label = "I_SUCCESS" ]
77
78	"S_STOPPING" -> "S_TERMINATE"  [ label = "I_SUCCESS,\nI_FAIL" ]
79
80	"S_TRANSITION_ENGINE" -> "S_POLICY_ENGINE"  [ label = "I_FAIL" ]
81	"S_TRANSITION_ENGINE" -> "S_IDLE"  [ label = "I_SUCCESS" ]
82}
83