Channel Upgrade Graphs Legends

Defines the legends for channel upgrade graph representation schemes used.

This document enumerates the legends for the graphs that depict channel upgrades throughout this site. Using the legends documented here can help to communicate channel upgrade graphs in a standardized way.

Legends

Diagram (e.g)
Description
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; ID(v0.0.1):::head
Version of the operator which is the head of a channel different versions are available in
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; ID(v0.0.1):::installed
Version of the operator currently installed on cluster
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; ID(v0.0.1)
Operator bundle version which is installable
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; subgraph preview ID(v0.0.1) end
Operator bundle channel.
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; subgraph "preview (default)" ID(v0.0.1) --> ID2(v0.0.2) end
Default Operator bundle channel.
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; A(v0.0.1) --> B(v0.0.4)
An upgrade path to replace one operator bundle version for another using the CSV replaces spec. (eg.spec.replaces: exampleoperator.v0.0.1`). More info: here.
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; A(v0.0.1) x--x |v0.0.2,v0.0.3| B(v0.0.4)
An upgrade path to skip versions in the upgrade path using the CSV skips spec. (eg.spec.skips: exampleoperator.v0.0.2, exampleoperator.v0.0.3). More info: here.
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; C(v2.0.3) o--o |>= 2.0.4 < 3.0.0| D(v3.0.1)
An upgrade path to skip a range of operator bundle versions using the CSV olm.skipRange annotation. (E.g annotations.olm.skipRange: '>= 2.0.4 < 3.0.0') More info: here.
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; A(v0.0.1) -.-> B(v0.0.4)
Represent the same replace method describe above but for a future scenario
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; A(v0.0.1) x-.-x |v0.0.2,v0.0.3| B(v0.0.4)
Represent the same skips method describe above but for a future scenario
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; C(v2.0.3) o-.-o |>= 2.0.4 < 3.0.0| D(v3.0.1)
Represent the same skipRange method describe above but for a future scenario
flowchart TB classDef head fill:#ff668d; classDef installed fill:#34ebba; E(v0.0.2 \n fa:fa-tag label=value)
Index image label with its value for an operator bundle version. (eg.LABEL com.vendor.release.versions:=v4.7)

Creating graphs

The graphs are done programmatically via mermaid. You can use its online editor to work with them and check the following examples.

Check the following example:

flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; subgraph stable A(v0.0.1):::installed --> B(v0.0.2) B(v0.0.2) x--x |v0.0.3,v0.0.4| C(v0.0.5 \n fa:fa-tag 4.6):::head C -.-> E(v0.0.6 \n fa:fa-tag 4.6) end

Now, check the code used to generate this example:

flowchart TB
   classDef head fill:#ffbfcf;
   classDef installed fill:#34ebba;
 
   subgraph stable
   A(v0.0.1):::installed --> B(v0.0.2)
   B(v0.0.2) x--x |v0.0.3,v0.0.4| C(v0.0.5 \n fa:fa-tag 4.6):::head
   C -.-> E(v0.0.6 \n fa:fa-tag 4.6)
   end

Usage code

Note that, the graphs requires starts with:

flowchart TB
   classDef head fill:#ffbfcf;
   classDef installed fill:#34ebba;

Following the code semantic with examples which ought to be used to create the Upgrade Graphs Diagrams.

DescriptionCodeExamples
head bundleID(<bundle tag>):::head
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; ID(v0.0.1):::head
installed bundleID(<bundle tag>):::installed
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; ID(v0.0.1):::installed
installable bundleID(<bundle tag>)
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; ID(v0.0.1)
channelsubgraph <channel name> end
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; subgraph preview ID(v0.0.1) end
default channelsubgraph "<channel name> (default)" end
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; subgraph "preview (default)" ID(v0.0.1) --> ID2(v0.0.2) end
replacesID(<bundle tag>) --> ID(<bundle tag>)
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; A(v0.0.1) --> B(v0.0.4)
skipsID(<bundle tag>) x--x | <versions that should be skipped> | ID(<bundle tag>)
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; A(v0.0.1) x--x |v0.0.2,v0.0.3| B(v0.0.4)
skipRangeID<bundle tag>) o--o | <range> | ID(<bundle tag>)
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; C(v2.0.3) o--o |>= 2.0.4 < 3.0.0| D(v3.0.1)
future replacesID(<bundle tag>) -.-> ID(<bundle tag>)
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; A(v0.0.1) -.-> B(v0.0.4)
future skipsID(<bundle tag>) x-.-x | <versions that should be skipped> | ID(<bundle tag>)
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; A(v0.0.1) x-.-x |v0.0.2,v0.0.3| B(v0.0.4)
future skipRangeID<bundle tag>) o-.-o | <range> | ID(<bundle tag>)
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; C(v2.0.3) o-.-o |>= 2.0.4 < 3.0.0| D(v3.0.1)
Index image labelID(<bundle tag> \n fa:fa-tag <label>=<value>)
flowchart TB classDef head fill:#ffbfcf; classDef installed fill:#34ebba; E(v0.0.2 \n fa:fa-tag label=value)