1
|
digraph {
|
2
|
graph [nojustify=true] [labeljust=l]
|
3
|
|
4
|
invisiblestart [label = ""] [color=white] [group=lifecycle];
|
5
|
node [color=black] [fillcolor=white] [style=filled] [shape=box] [nojustify=true];
|
6
|
uncommitted [label = "container request:\l state=Uncommitted\l"] [fillcolor=lightgrey] [group=lifecycle];
|
7
|
{
|
8
|
rank=same;
|
9
|
committed [label = "container request:\l state=Committed\l priority>0\l"] [group=lifecycle];
|
10
|
reused [label = "container request:\l state=Final\lcontainer:\l state=Complete\l(reused existing container)\l"] [fillcolor=lightblue] [group=endstate];
|
11
|
}
|
12
|
invisiblestart -> uncommitted [label = " user creates container request\l"] [color=navy] [fontcolor=navy];
|
13
|
uncommitted -> committed [label = " user updates to\l state=Committed, priority>0\l"] [color=navy] [fontcolor=navy];
|
14
|
queued [label = "container request:\l state=Committed\l priority>0\lcontainer:\l state=Queued\l"] [group=lifecycle];
|
15
|
committed -> queued [label = " Arvados creates a new container\l"];
|
16
|
{
|
17
|
rank=same;
|
18
|
locked [label = "container request:\l state=Committed\l priority>0\lcontainer:\l state=Locked\l"] [group=lifecycle];
|
19
|
latecancelled [label = "container request:\l state=Final\lcontainer:\l state=Cancelled\l"] [fillcolor=lightblue] [group=endstate];
|
20
|
}
|
21
|
queued -> locked [label = " Arvados is ready to dispatch the container\l"];
|
22
|
running [label = "container request:\l state=Committed\l priority>0\lcontainer:\l state=Running\l"] [group=lifecycle];
|
23
|
locked -> running [label = " Arvados starts the container process\l"];
|
24
|
|
25
|
node [color=black] [fillcolor=lightblue] [style=filled] [shape=box];
|
26
|
{
|
27
|
rank=same;
|
28
|
containerfinished [label = "container request:\l state=Final\lcontainer:\l state=Complete\l exit_code=0\l"] [group=lifecycle];
|
29
|
containerfailed [label = "container request:\l state=Final\lcontainer:\l state=Complete\l exit_code≠0\l"] [group=endstate];
|
30
|
}
|
31
|
|
32
|
committed -> reused [label = "Arvados selects an existing container"] [constraint=false];
|
33
|
queued -> latecancelled [label = "user updates to priority=0"] [color=navy] [fontcolor=navy];
|
34
|
locked -> latecancelled [label = "user updates to priority=0"] [color=navy] [fontcolor=navy] [constraint=false];
|
35
|
running -> latecancelled [label = "user updates to priority=0"] [color=navy] [fontcolor=navy] [constraint=false];
|
36
|
running -> containerfailed [label = "container process fails"];
|
37
|
running -> containerfinished [label = " container process succeeds\l"];
|
38
|
|
39
|
# layout hacks
|
40
|
// committed -> containerfinished [style=invis];
|
41
|
// uncommitted -> latecancelled [style=invis];
|
42
|
reused -> latecancelled [style=invis];
|
43
|
latecancelled -> containerfailed [style=invis];
|
44
|
}
|