|
1 | 1 | digraph G {
|
2 |
| - { |
3 |
| - imageIndex [shape=note, label="Image Index\n<<optional>>\napplication/vnd.oci.image.index.v1+json"] |
4 |
| - { |
5 |
| - rank=same |
6 |
| - manifest [shape=note, label="Image manifest\napplication/vnd.oci.image.manifest.v1+json"] |
7 |
| - artifact [shape=note, label="Artifact Manifest\napplication/vnd.oci.artifact.manifest.v1+json"] |
8 |
| - } |
9 |
| - config [shape=note, label="Image config JSON\napplication/vnd.oci.image.config.v1+json"] |
10 |
| - layer [shape=note, label="Layer tar archive\napplication/vnd.oci.image.layer.v1.tar\napplication/vnd.oci.image.layer.v1.tar+gzip\napplication/vnd.oci.image.layer.nondistributable.v1.tar\napplication/vnd.oci.image.layer.nondistributable.v1.tar+gzip"] |
| 2 | + compound=true |
| 3 | + invisM[shape=point height=0] // invisible node needed for some links to parent |
| 4 | + subgraph manifest { |
| 5 | + label="Manifest" |
| 6 | + cluster=true |
| 7 | + { cluster=false; index -> {rank=same; image -> artifact[style=invis]} [style=invis] } // order nodes |
| 8 | + invisSubM [style=invis shape=point height=0] // invisible node inside manifest |
| 9 | + index [shape=note label="Image Index\napplication/vnd.oci.image.index.v1+json"] |
| 10 | + image [shape=note label="Image Manifest\napplication/vnd.oci.image.manifest.v1+json"] |
| 11 | + artifact [shape=note label="Artifact Manifest\napplication/vnd.oci.artifact.manifest.v1+json"] |
| 12 | + } |
| 13 | + subgraph blob { |
| 14 | + label="Blob" |
| 15 | + cluster=true |
| 16 | + { cluster=false; rank=same; config -> layer -> other [style=invis] } // order nodes |
| 17 | + config [shape=note label="Image Config JSON\napplication/vnd.oci.image.config.v1+json"] |
| 18 | + layer [shape=note label="Layer tar archive\napplication/vnd.oci.image.layer.v1.tar\napplication/vnd.oci.image.layer.v1.tar+gzip"] |
| 19 | + other [shape=note label="Other blobs\n*/*"] |
11 | 20 | }
|
12 | 21 |
|
13 |
| - imageIndex -> imageIndex [label="1..*"] |
14 |
| - imageIndex -> manifest [label="1..*"] |
15 |
| - manifest -> config [label="1..1"] |
16 |
| - manifest -> layer [label="1..*"] |
17 |
| - artifact -> manifest [label="0..1"] [constraint = false]; |
18 |
| - artifact -> artifact [label="0..1"]; |
19 |
| - manifest -> manifest [label="0..1"]; |
20 |
| - artifact -> imageIndex [label="0..1"] |
21 |
| - artifact -> layer[label="0..*"] |
| 22 | + index -> index [label="1..*"]; |
| 23 | + index -> image [label="1..*"]; |
| 24 | + index -> artifact [label="1..*"]; |
| 25 | + image -> config [label="1..1"]; |
| 26 | + image -> layer [label="1..*"]; |
| 27 | + image -> invisM:e [dir=none label="0..1\nsubject" constraint = false]; |
| 28 | + artifact -> layer [lhead="blob" label="0..*"]; |
| 29 | + artifact -> invisM:e [dir=none label="0..1\nsubject" constraint = false]; |
| 30 | + invisM:w -> invisSubM [lhead=manifest]; |
22 | 31 | }
|
0 commit comments