Project

General

Profile

Bug #19624 » ContainerRequestLifecycle.dot

Brett Smith, 02/01/2023 09:14 PM

 
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
}
(6-6/7)