From f8ac699890e6568f4144a3f7a5a972995c42539f Mon Sep 17 00:00:00 2001 From: Stefan Junker Date: Mon, 24 Feb 2020 21:46:45 +0100 Subject: [PATCH 1/6] dist/prow_yaml_lint: ignore the test fixtures --- dist/prow_yaml_lint.sh | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/dist/prow_yaml_lint.sh b/dist/prow_yaml_lint.sh index 9248a7b21..1de8cafe4 100755 --- a/dist/prow_yaml_lint.sh +++ b/dist/prow_yaml_lint.sh @@ -11,4 +11,6 @@ if ! type -f "${YAML_LINTER}"; then exit 1 fi -find . -type f \( -name '*.yaml' -o -name '*.yml' \) -print0 | xargs -L 1 -0 "${YAML_LINT_CMD[@]}" +find . \ + -path "./graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures" -prune -o \ + -type f \( -name '*.yaml' -o -name '*.yml' \) -print0 | xargs -L 1 -0 "${YAML_LINT_CMD[@]}" From 592f1af870421149112aba907b1106b39cc70d97 Mon Sep 17 00:00:00 2001 From: Stefan Junker Date: Mon, 24 Feb 2020 22:12:01 +0100 Subject: [PATCH 2/6] commons/testing: use log::trace instead of println --- commons/src/testing.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/commons/src/testing.rs b/commons/src/testing.rs index 38340cef2..592d9d967 100644 --- a/commons/src/testing.rs +++ b/commons/src/testing.rs @@ -65,7 +65,7 @@ pub fn sort_json_graph_by_version(v: &mut serde_json::Value) { .entry(version.to_string()) .and_modify(|(from, to)| { *to = Some(i); - println!( + log::trace!( "{} changed index from {} to {}", version, from.unwrap(), @@ -94,7 +94,7 @@ pub fn sort_json_graph_by_version(v: &mut serde_json::Value) { let new_i64 = *index_map.get(&old_usize).unwrap() as i64; serde_json::Value::Number(serde_json::Number::from(new_i64)) }; - println!("Rewriting {:?} -> {:?})", old, new); + log::trace!("Rewriting {:?} -> {:?})", old, new); *old = new; }; } From ac2cef9d07e98a72c590d3709a505caeec53aa0c Mon Sep 17 00:00:00 2001 From: Stefan Junker Date: Mon, 24 Feb 2020 22:13:48 +0100 Subject: [PATCH 3/6] cincinnati/plugins/{node_add_remove,edge_add_remove}: make DEFAULT_KEY_FILTER public --- cincinnati/src/plugins/internal/edge_add_remove.rs | 2 +- cincinnati/src/plugins/internal/node_remove.rs | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/cincinnati/src/plugins/internal/edge_add_remove.rs b/cincinnati/src/plugins/internal/edge_add_remove.rs index 5efb7a0b5..6d6e00d40 100644 --- a/cincinnati/src/plugins/internal/edge_add_remove.rs +++ b/cincinnati/src/plugins/internal/edge_add_remove.rs @@ -8,7 +8,7 @@ use async_trait::async_trait; use failure::Fallible; use prometheus::Registry; -static DEFAULT_KEY_FILTER: &str = "io.openshift.upgrades.graph"; +pub static DEFAULT_KEY_FILTER: &str = "io.openshift.upgrades.graph"; pub static DEFAULT_REMOVE_ALL_EDGES_VALUE: &str = "*"; #[derive(Clone, Debug, Deserialize, SmartDefault)] diff --git a/cincinnati/src/plugins/internal/node_remove.rs b/cincinnati/src/plugins/internal/node_remove.rs index 53109f4a2..86b977a30 100644 --- a/cincinnati/src/plugins/internal/node_remove.rs +++ b/cincinnati/src/plugins/internal/node_remove.rs @@ -7,7 +7,8 @@ use async_trait::async_trait; use failure::Fallible; use prometheus::Registry; -static DEFAULT_KEY_FILTER: &str = "io.openshift.upgrades.graph"; +/// Prefix for the metadata key operations. +pub static DEFAULT_KEY_FILTER: &str = "io.openshift.upgrades.graph"; #[derive(Clone, Debug, Deserialize, SmartDefault)] #[serde(default)] From 1ca63e03254086502bcace9884b481ab0068d390 Mon Sep 17 00:00:00 2001 From: Stefan Junker Date: Mon, 17 Feb 2020 14:34:32 +0100 Subject: [PATCH 4/6] cincinnati/plugins/edge_add_remove: add edge removal by regex and metadata removal setting * Add `previous.remove_regex` metadata key to remove edges by regex matching. * Add a `remove_consumed_metadata` configuration option to control the removal of metadata after it has been processed. --- .../src/plugins/internal/edge_add_remove.rs | 114 ++++++++++++++++-- graph-builder/src/main.rs | 1 + 2 files changed, 108 insertions(+), 7 deletions(-) diff --git a/cincinnati/src/plugins/internal/edge_add_remove.rs b/cincinnati/src/plugins/internal/edge_add_remove.rs index 6d6e00d40..026932b71 100644 --- a/cincinnati/src/plugins/internal/edge_add_remove.rs +++ b/cincinnati/src/plugins/internal/edge_add_remove.rs @@ -5,7 +5,7 @@ use crate::plugins::BoxedPlugin; use crate::plugins::{InternalIO, InternalPlugin, InternalPluginWrapper, PluginSettings}; use crate::ReleaseId; use async_trait::async_trait; -use failure::Fallible; +use failure::{Fallible, ResultExt}; use prometheus::Registry; pub static DEFAULT_KEY_FILTER: &str = "io.openshift.upgrades.graph"; @@ -19,6 +19,10 @@ pub struct EdgeAddRemovePlugin { #[default(DEFAULT_REMOVE_ALL_EDGES_VALUE.to_string())] pub remove_all_edges_value: String, + + /// If true causes the removal of all processed metadata from the releases. + #[default(false)] + pub remove_consumed_metadata: bool, } #[async_trait] @@ -53,7 +57,8 @@ impl PluginSettings for EdgeAddRemovePlugin { /// 2. next /// 2. *.remove /// 1. previous -/// 2. next +/// 2. previous_regex +/// 3. next /// /// This ordering has implications on the result of semantical contradictions, so that the `*.remove` labels take precedence over `*.add`. /// @@ -94,11 +99,18 @@ impl EdgeAddRemovePlugin { }; } + let previous_remove_key = format!("{}.{}", self.key_prefix, "previous.remove"); graph - .find_by_metadata_key(&format!("{}.{}", self.key_prefix, "previous.remove")) + .find_by_metadata_key(&previous_remove_key) .into_iter() .try_for_each( |(to, to_version, from_csv): (ReleaseId, String, String)| -> Fallible<()> { + if self.remove_consumed_metadata { + graph + .get_metadata_as_ref_mut(&to) + .map(|metadata| metadata.remove(&previous_remove_key))?; + } + if from_csv.trim() == self.remove_all_edges_value { let parents: Vec = graph .previous_releases(&to) @@ -114,7 +126,7 @@ impl EdgeAddRemovePlugin { try_annotate_semver_build(&mut graph, from_version, &to)?; if let Some(from) = graph.find_by_version(&from_version) { - info!("[{}]: removing previous {}", from_version, to_version,); + info!("[{}]: removing previous {}", to_version, from_version); handle_remove_edge!(from, to) } else { warn!( @@ -127,11 +139,73 @@ impl EdgeAddRemovePlugin { }, )?; + // Remove edges instructed by "previous.remove_regex" + let previous_remove_regex_key = format!("{}.{}", self.key_prefix, "previous.remove_regex"); + graph + .find_by_metadata_key(&previous_remove_regex_key) + .into_iter() + .try_for_each( + |(to, to_version, from_regex_string): (ReleaseId, String, String)| -> Fallible<()> { + if self.remove_consumed_metadata { + graph + .get_metadata_as_ref_mut(&to) + .map(|metadata| metadata.remove(&previous_remove_regex_key))?; + } + + let from_regex = regex::Regex::new(&from_regex_string) + .context(format!("Parsing {} as Regex", &from_regex_string))?; + + if from_regex_string == ".*" { + let parents: Vec = graph + .previous_releases(&to) + .map(|(edge_index, _, _)| edge_index) + .collect(); + + trace!( + "removing parents by regex for '{}': {:?}", + to_version, + parents + ); + return graph.remove_edges_by_index(&parents); + }; + + let froms = graph.find_by_fn_mut(|release| { + if from_regex.is_match(release.version()) { + debug!( + "Regex '{}' matches version '{}'", + &from_regex, + release.version(), + ); + true + } else { + false + } + }); + + for (from, from_version) in froms { + info!( + "[{}]: removing previous {} by regex", + to_version, from_version + ); + handle_remove_edge!(from, to); + } + + Ok(()) + }, + )?; + + let next_remove_key = format!("{}.{}", self.key_prefix, "next.remove"); graph - .find_by_metadata_key(&format!("{}.{}", self.key_prefix, "next.remove")) + .find_by_metadata_key(&next_remove_key) .into_iter() .try_for_each( |(from, from_version, to_csv): (ReleaseId, String, String)| -> Fallible<()> { + if self.remove_consumed_metadata { + graph + .get_metadata_as_ref_mut(&from) + .map(|metadata| metadata.remove(&next_remove_key))?; + } + for to_version in to_csv.split(',').map(str::trim) { let to_version = try_annotate_semver_build(&mut graph, to_version, &from)?; if let Some(to) = graph.find_by_version(&to_version) { @@ -167,10 +241,17 @@ impl EdgeAddRemovePlugin { }; } + let previous_add_key = format!("{}.{}", self.key_prefix, "previous.add"); graph - .find_by_metadata_key(&format!("{}.{}", self.key_prefix, "previous.add")) + .find_by_metadata_key(&previous_add_key) .into_iter() .try_for_each(|(to, to_version, from_csv)| -> Fallible<()> { + if self.remove_consumed_metadata { + graph + .get_metadata_as_ref_mut(&to) + .map(|metadata| metadata.remove(&previous_add_key))?; + } + for from_version in from_csv.split(',').map(str::trim) { let from_version_annotated = try_annotate_semver_build(&mut graph, from_version, &to)?; @@ -191,10 +272,17 @@ impl EdgeAddRemovePlugin { Ok(()) })?; + let next_add_key = format!("{}.{}", self.key_prefix, "next.add"); graph - .find_by_metadata_key(&format!("{}.{}", self.key_prefix, "next.add")) + .find_by_metadata_key(&next_add_key) .into_iter() .try_for_each(|(from, from_version, to_csv)| -> Fallible<()> { + if self.remove_consumed_metadata { + graph + .get_metadata_as_ref_mut(&from) + .map(|metadata| metadata.remove(&next_add_key))?; + } + for to_version in to_csv.split(',').map(str::trim) { let to_version_annotated = try_annotate_semver_build(&mut graph, to_version, &from)?; @@ -290,6 +378,8 @@ mod tests { let plugin = Box::new(EdgeAddRemovePlugin { key_prefix, remove_all_edges_value: DEFAULT_REMOVE_ALL_EDGES_VALUE.to_string(), + + ..Default::default() }); let future_processed_graph = plugin.run_internal(InternalIO { graph: input_graph.clone(), @@ -343,6 +433,8 @@ mod tests { let plugin = Box::new(EdgeAddRemovePlugin { key_prefix, remove_all_edges_value: DEFAULT_REMOVE_ALL_EDGES_VALUE.to_string(), + + ..Default::default() }); let future_processed_graph = plugin.run_internal(InternalIO { graph: input_graph, @@ -405,6 +497,8 @@ mod tests { let plugin = Box::new(EdgeAddRemovePlugin { key_prefix, remove_all_edges_value: DEFAULT_REMOVE_ALL_EDGES_VALUE.to_string(), + + ..Default::default() }); let future_processed_graph = plugin.run_internal(InternalIO { graph: input_graph, @@ -455,6 +549,8 @@ mod tests { let plugin = Box::new(EdgeAddRemovePlugin { key_prefix, remove_all_edges_value: DEFAULT_REMOVE_ALL_EDGES_VALUE.to_string(), + + ..Default::default() }); let future_processed_graph = plugin.run_internal(InternalIO { graph: input_graph, @@ -508,6 +604,8 @@ mod tests { let plugin = Box::new(EdgeAddRemovePlugin { key_prefix, remove_all_edges_value: DEFAULT_REMOVE_ALL_EDGES_VALUE.to_string(), + + ..Default::default() }); let future_processed_graph = plugin.run_internal(InternalIO { @@ -558,6 +656,8 @@ mod tests { let plugin = Box::new(EdgeAddRemovePlugin { key_prefix: KEY_PREFIX.to_string(), remove_all_edges_value: DEFAULT_REMOVE_ALL_EDGES_VALUE.to_string(), + + ..Default::default() }); let future_processed_graph = plugin.run_internal(InternalIO { graph: input_graph.clone(), diff --git a/graph-builder/src/main.rs b/graph-builder/src/main.rs index 5cb49994f..76187d2b6 100644 --- a/graph-builder/src/main.rs +++ b/graph-builder/src/main.rs @@ -90,6 +90,7 @@ fn main() -> Result<(), Error> { InternalPluginWrapper(EdgeAddRemovePlugin { key_prefix: DEFAULT_QUAY_LABEL_FILTER.to_string(), remove_all_edges_value: DEFAULT_REMOVE_ALL_EDGES_VALUE.to_string(), + remove_consumed_metadata: false, }) ) }; From e66173479c64cd2f47769ca77e8d3ebac80eed84 Mon Sep 17 00:00:00 2001 From: Stefan Junker Date: Mon, 24 Feb 2020 22:38:12 +0100 Subject: [PATCH 5/6] graph-builder/Cargo: stream feature for tokio; pretty_assertions --- Cargo.lock | 48 +++++++++++++++++++++++++++++++++------- graph-builder/Cargo.toml | 1 + 2 files changed, 41 insertions(+), 8 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index f6d5c6da9..5d9f3eda0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -287,7 +287,7 @@ name = "aho-corasick" version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -680,6 +680,15 @@ dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ctor" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quote 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "custom_debug_derive" version = "0.1.7" @@ -974,7 +983,7 @@ dependencies = [ "futures-macro 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)", "proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1041,6 +1050,7 @@ dependencies = [ "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "prometheus 0.7.0 (git+https://github.com/pingcap/rust-prometheus.git?rev=6a02b0d2943f8fffce672e236e22c6f925184d93)", "quay 0.0.0-dev", "regex 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1356,7 +1366,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "memchr" -version = "2.2.1" +version = "2.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -1472,7 +1482,7 @@ name = "nom" version = "4.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "version_check 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -1555,6 +1565,14 @@ dependencies = [ "vcpkg 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "output_vt100" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "parking_lot" version = "0.8.0" @@ -1692,6 +1710,17 @@ name = "ppv-lite86" version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "pretty_assertions" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ctor 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)", + "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "proc-macro-hack" version = "0.5.11" @@ -1968,7 +1997,7 @@ version = "1.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "aho-corasick 0.7.6 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "regex-syntax 0.6.13 (registry+https://github.com/rust-lang/crates.io-index)", "thread_local 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2399,7 +2428,7 @@ dependencies = [ "iovec 0.1.4 (registry+https://github.com/rust-lang/crates.io-index)", "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.66 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "mio 0.6.21 (registry+https://github.com/rust-lang/crates.io-index)", "mio-uds 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", "pin-project-lite 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -2516,7 +2545,7 @@ name = "twoway" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)", "unchecked-index 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -2898,6 +2927,7 @@ dependencies = [ "checksum crossbeam-channel 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "acec9a3b0b3559f15aee4f90746c4e5e293b701c0f7d3925d24e01645267b68c" "checksum crossbeam-utils 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "04973fa96e96579258a5091af6003abde64af786b860f18622b82e026cca60e6" "checksum crossbeam-utils 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4" +"checksum ctor 0.1.13 (registry+https://github.com/rust-lang/crates.io-index)" = "47c5e5ac752e18207b12e16b10631ae5f7f68f8805f335f9b817ead83d9ffce1" "checksum custom_debug_derive 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "51764d3d7ee61d1ac25cc99b2cd8cdd9aabffb1b9e8fb17e41dcc5b21a278119" "checksum daggy 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e2099ef075418d7b252af69583c831cde749af9423c2a212dea8895e8ea78841" "checksum derive_more 0.99.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2159be042979966de68315bce7034bb000c775f22e3e834e1c52ff78f041cae8" @@ -2970,7 +3000,7 @@ dependencies = [ "checksum lru-cache 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "31e24f1ad8321ca0e8a1e0ac13f23cb668e6f5466c2c57319f6a5cf1cc8e3b1c" "checksum maplit 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "3e2e65a1a2e43cfcb47a895c4c8b10d1f4a61097f9f254f183aee60cad9c651d" "checksum matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" -"checksum memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "88579771288728879b57485cc7d6b07d648c9f0141eb955f8ab7f9d45394468e" +"checksum memchr 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "3728d817d99e5ac407411fa471ff9800a778d88a24685968b36824eaf4bee400" "checksum mime 0.3.13 (registry+https://github.com/rust-lang/crates.io-index)" = "3e27ca21f40a310bd06d9031785f4801710d566c184a6e15bad4f1d9b65f9425" "checksum mime_guess 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1a0ed03949aef72dbdf3116a383d7b38b4768e6f960528cd6a6044aa9ed68599" "checksum miniz_oxide 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "6f3f74f726ae935c3f514300cc6773a0c9492abc5e972d42ba0c0ebb88757625" @@ -2990,6 +3020,7 @@ dependencies = [ "checksum openssl 0.10.24 (registry+https://github.com/rust-lang/crates.io-index)" = "8152bb5a9b5b721538462336e3bef9a539f892715e5037fda0f984577311af15" "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" "checksum openssl-sys 0.9.49 (registry+https://github.com/rust-lang/crates.io-index)" = "f4fad9e54bd23bd4cbbe48fdc08a1b8091707ac869ef8508edea2fec77dcc884" +"checksum output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9" "checksum parking_lot 0.10.0 (registry+https://github.com/rust-lang/crates.io-index)" = "92e98c49ab0b7ce5b222f2cc9193fc4efe11c6d0bd4f648e374684a6857b1cfc" "checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7" "checksum parking_lot_core 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cb88cb1cb3790baa6776844f968fea3be44956cf184fa1be5a03341f5491278c" @@ -3003,6 +3034,7 @@ dependencies = [ "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" "checksum pkg-config 0.3.15 (registry+https://github.com/rust-lang/crates.io-index)" = "a7c1d2cfa5a714db3b5f24f0915e74fcdf91d09d496ba61329705dda7774d2af" "checksum ppv-lite86 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e3cbf9f658cdb5000fcf6f362b8ea2ba154b9f146a61c7a20d647034c6b6561b" +"checksum pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" "checksum proc-macro-hack 0.5.11 (registry+https://github.com/rust-lang/crates.io-index)" = "ecd45702f76d6d3c75a80564378ae228a85f0b59d2f3ed43c91b4a69eb2ebfc5" "checksum proc-macro-nested 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "369a6ed065f249a159e06c45752c780bda2fb53c995718f9e484d08daa9eb42e" "checksum proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)" = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" diff --git a/graph-builder/Cargo.toml b/graph-builder/Cargo.toml index 550e9db77..25c496739 100644 --- a/graph-builder/Cargo.toml +++ b/graph-builder/Cargo.toml @@ -47,6 +47,7 @@ walkdir = "2.3.1" twoway = "^0.2" assert-json-diff = "1.0.0" test-case = "1.0.0" +pretty_assertions = "0.6.1" [features] test-net = [] From 09fcff9ab15b178f526e832495d0e962db529f6c Mon Sep 17 00:00:00 2001 From: Stefan Junker Date: Mon, 24 Feb 2020 22:23:01 +0100 Subject: [PATCH 6/6] graph-builder: add plugin to parse openshift/cincinnati-graph-data Add openshift_secondary_metadata_parser plugin: * Implement plugin logic * Test using fixtures produced with a custom graph-builder to obtain a snapshot of the following triple: * a vanilla graph produced by the registry scraper plugin * a vanilla graph augmented by the quay secondary metadata plugin * the data from the openshift/cincinnati-graph-data repository The test asserts equality of two results of the EdgeAddRemovePlugin. The first result is obtianed by passing the raw graph through the new parser plugin and then through the EdgeAddRemovePlugin. The second passing the quay metadata graph fixture through the new parser plugin. This ensures compatibility between the new plugin and the QuayMetadataPlugin with respect to equality for subsequent processing of their produced metadata. Note: for this to work I had to add raw metadata to the fixtures, which represents metadata present on quay, but not present as part of the existing cincinnati-graph-data. This raw metadata has also been added to the upstream data repository. --- graph-builder/src/plugins/mod.rs | 1 + .../mod.rs | 9 + .../plugin.rs | 513 +++ .../blocked-edges/4.1.1.yaml | 2 + .../blocked-edges/4.1.10.yaml | 2 + .../blocked-edges/4.2.0-rc.5.yaml | 2 + .../blocked-edges/4.2.0.yaml | 2 + .../blocked-edges/4.2.1.yaml | 2 + .../blocked-edges/4.2.11-s390x.yaml | 2 + .../blocked-edges/4.2.11.yaml | 2 + .../blocked-edges/4.2.13-s390x.yaml | 3 + .../blocked-edges/4.3.0-rc.0.yaml | 6 + .../blocked-edges/4.3.0-rc.3.yaml | 5 + .../blocked-edges/4.3.1.yaml | 3 + .../blocked-edges/_OWNERS | 10 + .../cincinnati-graph-data/channels/_OWNERS | 10 + .../channels/candidate-4.2.yaml | 40 + .../channels/candidate-4.3.yaml | 13 + .../channels/fast-4.2.yaml | 33 + .../channels/fast-4.3.yaml | 6 + .../channels/prerelease-4.1.yaml | 40 + .../channels/prerelease-4.2.yaml | 5 + .../channels/stable-4.0.yaml | 5 + .../channels/stable-4.1.yaml | 31 + .../channels/stable-4.2.yaml | 30 + .../channels/stable-4.3.yaml | 5 + .../cincinnati-graph-data/raw/metadata.json | 14 + .../20200220.104838/graph-gb-raw.json | 2992 ++++++++++++++++ .../graph-gb-with-quay-metadata.json | 3079 +++++++++++++++++ 29 files changed, 6867 insertions(+) create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/mod.rs create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/plugin.rs create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.1.1.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.1.10.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.0-rc.5.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.0.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.1.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.11-s390x.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.11.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.13-s390x.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.3.0-rc.0.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.3.0-rc.3.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.3.1.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/_OWNERS create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/_OWNERS create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/candidate-4.2.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/candidate-4.3.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/fast-4.2.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/fast-4.3.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/prerelease-4.1.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/prerelease-4.2.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.0.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.1.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.2.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.3.yaml create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/raw/metadata.json create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/graph-gb-raw.json create mode 100644 graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/graph-gb-with-quay-metadata.json diff --git a/graph-builder/src/plugins/mod.rs b/graph-builder/src/plugins/mod.rs index 045cb5b77..21b5c702e 100644 --- a/graph-builder/src/plugins/mod.rs +++ b/graph-builder/src/plugins/mod.rs @@ -1,4 +1,5 @@ //! Plugins specific to the graph-builder pub mod github_openshift_secondary_metadata_scraper; +pub mod openshift_secondary_metadata_parser; pub mod release_scrape_dockerv2; diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/mod.rs b/graph-builder/src/plugins/openshift_secondary_metadata_parser/mod.rs new file mode 100644 index 000000000..75afeae9e --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/mod.rs @@ -0,0 +1,9 @@ +//! This plugin parses the humman readable OpenShift secondary metadata format, +//! as used in https://github.com/openshift/cincinnati-graph-data. +//! There is currently no formal specification for this format. + +pub mod plugin; + +pub use plugin::{ + OpenshiftSecondaryMetadataParserPlugin, OpenshiftSecondaryMetadataParserSettings, +}; diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/plugin.rs b/graph-builder/src/plugins/openshift_secondary_metadata_parser/plugin.rs new file mode 100644 index 000000000..9715d791a --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/plugin.rs @@ -0,0 +1,513 @@ +use async_trait::async_trait; +use cincinnati::plugins::prelude::*; +use cincinnati::plugins::InternalIO; +use cincinnati::plugins::InternalPlugin; +use failure::{Fallible, ResultExt}; +use serde::de::DeserializeOwned; +use std::path::PathBuf; +use std::str::FromStr; + +mod graph_data_model { + //! This module contains the data types corresponding to the graph data files. + + use serde::de::Visitor; + use serde::Deserialize; + use serde::Deserializer; + use std::collections::HashMap; + + /// Represents the blocked edges files in the data repository. + #[derive(Debug, Deserialize)] + pub struct BlockedEdge { + pub to: semver::Version, + pub from: RegexWrapper, + } + + /// New type used to implement Deserialize for regex::Regex so we can use it in the `BlockedEdge` struct + #[derive(Debug)] + pub struct RegexWrapper(regex::Regex); + + impl std::ops::Deref for RegexWrapper { + type Target = regex::Regex; + + fn deref(&self) -> &Self::Target { + &self.0 + } + } + + impl<'de> Deserialize<'de> for RegexWrapper { + fn deserialize(deserializer: D) -> Result + where + D: Deserializer<'de>, + { + struct RegexVisitor; + + impl<'de> Visitor<'de> for RegexVisitor { + type Value = RegexWrapper; + + fn visit_str(self, value: &str) -> Result + where + E: serde::de::Error, + { + let re = regex::Regex::new(value).map_err(|e| { + serde::de::Error::custom(format!("error parsing {} as Regex: {}", value, e)) + })?; + + Ok(RegexWrapper(re)) + } + + fn expecting( + &self, + _: &mut std::fmt::Formatter<'_>, + ) -> std::result::Result<(), std::fmt::Error> { + panic!("impl of Visitor::expecting for RegexVisitor should not be required for deserialization.") + } + } + + deserializer.deserialize_str(RegexVisitor) + } + } + + /// Represents the channel files in the data repository. + #[derive(Debug, Deserialize)] + pub struct Channel { + pub name: String, + pub versions: Vec, + } + + /// Represents the raw metadata file in the data repository. + pub type RawMetadata = HashMap>; +} + +mod state { + //! This module contains types to manage the plugin state. + + use std::collections::HashMap; + use std::sync::Arc; + use tokio::sync::RwLock as FuturesRwLock; + + #[derive(Debug, Default)] + pub struct StateData { + sha: Option, + metadata: HashMap, + } + + pub type State = Arc>; + + pub fn new() -> State { + Arc::new(FuturesRwLock::new(Default::default())) + } +} + +pub static DEFAULT_ARCH: &str = "amd64"; + +/// Plugin settings. +#[derive(Clone, Debug, Deserialize, SmartDefault)] +#[serde(default)] +pub struct OpenshiftSecondaryMetadataParserSettings { + data_directory: PathBuf, + key_prefix: String, + + #[default(DEFAULT_ARCH.to_string())] + default_arch: String, +} + +/// Plugin. +#[derive(Debug)] +pub struct OpenshiftSecondaryMetadataParserPlugin { + settings: OpenshiftSecondaryMetadataParserSettings, + + // Stores the result of the last run + state: state::State, +} + +impl OpenshiftSecondaryMetadataParserPlugin { + pub fn new(settings: OpenshiftSecondaryMetadataParserSettings) -> Self { + Self { + settings, + state: state::new(), + } + } +} + +impl PluginSettings for OpenshiftSecondaryMetadataParserSettings { + fn build_plugin(&self, _: Option<&prometheus::Registry>) -> Fallible { + let plugin = OpenshiftSecondaryMetadataParserPlugin::new(self.clone()); + Ok(new_plugin!(InternalPluginWrapper(plugin))) + } +} + +async fn deserialize_directory_files( + path: &PathBuf, + extension_re: regex::Regex, +) -> Fallible> +where + T: DeserializeOwned, +{ + use tokio::stream::Stream; + use tokio::stream::StreamExt; + + let mut paths = tokio::fs::read_dir(&path) + .await + .context(format!("Reading directory {:?}", &path))? + .filter_map(|tried_direntry| match tried_direntry { + Ok(direntry) => Some(direntry), + Err(e) => { + warn!("{}", e); + None + } + }) + .filter_map(|direntry| { + let path = direntry.path(); + if let Some(extension) = &path.extension() { + if extension_re.is_match(extension.to_str().unwrap_or_default()) { + Some(path) + } else { + None + } + } else { + debug!("{:?} does not have an extension", &path); + None + } + }); + + let mut t_vec: Vec = Vec::with_capacity(match paths.size_hint() { + (_, Some(upper)) => upper, + (lower, None) => lower, + }); + + while let Some(path) = paths.next().await { + match tokio::fs::read(&path).await { + Ok(yaml) => match serde_yaml::from_slice(&yaml) { + Ok(value) => t_vec.push(value), + Err(e) => { + warn!("Failed to deserialize file at {:?}: {}", &path, e); + } + }, + Err(e) => { + warn!("Couldn't read file {:?}: {}", &path, e); + } + } + } + + Ok(t_vec) +} + +impl OpenshiftSecondaryMetadataParserPlugin { + async fn process_raw_metadata(&self, io: &mut InternalIO) -> Fallible<()> { + let path = self.settings.data_directory.join("raw/metadata.json"); + + let json = tokio::fs::read(&path) + .await + .context(format!("Reading {:?}", &path))?; + let raw_metadata = serde_json::from_slice::(&json).context( + format!("Deserializing the content of {:?} to RawMetadata", &path), + )?; + debug!("Found {} raw metadata entries", raw_metadata.len()); + + raw_metadata.iter().for_each(|(version, metadata)| { + metadata.iter().for_each(|(key, value)| { + io.graph.find_by_fn_mut(|release| { + let release_semver = semver::Version::from_str(release.version()) + .context(format!("Parsing {} as SemVer", release.version())); + if let Err(e) = &release_semver { + warn!("{}", e); + } + + let version_semver = semver::Version::from_str(version) + .context(format!("Parsing {} as SemVer", &version)); + if let Err(e) = &version_semver { + warn!("{}", e); + } + + match (release_semver, version_semver) { + (Ok(release_semver), Ok(version_semver)) + if release_semver == version_semver => + { + release.get_metadata_mut().map(|metadata| { + metadata + .entry((*key).to_string()) + .and_modify(|previous_add| { + *previous_add += &format!(",{}", &value) + }) + .or_insert_with(|| (*value).to_string()) + }); + true + } + _ => false, + } + }); + }) + }); + + Ok(()) + } + + async fn process_blocked_edges(&self, io: &mut InternalIO) -> Fallible<()> { + let blocked_edges_dir = self.settings.data_directory.join("blocked-edges"); + let blocked_edges: Vec = + deserialize_directory_files(&blocked_edges_dir, regex::Regex::new("ya+ml")?) + .await + .context(format!( + "Reading blocked edges from {:?}", + blocked_edges_dir + ))?; + debug!( + "Found {} valid blocked edges declarations.", + blocked_edges.len() + ); + + blocked_edges + .into_iter() + .try_for_each(|blocked_edge| -> Fallible<()> { + let mut to = blocked_edge.to; + + // add build information to match architecture + if to.build.is_empty() { + let arch = + // Special case for a few cases where the "s390x" arch was encoded with '-' instead of '+' + if to.pre == vec![semver::Identifier::AlphaNumeric("s390x".to_string())] { + "s390x" + } else { + &self.settings.default_arch + }; + + warn!("Adding architecture {} to {:?}", &arch, &to); + to.build + .push(semver::Identifier::AlphaNumeric(arch.to_string())); + }; + + // find version in the graph + let release_id = match io.graph.find_by_version(&to.to_string()) { + Some(release_id) => release_id, + None => { + warn!("Release with version {} not found in graph", to); + return Ok(()); + } + }; + + // add metadata to block edge using the `previous.remove_regex` metadata + io.graph + .get_metadata_as_ref_mut(&release_id) + .context(format!( + "[blocked_edges] Getting mutable metadata for {}", + &to.to_string() + ))? + .insert( + format!("{}.{}", self.settings.key_prefix, "previous.remove_regex"), + blocked_edge.from.to_string(), + ); + + Ok(()) + })?; + + Ok(()) + } + + async fn process_channels(&self, io: &mut InternalIO) -> Fallible<()> { + let channels_dir = self.settings.data_directory.join("channels"); + let channels: Vec = + deserialize_directory_files(&channels_dir, regex::Regex::new("ya+ml")?) + .await + .context(format!("Reading channels from {:?}", channels_dir))?; + debug!("Found {} valid channel declarations.", channels.len()); + + let channels_key = format!("{}.release.channels", self.settings.key_prefix); + channels.into_iter().for_each(|channel| + // Find out for each channel + { + let versions_in_channel = channel + .versions + .iter() + .collect::>(); + + let releases_in_channel = io.graph.find_by_fn_mut(|release| { + let release_semver = match semver::Version::from_str(release.version()) + .context(format!("Parsing {} as SemVer", release.version())) + { + Ok(semver) => semver, + Err(e) => { + warn!("{}", e); + return false; + } + }; + + versions_in_channel.iter().any(|release_in_channel| { + let release_eq = *release_in_channel == &release_semver; + + // Comparing semver::Version is not enough because it disregards the build information. + let build_eq = release_in_channel.build.is_empty() || + release_in_channel.build == release_semver.build; + + release_eq && build_eq + }) + }); + + for (release_id, version) in releases_in_channel { + let metadata = match io + .graph + .get_metadata_as_ref_mut(&release_id) + .context(format!( + "[channels] Getting mutable metadata for {}", + &version + )) { + Ok(metadata) => metadata, + Err(e) => { + warn!("{}", e); + continue; + } + }; + + metadata + .entry(channels_key.clone()) + .and_modify(|channels_value| { + channels_value.extend(format!(",{}", &channel.name).chars()); + }) + .or_insert_with(|| channel.name.clone()); + } + }); + + // Sort the channels as some tests and consumers might already depend on + // the sorted output which existed in the hack util which is replaced by this plugin. + let sorted_releases = io.graph.find_by_fn_mut(|release| { + release + .get_metadata_mut() + .map(|metadata| { + metadata.entry(channels_key.clone()).and_modify(|channels| { + let mut channels_split = channels.split(',').collect::>(); + // this has to match the sorting at + // https://github.com/openshift/cincinnati-graph-data/blob/5fc8dd0825b42369de8070ecba2ae0c49d0a99d9/hack/graph-util.py#L187 + channels_split.sort_by(|a, b| { + let a_split: Vec<&str> = a.splitn(2, '-').collect(); + let b_split: Vec<&str> = b.splitn(2, '-').collect(); + a_split[1].cmp(b_split[1]) + }); + *channels = channels_split.join(",") + }) + }) + .is_some() + }); + debug!( + "Sorted channels metadata of {} releases.", + sorted_releases.len() + ); + + Ok(()) + } +} + +#[async_trait] +impl InternalPlugin for OpenshiftSecondaryMetadataParserPlugin { + async fn run_internal(self: &Self, mut io: InternalIO) -> Fallible { + self.process_raw_metadata(&mut io).await?; + self.process_blocked_edges(&mut io).await?; + self.process_channels(&mut io).await?; + + Ok(io) + } +} + +#[cfg(test)] +mod tests { + use cincinnati::plugins::InternalIO; + use cincinnati::plugins::InternalPlugin; + use failure::{Fallible, ResultExt}; + use std::path::PathBuf; + use std::str::FromStr; + + lazy_static::lazy_static! { + static ref TEST_FIXTURE_DIR: PathBuf = { + PathBuf::from_str("src/plugins/openshift_secondary_metadata_parser/test_fixtures").unwrap() + }; + } + + #[test] + fn compare_quay_result_fixture_20200220104838() -> Fallible<()> { + let mut runtime = commons::testing::init_runtime()?; + + let fixture_directory = TEST_FIXTURE_DIR.join("20200220.104838"); + + let read_file_to_graph = |filename: &str| -> Fallible { + let path = fixture_directory.join(filename); + let string = + std::fs::read_to_string(&path).context(format!("Reading {:?} to string", &path))?; + serde_json::from_str(&string) + .context(format!("Deserializing {:?} to Graph", &path)) + .map_err(Into::into) + }; + + // Get the fixture data + let graph_raw = read_file_to_graph("graph-gb-raw.json")?; + let graph_with_quay_metadata: cincinnati::Graph = + read_file_to_graph("graph-gb-with-quay-metadata.json")?; + + // Configure the plugin + let plugin = Box::new(super::OpenshiftSecondaryMetadataParserPlugin::new( + toml::from_str(&format!( + r#" + data_directory = {:?} + key_prefix = "{}" + "#, + &fixture_directory.join("cincinnati-graph-data"), + cincinnati::plugins::internal::edge_add_remove::DEFAULT_KEY_FILTER, + )) + .context("Parsing config string to settings")?, + )); + let edge_add_remove_plugin = Box::new( + cincinnati::plugins::internal::edge_add_remove::EdgeAddRemovePlugin { + remove_consumed_metadata: true, + + ..Default::default() + }, + ); + + let graph_result = { + // Run the plugin + let io = runtime + .block_on(plugin.run_internal(InternalIO { + graph: graph_raw, + parameters: Default::default(), + })) + .context("Running plugin")?; + + // Run through the EdgeAddRemovePlugin to compare it with the control data + runtime + .block_on(edge_add_remove_plugin.run_internal(io)) + .context( + "Running plugin result with quay metadata through the EdgeEAddRemovePlugin", + )? + .graph + }; + + // Run the graph with quay metadata through the EdgeAddRemovePlugin + // which will serve as the expected graph + let graph_expected = { + runtime + .block_on(edge_add_remove_plugin.run_internal(InternalIO { + graph: graph_with_quay_metadata, + parameters: Default::default(), + })) + .context( + "Running fixture graph with quay metadata through the EdgeEAddRemovePlugin", + )? + .graph + }; + + // Sort the graphs for easier readable diffs + let graph_expected_sorted = { + let mut graph = + serde_json::to_value(&graph_expected).context("Sorting expected graph")?; + commons::testing::sort_json_graph_by_version(&mut graph); + graph + }; + + let graph_result_sorted = { + let mut graph = serde_json::to_value(&graph_result).context("Sorting result graph")?; + commons::testing::sort_json_graph_by_version(&mut graph); + graph + }; + + pretty_assertions::assert_eq!(graph_result_sorted, graph_expected_sorted); + + Ok(()) + } +} diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.1.1.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.1.1.yaml new file mode 100644 index 000000000..48359b409 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.1.1.yaml @@ -0,0 +1,2 @@ +to: 4.1.1 +from: .* diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.1.10.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.1.10.yaml new file mode 100644 index 000000000..11be78cab --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.1.10.yaml @@ -0,0 +1,2 @@ +to: 4.1.10 +from: .* diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.0-rc.5.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.0-rc.5.yaml new file mode 100644 index 000000000..52fa8fe39 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.0-rc.5.yaml @@ -0,0 +1,2 @@ +to: 4.2.0-rc.5 +from: 4\.1\.(18|20) diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.0.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.0.yaml new file mode 100644 index 000000000..86dbe5b39 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.0.yaml @@ -0,0 +1,2 @@ +to: 4.2.0 +from: 4\.1\.20 diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.1.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.1.yaml new file mode 100644 index 000000000..92c687d3b --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.1.yaml @@ -0,0 +1,2 @@ +to: 4.2.1 +from: .* diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.11-s390x.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.11-s390x.yaml new file mode 100644 index 000000000..4a0787d64 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.11-s390x.yaml @@ -0,0 +1,2 @@ +to: 4.2.11-s390x +from: .* diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.11.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.11.yaml new file mode 100644 index 000000000..b0aef6284 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.11.yaml @@ -0,0 +1,2 @@ +to: 4.2.11 +from: .* diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.13-s390x.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.13-s390x.yaml new file mode 100644 index 000000000..3d7efb29e --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.2.13-s390x.yaml @@ -0,0 +1,3 @@ +# Bugzilla https://bugzilla.redhat.com/show_bug.cgi?id=1789260 +to: 4.2.13-s390x +from: .* diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.3.0-rc.0.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.3.0-rc.0.yaml new file mode 100644 index 000000000..bdcafe8da --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.3.0-rc.0.yaml @@ -0,0 +1,6 @@ +to: 4.3.0-rc.0 +from: .* +# 4.2 -> 4.3 updates occasionally hit FailedCreatePodSandBox events, fixed in rc.3, but in neither 4.2.16 nor rc.0: https://bugzilla.redhat.com/show_bug.cgi?id=1787635 +# 4.2 -> 4.3 updates occasionally hit RequiredPoolsFailed degradation, fixed in 4.2.16 and rc.3, but in neither 4.2.13 nor rc.0: https://bugzilla.redhat.com/show_bug.cgi?id=1786993 +# 4.2 -> 4.3 updates occasionally hit RouteHealthDegraded degradation, fixed in rc.0, but not in 4.2.16: https://bugzilla.redhat.com/show_bug.cgi?id=1790704 +# 4.2.* -> 4.3.0-rc.0 Sometimes workloads on GCP are unreachable during 4.2.x to 4.3.0 upgrade sometimes: https://bugzilla.redhat.com/show_bug.cgi?id=1793635 diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.3.0-rc.3.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.3.0-rc.3.yaml new file mode 100644 index 000000000..4c2d56fbb --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.3.0-rc.3.yaml @@ -0,0 +1,5 @@ +to: 4.3.0-rc.3 +from: 4\.2\..* +# 4.2 -> 4.3 updates occasionally hit FailedCreatePodSandBox events, fixed in rc.3, but not in 4.2.16: https://bugzilla.redhat.com/show_bug.cgi?id=1787635 +# 4.2 -> 4.3 updates occasionally hit RouteHealthDegraded degradation, fixed in rc.0, but not in 4.2.16: https://bugzilla.redhat.com/show_bug.cgi?id=1790704 +# 4.2.* -> 4.3.0-rc.3 Sometimes workloads on GCP are unreachable during 4.2.x to 4.3.0 upgrade sometimes: https://bugzilla.redhat.com/show_bug.cgi?id=1793635 diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.3.1.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.3.1.yaml new file mode 100644 index 000000000..6b2ede705 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/4.3.1.yaml @@ -0,0 +1,3 @@ +to: 4.3.1 +from: 4\.2\.18 +# 4.2.18 is baked into 4.3.1 as a recommended update source, but we don't have a 4.2.18 release yet. Block until we have a release, to avoid accidentally adding 4.2.18 -> 4.3.1 to channels if 4.2.18 ends up being a dud. diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/_OWNERS b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/_OWNERS new file mode 100644 index 000000000..036aea744 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/blocked-edges/_OWNERS @@ -0,0 +1,10 @@ +# See the OWNERS docs: https://git.k8s.io/community/contributors/guide/owners.md +# This file just uses aliases defined in OWNERS_ALIASES. + +approvers: + - release-admins +reviewers: + - cincinnati-graph-data-approvers + - cincinnati-graph-data-reviewers +options: + no_parent_owners: true diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/_OWNERS b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/_OWNERS new file mode 100644 index 000000000..036aea744 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/_OWNERS @@ -0,0 +1,10 @@ +# See the OWNERS docs: https://git.k8s.io/community/contributors/guide/owners.md +# This file just uses aliases defined in OWNERS_ALIASES. + +approvers: + - release-admins +reviewers: + - cincinnati-graph-data-approvers + - cincinnati-graph-data-reviewers +options: + no_parent_owners: true diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/candidate-4.2.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/candidate-4.2.yaml new file mode 100644 index 000000000..cb841f586 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/candidate-4.2.yaml @@ -0,0 +1,40 @@ +name: candidate-4.2 +versions: +- 4.1.18 +- 4.1.20 +- 4.1.21 +- 4.1.22 +- 4.1.23 +- 4.1.24 +- 4.1.25 +- 4.1.26 +- 4.1.27 +- 4.1.28 +- 4.1.29 +- 4.1.30 +- 4.1.31 +- 4.1.34 +- 4.2.0 +- 4.2.0-rc.5 +- 4.2.1 +- 4.2.2 +- 4.2.4 +- 4.2.7 +- 4.2.8 +- 4.2.9 +- 4.2.10 +- 4.2.10-s390x +# - 4.2.11 failed to run tests, we never officially released it, but we accidentally +# put it in a channel! (same for s390x) Now we shouldn't pull it, just in case +# someone is on it +- 4.2.11 +- 4.2.11-s390x +- 4.2.12 +- 4.2.12-s390x +- 4.2.13 +- 4.2.13-s390x +- 4.2.14 +# not 4.2.15 because 4.2.16 was built with the same errata URI +- 4.2.16 +- 4.2.18 +- 4.2.19 diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/candidate-4.3.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/candidate-4.3.yaml new file mode 100644 index 000000000..463134584 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/candidate-4.3.yaml @@ -0,0 +1,13 @@ +name: candidate-4.3 +versions: +# until s390 is released on 4.3 we may not want to include it in 4.3 channels +- 4.2.16+amd64 +- 4.2.18+amd64 +- 4.2.19+amd64 +- 4.3.0-rc.0 +# I'm not sure what happened to rc1 and rc2. rc2 was, I think, fine +# but it never got upgrade tests https://github.com/openshift/cincinnati-graph-data/pull/26 +- 4.3.0-rc.3 +- 4.3.0 +- 4.3.1 +- 4.3.2 diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/fast-4.2.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/fast-4.2.yaml new file mode 100644 index 000000000..b376d664b --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/fast-4.2.yaml @@ -0,0 +1,33 @@ +name: fast-4.2 +versions: +- 4.1.21 +- 4.1.22 +- 4.1.24 +- 4.1.26 +- 4.1.27 +- 4.1.28 +- 4.1.29 +- 4.1.30 +- 4.1.31 +- 4.2.0 +- 4.2.1 +- 4.2.2 +- 4.2.4 +- 4.2.7 +- 4.2.8 +- 4.2.9 +- 4.2.10 +- 4.2.10-s390x + # - 4.2.11 failed to run tests, we never officially released it, but we accidentally +# put it in a channel! (same for s390x) Now we shouldn't pull it, just in case +# someone is on it +- 4.2.11 +- 4.2.11-s390x +- 4.2.12 +- 4.2.12-s390x +- 4.2.13 +- 4.2.13-s390x +- 4.2.14+amd64 +# not 4.2.14-s390x because of https://bugzilla.redhat.com/show_bug.cgi?id=1789260 +# not 4.2.15 because 4.2.16 was built with the same errata URI +- 4.2.16 diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/fast-4.3.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/fast-4.3.yaml new file mode 100644 index 000000000..7c4dfeca7 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/fast-4.3.yaml @@ -0,0 +1,6 @@ +name: fast-4.3 +versions: +# until s390 is released on 4.3 we may not want to include it in 4.3 channels +- 4.2.16+amd64 +- 4.3.0 +- 4.3.1 diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/prerelease-4.1.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/prerelease-4.1.yaml new file mode 100644 index 000000000..54aadbe56 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/prerelease-4.1.yaml @@ -0,0 +1,40 @@ +name: prerelease-4.1 +versions: +- 4.1.0 +- 4.1.0-rc.0 +- 4.1.0-rc.3 +- 4.1.0-rc.4 +- 4.1.0-rc.5 +- 4.1.0-rc.6 +- 4.1.0-rc.7 +- 4.1.0-rc.8 +- 4.1.0-rc.9 +- 4.1.1 +- 4.1.2 +- 4.1.3 +- 4.1.4 +- 4.1.6 +- 4.1.7 +- 4.1.8 +- 4.1.9 +- 4.1.10 +- 4.1.11 +- 4.1.13 +- 4.1.14 +- 4.1.15 +- 4.1.16 +- 4.1.17 +- 4.1.18 +- 4.1.20 +- 4.1.21 +- 4.1.22 +- 4.1.23 +- 4.1.24 +- 4.1.25 +- 4.1.26 +- 4.1.27 +- 4.1.28 +- 4.1.29 +- 4.1.30 +- 4.1.31 +- 4.1.34 diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/prerelease-4.2.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/prerelease-4.2.yaml new file mode 100644 index 000000000..0c87aee71 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/prerelease-4.2.yaml @@ -0,0 +1,5 @@ +name: prerelease-4.2 +versions: +- 4.2.0-rc.0 +- 4.2.0-rc.1 +- 4.2.0-rc.5 diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.0.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.0.yaml new file mode 100644 index 000000000..84efa5887 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.0.yaml @@ -0,0 +1,5 @@ +name: stable-4.0 +versions: +- 4.0.0-0.9 +- 4.0.0-0.10 +- 4.0.0-0.11 diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.1.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.1.yaml new file mode 100644 index 000000000..4a11e7e17 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.1.yaml @@ -0,0 +1,31 @@ +name: stable-4.1 +versions: +- 4.1.0 +- 4.1.1 +- 4.1.2 +- 4.1.3 +- 4.1.4 +- 4.1.6 +- 4.1.7 +- 4.1.8 +- 4.1.9 +- 4.1.10 +- 4.1.11 +- 4.1.13 +- 4.1.14 +- 4.1.15 +- 4.1.16 +- 4.1.17 +- 4.1.18 +- 4.1.20 +- 4.1.21 +- 4.1.22 +- 4.1.23 +- 4.1.24 +- 4.1.25 +- 4.1.26 +- 4.1.27 +- 4.1.28 +- 4.1.29 +- 4.1.30 +- 4.1.31 diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.2.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.2.yaml new file mode 100644 index 000000000..22f741424 --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.2.yaml @@ -0,0 +1,30 @@ +name: stable-4.2 +versions: +- 4.1.24 +- 4.1.26 +- 4.1.27 +- 4.1.28 +- 4.1.29 +- 4.1.30 +- 4.1.31 +- 4.2.0 +- 4.2.1 +- 4.2.2 +- 4.2.4 +- 4.2.7 +- 4.2.8 +- 4.2.9 +- 4.2.10 + # - 4.2.11 failed to run tests, we never officially released it, but we accidentally +# put it in a channel! (same for s390x) Now we shouldn't pull it, just in case +# someone is on it +- 4.2.11 +- 4.2.11-s390x +- 4.2.12 +- 4.2.12-s390x +- 4.2.13 +- 4.2.13-s390x +- 4.2.14+amd64 +# not 4.2.14-s390x because of https://bugzilla.redhat.com/show_bug.cgi?id=1789260 +# not 4.2.15 because 4.2.16 was built with the same errata URI +- 4.2.16 diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.3.yaml b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.3.yaml new file mode 100644 index 000000000..896d4ebff --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/channels/stable-4.3.yaml @@ -0,0 +1,5 @@ +name: stable-4.3 +versions: +# until s390 is released on 4.3 we may not want to include it in 4.3 channels +- 4.3.0 +- 4.3.1 diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/raw/metadata.json b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/raw/metadata.json new file mode 100644 index 000000000..dcb0254fe --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/cincinnati-graph-data/raw/metadata.json @@ -0,0 +1,14 @@ +{ + "4.1.0": { + "io.openshift.upgrades.graph.previous.add": "4.1.0-rc.4,4.1.0-rc.9" + }, + "4.1.0-rc.6": { + "io.openshift.upgrades.graph.previous.add": "4.1.0-rc.5" + }, + "4.1.0-rc.7": { + "io.openshift.upgrades.graph.previous.add": "4.1.0-rc.6" + }, + "4.1.0-rc.9": { + "io.openshift.upgrades.graph.previous.add": "4.1.0-rc.7,4.1.0-rc.8" + } +} diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/graph-gb-raw.json b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/graph-gb-raw.json new file mode 100644 index 000000000..f9b57b5fc --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/graph-gb-raw.json @@ -0,0 +1,2992 @@ +{ + "nodes": [ + { + "version": "4.0.0-0.okd-0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a974d62e29b5a91501b8703ad2e1ac68b503fcb92a2f3abed38681bc7fe354d5", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:a974d62e29b5a91501b8703ad2e1ac68b503fcb92a2f3abed38681bc7fe354d5", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-0.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:8580a118ce951dd241e4a4b73a0e5f4cda3b56088b6c1ab56ccadbf8e270fb1d", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:8580a118ce951dd241e4a4b73a0e5f4cda3b56088b6c1ab56ccadbf8e270fb1d" + } + }, + { + "version": "4.0.0-0.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:66cee7428ba0d3cb983bd2a437e576b2289e7fd5abafa70256200a5408b26644", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:66cee7428ba0d3cb983bd2a437e576b2289e7fd5abafa70256200a5408b26644", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "This is the beta1 image based on the 4.0.0-0.nightly-2019-01-15-010905 build" + } + }, + { + "version": "4.0.0-0.3+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:5b7d1c80f75a7703b5622de7273d63b4939dbfae1986b87b3fee436a1dacab44", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:5b7d1c80f75a7703b5622de7273d63b4939dbfae1986b87b3fee436a1dacab44" + } + }, + { + "version": "4.0.0-0.4+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:9f5f1d4514124f7406129629d8afd587f6beddd8b384b9ed09c5b4532f9f5631", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:9f5f1d4514124f7406129629d8afd587f6beddd8b384b9ed09c5b4532f9f5631" + } + }, + { + "version": "4.0.0-0.5+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:6bfad9b32e8f4f94ba08424db4242da03b4dd14c7a65e216d69f5f13508882cd", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:6bfad9b32e8f4f94ba08424db4242da03b4dd14c7a65e216d69f5f13508882cd", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-4+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:4f02d5c7183360a519a7c7dbe601f58123c9867cd5721ae503072ae62920575b", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:4f02d5c7183360a519a7c7dbe601f58123c9867cd5721ae503072ae62920575b", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-5+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:ed45d79377a8f36aa5db7be63c1278ae864031ec3d50b80fdd9902c6be4517ba", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:ed45d79377a8f36aa5db7be63c1278ae864031ec3d50b80fdd9902c6be4517ba", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-9+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:e237499d3b118e25890550daad8b17274af93baf855914a9c6f8f07ebc095dea", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:e237499d3b118e25890550daad8b17274af93baf855914a9c6f8f07ebc095dea" + } + }, + { + "version": "4.0.0-8+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:2390e665f4b3a2a12c2e676e7a75af6ff74f66e57242ab2f2e58b9d8e6837777", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:2390e665f4b3a2a12c2e676e7a75af6ff74f66e57242ab2f2e58b9d8e6837777" + } + }, + { + "version": "4.0.0-7+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:3e70b2d2004c9335dabc24d6259c5b03739fd86eae435c191ee2b8592e86efec", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:3e70b2d2004c9335dabc24d6259c5b03739fd86eae435c191ee2b8592e86efec" + } + }, + { + "version": "4.0.0-6+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:1def881ba4273f180941d3345f09dbd2f7fd87ac2409c77a3c257c31a6aa776d", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:1def881ba4273f180941d3345f09dbd2f7fd87ac2409c77a3c257c31a6aa776d", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-0.7+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:641c0e4f550af59ec20349187a31751ae5108270f13332d1771935520ebf34c1", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:641c0e4f550af59ec20349187a31751ae5108270f13332d1771935520ebf34c1", + "description": "Beta 2", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-0.6+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a063664ec3a376b62ed796dec8662b18269528c4821d4cea4bec18d1171691f9", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:a063664ec3a376b62ed796dec8662b18269528c4821d4cea4bec18d1171691f9" + } + }, + { + "version": "4.0.0-0.8+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:358585fa0d2e709ce3964a245474b49b4360d8946455ab5b0467a11b135a21df", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:358585fa0d2e709ce3964a245474b49b4360d8946455ab5b0467a11b135a21df", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-0.9+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:29a057c89cc5cf9c7853c52b815ba95bd66d1a66cb274d1991ca4951f5920cb2", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:29a057c89cc5cf9c7853c52b815ba95bd66d1a66cb274d1991ca4951f5920cb2", + "description": "Beta 3", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-0.11+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:48a384355e6e6f6c6edda037125b332831c17e79f8e23400ad8feee7b3c9e0d0", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:48a384355e6e6f6c6edda037125b332831c17e79f8e23400ad8feee7b3c9e0d0", + "description": "Beta 3 patch 2" + } + }, + { + "version": "4.0.0-0.10+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:df05555541a7c40cae2f0603c33329e897ed4b71a07cba947f7dcea1a2291fbc", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "Beta 3 patch 1", + "io.openshift.upgrades.graph.release.manifestref": "sha256:df05555541a7c40cae2f0603c33329e897ed4b71a07cba947f7dcea1a2291fbc" + } + }, + { + "version": "4.1.0-rc.0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:345ec9351ecc1d78c16cf0853fe0ef2d9f48dd493da5fdffc18fa18f45707867", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:345ec9351ecc1d78c16cf0853fe0ef2d9f48dd493da5fdffc18fa18f45707867", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "Beta 4" + } + }, + { + "version": "4.1.0-rc.5+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:dc67ad5edd91ca48402309fe0629593e5ae3333435ef8d0bc52c2b62ca725021", + "metadata": { + "url": "https://errata.devel.redhat.com/advisory/38252", + "description": "Beta 7", + "io.openshift.upgrades.graph.release.manifestref": "sha256:dc67ad5edd91ca48402309fe0629593e5ae3333435ef8d0bc52c2b62ca725021", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.1.0-rc.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:be61a9ec132118e41a417b347242361d9cc96b1a73753e121dc7a74a1905baea", + "metadata": { + "url": "https://errata.devel.redhat.com/advisory/38252", + "io.openshift.upgrades.graph.release.manifestref": "sha256:be61a9ec132118e41a417b347242361d9cc96b1a73753e121dc7a74a1905baea", + "description": "beta 5", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.1.0-rc.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:689102dee32defd00a0803ccb206c604515f8f0198713e9c206d91fe295b4b63", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://errata.devel.redhat.com/advisory/38252", + "io.openshift.upgrades.graph.release.manifestref": "sha256:689102dee32defd00a0803ccb206c604515f8f0198713e9c206d91fe295b4b63", + "description": "beta 5" + } + }, + { + "version": "4.1.0-rc.4+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:6f4cf2db7e63c4dba54496a72b83fec22c49293b520ff0cdb78f1e38b23f1ccb", + "metadata": { + "url": "https://errata.devel.redhat.com/advisory/38252", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:6f4cf2db7e63c4dba54496a72b83fec22c49293b520ff0cdb78f1e38b23f1ccb", + "description": "Beta 6" + } + }, + { + "version": "4.1.0-rc.3+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:713aae8687cf8a3cb5c2c504f65532dfe11e1b3534448ea9eeef5b0931d3e208", + "metadata": { + "url": "https://errata.devel.redhat.com/advisory/38252", + "io.openshift.upgrades.graph.release.manifestref": "sha256:713aae8687cf8a3cb5c2c504f65532dfe11e1b3534448ea9eeef5b0931d3e208", + "description": "beta 5", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.1.0-rc.7+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:7e1e73c66702daa39223b3e6dd2cf5e15c057ef30c988256f55fae27448c3b01", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:7e1e73c66702daa39223b3e6dd2cf5e15c057ef30c988256f55fae27448c3b01", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:0758-09" + } + }, + { + "version": "4.1.0-rc.6+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:1dabe42b5c94841fd8736d8f3a80afeaf5f5ad3833cef8d304c419a97b0efbc3", + "metadata": { + "url": "https://errata.devel.redhat.com/advisory/38252", + "description": "Beta 8", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:1dabe42b5c94841fd8736d8f3a80afeaf5f5ad3833cef8d304c419a97b0efbc3" + } + }, + { + "version": "4.1.0-rc.8+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:8250bbf79d4f567e24a7b85795aba97f9e75a9df18738891a0cb6ba42e422584", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:0758-09", + "io.openshift.upgrades.graph.release.manifestref": "sha256:8250bbf79d4f567e24a7b85795aba97f9e75a9df18738891a0cb6ba42e422584" + } + }, + { + "version": "4.1.0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:b8307ac0f3ec4ac86c3f3b52846425205022da52c16f56ec31cbe428501001d6", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:0758", + "io.openshift.upgrades.graph.release.manifestref": "sha256:b8307ac0f3ec4ac86c3f3b52846425205022da52c16f56ec31cbe428501001d6" + } + }, + { + "version": "4.1.0-rc.9+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:49c4b6bf70061e522e3525aed534d087c9abfba7c39cbcbdd1bd770ab096bf9e", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:49c4b6bf70061e522e3525aed534d087c9abfba7c39cbcbdd1bd770ab096bf9e", + "url": "https://access.redhat.com/errata/RHBA-2019:0758-09", + "description": "" + } + }, + { + "version": "4.2.0-0.nightly-2019-06-03-135056+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:8d51bc2da4b9873053b2b3f0737c912ba1e0623ff4b303f1a8ec3618ba3354ff", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:8d51bc2da4b9873053b2b3f0737c912ba1e0623ff4b303f1a8ec3618ba3354ff" + } + }, + { + "version": "4.1.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:e9415dbf80988553adc6c34740243805a21d92e3cdedeb2fd8d743ca56522a61", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:1381", + "io.openshift.upgrades.graph.release.manifestref": "sha256:e9415dbf80988553adc6c34740243805a21d92e3cdedeb2fd8d743ca56522a61", + "description": "" + } + }, + { + "version": "4.1.6+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:aa955a9ec40e55e5d9c0203a995b398e8c1031473dae24ed405efe9a95b43186", + "metadata": { + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:1766", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:aa955a9ec40e55e5d9c0203a995b398e8c1031473dae24ed405efe9a95b43186" + } + }, + { + "version": "4.1.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:9c5f0df8b192a0d7b46cd5f6a4da2289c155fd5302dec7954f8f06c878160b8b", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:1382", + "io.openshift.upgrades.graph.release.manifestref": "sha256:9c5f0df8b192a0d7b46cd5f6a4da2289c155fd5302dec7954f8f06c878160b8b", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "" + } + }, + { + "version": "4.1.3+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:f852f9d8c2e81a633e874e57a7d9bdd52588002a9b32fc037dba12b67cf1f8b0", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:1589", + "io.openshift.upgrades.graph.release.manifestref": "sha256:f852f9d8c2e81a633e874e57a7d9bdd52588002a9b32fc037dba12b67cf1f8b0", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "" + } + }, + { + "version": "4.1.4+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a6c177eb007d20bb00bfd8f829e99bd40137167480112bd5ae1c25e40a4a163a", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:1635", + "io.openshift.upgrades.graph.release.manifestref": "sha256:a6c177eb007d20bb00bfd8f829e99bd40137167480112bd5ae1c25e40a4a163a" + } + }, + { + "version": "4.1.7+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:c9ce7c3b1e77d6cc5ee366364e4e0c6c901556aa3f61f7bd394b5e3010a1f551", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:1809", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:c9ce7c3b1e77d6cc5ee366364e4e0c6c901556aa3f61f7bd394b5e3010a1f551" + } + }, + { + "version": "4.1.8+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:3ea2648231035c1a65e8d91fa818bb225a2815bc0d6abfc35063a11eaba8659f", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:3ea2648231035c1a65e8d91fa818bb225a2815bc0d6abfc35063a11eaba8659f", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:1866", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.1.10+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:b2f03ea1b04edd25bf677aa755450eb0bb55898695b3ec1aa805ae2a97df3b90", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:2417", + "io.openshift.upgrades.graph.release.manifestref": "sha256:b2f03ea1b04edd25bf677aa755450eb0bb55898695b3ec1aa805ae2a97df3b90", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "" + } + }, + { + "version": "4.1.9+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:27fd24c705d1107cc73cb7dda8257fe97900e130b68afc314d0ef0e31bcf9b8e", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:2010-02", + "io.openshift.upgrades.graph.release.manifestref": "sha256:27fd24c705d1107cc73cb7dda8257fe97900e130b68afc314d0ef0e31bcf9b8e" + } + }, + { + "version": "4.1.12+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:c28afba66cc09233f7dfa49177423e124d939cf5b0cd60d71bbb918edb0ed739", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:c28afba66cc09233f7dfa49177423e124d939cf5b0cd60d71bbb918edb0ed739", + "url": "https://access.redhat.com/errata/RHBA-2019:44849" + } + }, + { + "version": "4.1.11+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:bfca31dbb518b35f312cc67516fa18aa40df9925dc84fdbcd15f8bbca425d7ff", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:2417", + "io.openshift.upgrades.graph.release.manifestref": "sha256:bfca31dbb518b35f312cc67516fa18aa40df9925dc84fdbcd15f8bbca425d7ff", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "" + } + }, + { + "version": "4.1.13+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:212296a41e04176c308bfe169e7c6e05d77b76f403361664c3ce55cd30682a94", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:45273", + "io.openshift.upgrades.graph.release.manifestref": "sha256:212296a41e04176c308bfe169e7c6e05d77b76f403361664c3ce55cd30682a94", + "description": "" + } + }, + { + "version": "4.1.14+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:fd41c9bda9e0ff306954f1fd7af6428edff8c3989b75f9fe984968db66846231", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:fd41c9bda9e0ff306954f1fd7af6428edff8c3989b75f9fe984968db66846231", + "url": "https://access.redhat.com/errata/RHSA-2019:2594", + "description": "" + } + }, + { + "version": "4.1.15+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:0a7f743a98e4d0937f44561138a03db8c09cdc4817a771a67f154e032435bcef", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:0a7f743a98e4d0937f44561138a03db8c09cdc4817a771a67f154e032435bcef", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "url": " https://access.redhat.com/errata/RHBA-2019:2681" + } + }, + { + "version": "4.1.16+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:61ed953962d43cae388cb3c544b4cac358d4675076c2fc0befb236209d5116f7", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:2768", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:61ed953962d43cae388cb3c544b4cac358d4675076c2fc0befb236209d5116f7", + "description": "" + } + }, + { + "version": "4.1.17+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:747e0d41ee2f1af8b234e8c96c3291225a120fab3af53ae691afb4f51ce02b85", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:747e0d41ee2f1af8b234e8c96c3291225a120fab3af53ae691afb4f51ce02b85", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:2820" + } + }, + { + "version": "4.1.18+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:420633acf3fc7572372fe2df758152f6ab1f53a21c79a6c4b741fa0394c7df3a", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:420633acf3fc7572372fe2df758152f6ab1f53a21c79a6c4b741fa0394c7df3a", + "url": "https://access.redhat.com/errata/RHBA-2019:2856", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.2.0-rc.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:0a1dcbc81869f790fdd26d481706ee5d18ff4f5a13a833460d56fa0c396dc153", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:2922", + "io.openshift.upgrades.graph.release.manifestref": "sha256:0a1dcbc81869f790fdd26d481706ee5d18ff4f5a13a833460d56fa0c396dc153", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "" + } + }, + { + "version": "4.2.0-rc.0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:7e063c6b4a61377755284bf1a37bef8a25e5c1663a63fe2ba2e005f745f4e8c3", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:7e063c6b4a61377755284bf1a37bef8a25e5c1663a63fe2ba2e005f745f4e8c3", + "url": "https://access.redhat.com/errata/RHBA-2019:2922", + "description": "" + } + }, + { + "version": "4.2.0-rc.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:9a1a38ce4d5fa79c785801eca3679a759bede9f40081b9e1b9f0cca2baa673a2", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:9a1a38ce4d5fa79c785801eca3679a759bede9f40081b9e1b9f0cca2baa673a2", + "url": "https://access.redhat.com/errata/RHBA-2019:2922" + } + }, + { + "version": "4.1.19+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:56521ce8b07bddbb9e47452d6a2f3ebad0a3d3f120b9e70fdc589b5976f65fa5", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:56521ce8b07bddbb9e47452d6a2f3ebad0a3d3f120b9e70fdc589b5976f65fa5", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:3004" + } + }, + { + "version": "4.2.0-rc.3+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:ab2241a765cb7715b7f5b5853b7b0bf8124e71459c5a80b74faf43ff51dcec49", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:2922", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:ab2241a765cb7715b7f5b5853b7b0bf8124e71459c5a80b74faf43ff51dcec49" + } + }, + { + "version": "4.2.0-rc.4+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:2ed0897c27fe0f2e27591da81f1f73c8cfefec6dfd4d3e67a68481d0efe38148", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:2922", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:2ed0897c27fe0f2e27591da81f1f73c8cfefec6dfd4d3e67a68481d0efe38148", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.1.20+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a7e97365d16d8d920fedd3684b018b780337e069deb1dd8500e866c0d6110334", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:3004", + "io.openshift.upgrades.graph.release.manifestref": "sha256:a7e97365d16d8d920fedd3684b018b780337e069deb1dd8500e866c0d6110334", + "description": "" + } + }, + { + "version": "4.2.0-rc.5+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:1a2b56060f9d462ce879ce57d27f41941081ba063f4ac7f775505f0903d0713a", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:2922", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:1a2b56060f9d462ce879ce57d27f41941081ba063f4ac7f775505f0903d0713a" + } + }, + { + "version": "4.2.0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:c5337afd85b94c93ec513f21c8545e3f9e36a227f55d41bc1dfb8fcc3f2be129", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:c5337afd85b94c93ec513f21c8545e3f9e36a227f55d41bc1dfb8fcc3f2be129", + "url": "https://access.redhat.com/errata/RHBA-2019:2922" + } + }, + { + "version": "4.1.21+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a68066e534c41010b3750f18d620abede491965d5b0e860f5717b626cde08e5b", + "metadata": { + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:3152", + "io.openshift.upgrades.graph.release.manifestref": "sha256:a68066e534c41010b3750f18d620abede491965d5b0e860f5717b626cde08e5b", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.2.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:32f2e138c0c5af6183830a22801f627bedb414591332960b7c8506ba7f6d7bb6", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:3151", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:32f2e138c0c5af6183830a22801f627bedb414591332960b7c8506ba7f6d7bb6", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.2.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:dc782b44cac3d59101904cc5da2b9d8bdb90e55a07814df50ea7a13071b0f5f0", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:dc782b44cac3d59101904cc5da2b9d8bdb90e55a07814df50ea7a13071b0f5f0", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:3151" + } + }, + { + "version": "4.1.22+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:31d3c3f2f3d3f9b40d6fde943d71ef823af3b3ceb41ea4fbcd6f428082a28872", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:3294", + "io.openshift.upgrades.graph.release.manifestref": "sha256:31d3c3f2f3d3f9b40d6fde943d71ef823af3b3ceb41ea4fbcd6f428082a28872", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "" + } + }, + { + "version": "4.1.23+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:5dc1a2097ec0ecab4ef322c4e87bce93821c8ac9130a64ea3dc2f2bd8411a69c", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:5dc1a2097ec0ecab4ef322c4e87bce93821c8ac9130a64ea3dc2f2bd8411a69c", + "url": "https://access.redhat.com/errata/RHBA-2019:3766", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.2.4+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:cebce35c054f1fb066a4dc0a518064945087ac1f3637fe23d2ee2b0c433d6ba8", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:3303", + "io.openshift.upgrades.graph.release.manifestref": "sha256:cebce35c054f1fb066a4dc0a518064945087ac1f3637fe23d2ee2b0c433d6ba8" + } + }, + { + "version": "4.1.24+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:6f87fb66dfa907db03981e69474ea3069deab66358c18d965f6331bd727ff23f", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:3875", + "io.openshift.upgrades.graph.release.manifestref": "sha256:6f87fb66dfa907db03981e69474ea3069deab66358c18d965f6331bd727ff23f" + } + }, + { + "version": "4.2.5+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:37c3ebd6fcdd20820a575a3639891cf9feed65a7553129ac6f0d1ef57fc6ad1e", + "metadata": { + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:3869", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:37c3ebd6fcdd20820a575a3639891cf9feed65a7553129ac6f0d1ef57fc6ad1e" + } + }, + { + "version": "4.2.6+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a5d134c1a0709d5d9c7d6b476cbf613d6a8cd34c49591e0f9cd9b23cc14065a1", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:3869", + "io.openshift.upgrades.graph.release.manifestref": "sha256:a5d134c1a0709d5d9c7d6b476cbf613d6a8cd34c49591e0f9cd9b23cc14065a1" + } + }, + { + "version": "4.2.7+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:bac62983757570b9b8f8bc84c740782984a255c16372b3e30cfc8b52c0a187b9", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:bac62983757570b9b8f8bc84c740782984a255c16372b3e30cfc8b52c0a187b9", + "url": "https://access.redhat.com/errata/RHBA-2019:3869", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.2.8+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:4bf307b98beba4d42da3316464013eac120c6e5a398646863ef92b0e2c621230", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:3919", + "io.openshift.upgrades.graph.release.manifestref": "sha256:4bf307b98beba4d42da3316464013eac120c6e5a398646863ef92b0e2c621230", + "description": "" + } + }, + { + "version": "4.1.25+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:5f824fa3b3c44c6a78a5fc6a77a82edc47cf2b495bb6b2b31e3e0a4d3d77684b", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:5f824fa3b3c44c6a78a5fc6a77a82edc47cf2b495bb6b2b31e3e0a4d3d77684b", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:3913" + } + }, + { + "version": "4.1.27+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:10519d7ba7e028efec0b9a210e5c75d37f2f5fe74bced4e034bd89a323ea833f", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:4084", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:10519d7ba7e028efec0b9a210e5c75d37f2f5fe74bced4e034bd89a323ea833f", + "description": "" + } + }, + { + "version": "4.1.26+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:3bc5f8bb2df578ea17e3d5ff5b9ae899a40fe16402b393abec0357f31eb85e58", + "metadata": { + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:3956", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:3bc5f8bb2df578ea17e3d5ff5b9ae899a40fe16402b393abec0357f31eb85e58" + } + }, + { + "version": "4.2.9+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:f28cbabd1227352fe704a00df796a4511880174042dece96233036a10ac61639", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:f28cbabd1227352fe704a00df796a4511880174042dece96233036a10ac61639", + "url": "https://access.redhat.com/errata/RHBA-2019:3953", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.1.28+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:5eaaeb251579254e837f361bbda7f5c897e8cbf15ae52f1d78bfb1bcc18aec7b", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:5eaaeb251579254e837f361bbda7f5c897e8cbf15ae52f1d78bfb1bcc18aec7b", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:4186" + } + }, + { + "version": "4.2.10-s390x+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:28e9bbf8aa8c97e7bff1eeb2666ed6bde0edd8a72fc9b595fd1f5a367bf65a76", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:4093", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:28e9bbf8aa8c97e7bff1eeb2666ed6bde0edd8a72fc9b595fd1f5a367bf65a76", + "io.openshift.upgrades.graph.release.arch": "s390x" + } + }, + { + "version": "4.2.10+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:dc2e38fb00085d6b7f722475f8b7b758a0cb3a02ba42d9acf8a8298a6d510d9c", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:dc2e38fb00085d6b7f722475f8b7b758a0cb3a02ba42d9acf8a8298a6d510d9c", + "url": "https://access.redhat.com/errata/RHBA-2019:4093", + "description": "" + } + }, + { + "version": "4.2.11-s390x+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:96ba6acf8cbcb6863425ecdc006495ae43fbe2b7b55f6002f5a4c77ea6183373", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "s390x", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:4181", + "io.openshift.upgrades.graph.release.manifestref": "sha256:96ba6acf8cbcb6863425ecdc006495ae43fbe2b7b55f6002f5a4c77ea6183373" + } + }, + { + "version": "4.2.11+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:49ee20ee3102b15a7cf4c019fd8875134fda41ccda1dc27b6e4483ded2aa8a5c", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:4181", + "io.openshift.upgrades.graph.release.manifestref": "sha256:49ee20ee3102b15a7cf4c019fd8875134fda41ccda1dc27b6e4483ded2aa8a5c" + } + }, + { + "version": "4.1.29+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a30326a62fabe5478a11ed712f38bab4d1b56f688acbf65f21dfe2b8310f9220", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:a30326a62fabe5478a11ed712f38bab4d1b56f688acbf65f21dfe2b8310f9220", + "url": "https://access.redhat.com/errata/RHBA-2020:0010", + "description": "" + } + }, + { + "version": "4.2.12+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:77ade34c373062c6a6c869e0e56ef93b2faaa373adadaac1430b29484a24d843", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:77ade34c373062c6a6c869e0e56ef93b2faaa373adadaac1430b29484a24d843", + "url": "https://access.redhat.com/errata/RHBA-2019:4181", + "description": "" + } + }, + { + "version": "4.2.12-s390x+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:f1ef86861361140c69adca66278185c09eba12af80415208a2b0f9b014723f26", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "s390x", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:4181", + "io.openshift.upgrades.graph.release.manifestref": "sha256:f1ef86861361140c69adca66278185c09eba12af80415208a2b0f9b014723f26" + } + }, + { + "version": "4.2.13+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:782b41750f3284f3c8ee2c1f8cb896896da074e362cf8a472846356d1617752d", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0014", + "io.openshift.upgrades.graph.release.manifestref": "sha256:782b41750f3284f3c8ee2c1f8cb896896da074e362cf8a472846356d1617752d" + } + }, + { + "version": "4.3.0-rc.0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:bcf57853b93c72691f9c90813d17bc1d3b6d1efb75accc16e406be410689c885", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:bcf57853b93c72691f9c90813d17bc1d3b6d1efb75accc16e406be410689c885", + "url": "https://access.redhat.com/errata/RHBA-2020:0062", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.2.13-s390x+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:5bbfbaf203e981a5783f1e73bedd41d2a35d69e11cf7d0d2de0becdd51a1fb1d", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:5bbfbaf203e981a5783f1e73bedd41d2a35d69e11cf7d0d2de0becdd51a1fb1d", + "io.openshift.upgrades.graph.release.arch": "s390x", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0014" + } + }, + { + "version": "4.2.10+s390x" + }, + { + "version": "4.2.12+s390x" + }, + { + "version": "4.2.14+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:26ba0c17618872c68a2e9a5002c3f3e48f75ae844fcf66e83063bd72a104cfc7", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "s390x", + "io.openshift.upgrades.graph.release.manifestref": "sha256:26ba0c17618872c68a2e9a5002c3f3e48f75ae844fcf66e83063bd72a104cfc7", + "url": "https://access.redhat.com/errata/RHBA-2020:0066", + "description": "" + } + }, + { + "version": "4.2.14+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:3fabe939da31f9a31f509251b9f73d321e367aba2d09ff392c2f452f6433a95a", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:3fabe939da31f9a31f509251b9f73d321e367aba2d09ff392c2f452f6433a95a", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0066", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.1.30+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:c811f484faeefa469492b583033da759ca3323e9810471185a579baab187052c", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:c811f484faeefa469492b583033da759ca3323e9810471185a579baab187052c", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0071", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.1.31+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:09bfa02aca6fb3f34e28b955f75efbaf28d2e760f384b01f9ab4a0fc1154962a", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0115", + "io.openshift.upgrades.graph.release.manifestref": "sha256:09bfa02aca6fb3f34e28b955f75efbaf28d2e760f384b01f9ab4a0fc1154962a" + } + }, + { + "version": "4.2.15+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:18f3a392afa7adb531db116d599b777c07dc6592d58d1e81b7c389b6f04450c4", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:18f3a392afa7adb531db116d599b777c07dc6592d58d1e81b7c389b6f04450c4", + "url": "https://access.redhat.com/errata/RHBA-2020:0107", + "io.openshift.upgrades.graph.release.arch": "s390x", + "description": "" + } + }, + { + "version": "4.2.11+s390x" + }, + { + "version": "4.2.13+s390x" + }, + { + "version": "4.2.15+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:fa9a816c3e2825b483630b1454d55a33826cdc33abc854ad4865b9254639ebf9", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:fa9a816c3e2825b483630b1454d55a33826cdc33abc854ad4865b9254639ebf9", + "url": "https://access.redhat.com/errata/RHBA-2020:0107" + } + }, + { + "version": "4.3.0-rc.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:5498810afcab4ce08ca890679bceda3cd7dfe929c6164a788d170f6e034963f6", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:5498810afcab4ce08ca890679bceda3cd7dfe929c6164a788d170f6e034963f6", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2020:0062" + } + }, + { + "version": "4.3.0-rc.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:11281ce30dfa174086618f5034c131d15c14d7ccf5578c2ff3162724e5b3eadb", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:11281ce30dfa174086618f5034c131d15c14d7ccf5578c2ff3162724e5b3eadb", + "url": "https://access.redhat.com/errata/RHBA-2020:0062" + } + }, + { + "version": "4.2.16+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:04b79afdbb41579e0f969bf23cdb16483dbfadbc09a6a0fec60b94328d68135a", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.arch": "s390x", + "url": "https://access.redhat.com/errata/RHBA-2020:0107", + "io.openshift.upgrades.graph.release.manifestref": "sha256:04b79afdbb41579e0f969bf23cdb16483dbfadbc09a6a0fec60b94328d68135a" + } + }, + { + "version": "4.2.16+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:e5a6e348721c38a78d9299284fbb5c60fb340135a86b674b038500bf190ad514", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0107", + "io.openshift.upgrades.graph.release.manifestref": "sha256:e5a6e348721c38a78d9299284fbb5c60fb340135a86b674b038500bf190ad514" + } + }, + { + "version": "4.3.0-rc.3+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:7467ac3dd703da09a1d5f63e9c61c2c3e04ff25c96bf58c66a715aafaa73697a", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:7467ac3dd703da09a1d5f63e9c61c2c3e04ff25c96bf58c66a715aafaa73697a", + "url": "https://access.redhat.com/errata/RHBA-2020:0062" + } + }, + { + "version": "4.3.0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:3a516480dfd68e0f87f702b4d7bdd6f6a0acfdac5cd2e9767b838ceede34d70d", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2020:0062", + "io.openshift.upgrades.graph.release.manifestref": "sha256:3a516480dfd68e0f87f702b4d7bdd6f6a0acfdac5cd2e9767b838ceede34d70d" + } + }, + { + "version": "4.1.34+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:d98c0df40e603b4a8ab344e2b4f44e53a67b036803f45be9a99bc0153ebb3f2e", + "metadata": { + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0399", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:d98c0df40e603b4a8ab344e2b4f44e53a67b036803f45be9a99bc0153ebb3f2e" + } + }, + { + "version": "4.3.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:ea7ac3ad42169b39fce07e5e53403a028644810bee9a212e7456074894df40f3", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:ea7ac3ad42169b39fce07e5e53403a028644810bee9a212e7456074894df40f3", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2020:0391", + "description": "" + } + }, + { + "version": "4.2.18+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:283a1625e18e0b6d7f354b1b022a0aeaab5598f2144ec484faf89e1ecb5c7498", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:283a1625e18e0b6d7f354b1b022a0aeaab5598f2144ec484faf89e1ecb5c7498", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0395", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.2.19+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:b51a0c316bb0c11686e6b038ec7c9f7ff96763f47a53c3443ac82e8c054bc035", + "metadata": { + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0460", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:b51a0c316bb0c11686e6b038ec7c9f7ff96763f47a53c3443ac82e8c054bc035" + } + }, + { + "version": "4.2.18+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:260ada42ef59e8af11a885897f39f293e7e8b95c40d6a393196b7f0e2b826f0b", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:260ada42ef59e8af11a885897f39f293e7e8b95c40d6a393196b7f0e2b826f0b", + "url": "https://access.redhat.com/errata/RHBA-2020:0395", + "io.openshift.upgrades.graph.release.arch": "s390x", + "description": "" + } + }, + { + "version": "4.1.34+s390x" + }, + { + "version": "4.2.7+s390x" + }, + { + "version": "4.2.8+s390x" + }, + { + "version": "4.2.9+s390x" + }, + { + "version": "4.3.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:cadf53e7181639f6cc77d2430339102db2908de330210c1ff8c7a7dc1cb0e550", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:cadf53e7181639f6cc77d2430339102db2908de330210c1ff8c7a7dc1cb0e550", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0492" + } + }, + { + "version": "4.2.20+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:bd8aa8e0ce08002d4f8e73d6a2f9de5ae535a6a961ff6b8fdf2c52e4a14cc787", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2020:0523", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:bd8aa8e0ce08002d4f8e73d6a2f9de5ae535a6a961ff6b8fdf2c52e4a14cc787", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.2.19+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:0b33c4263909b9e8960d3f3551466ab158d28dfd15fac661f0a717a70b804775", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "s390x", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:0b33c4263909b9e8960d3f3551466ab158d28dfd15fac661f0a717a70b804775", + "url": "https://access.redhat.com/errata/RHBA-2020:0460" + } + }, + { + "version": "4.3.3+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:9b8708b67dd9b7720cb7ab3ed6d12c394f689cc8927df0e727c76809ab383f44", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0528", + "io.openshift.upgrades.graph.release.manifestref": "sha256:9b8708b67dd9b7720cb7ab3ed6d12c394f689cc8927df0e727c76809ab383f44" + } + }, + { + "version": "4.2.20+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:4183c6acd0cc53f1ad4282cc04b4fda57ee2b504635016b3acb1464ea9775ccd", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "s390x", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0523", + "io.openshift.upgrades.graph.release.manifestref": "sha256:4183c6acd0cc53f1ad4282cc04b4fda57ee2b504635016b3acb1464ea9775ccd" + } + } + ], + "edges": [ + [ + 2, + 1 + ], + [ + 1, + 3 + ], + [ + 3, + 4 + ], + [ + 4, + 5 + ], + [ + 6, + 7 + ], + [ + 9, + 8 + ], + [ + 10, + 9 + ], + [ + 11, + 10 + ], + [ + 7, + 11 + ], + [ + 13, + 12 + ], + [ + 5, + 13 + ], + [ + 17, + 16 + ], + [ + 15, + 16 + ], + [ + 15, + 17 + ], + [ + 24, + 26 + ], + [ + 27, + 31 + ], + [ + 32, + 31 + ], + [ + 33, + 31 + ], + [ + 34, + 31 + ], + [ + 27, + 32 + ], + [ + 30, + 32 + ], + [ + 27, + 35 + ], + [ + 30, + 35 + ], + [ + 32, + 35 + ], + [ + 33, + 35 + ], + [ + 34, + 35 + ], + [ + 31, + 35 + ], + [ + 27, + 33 + ], + [ + 32, + 33 + ], + [ + 27, + 34 + ], + [ + 30, + 34 + ], + [ + 32, + 34 + ], + [ + 33, + 34 + ], + [ + 27, + 36 + ], + [ + 30, + 36 + ], + [ + 32, + 36 + ], + [ + 33, + 36 + ], + [ + 34, + 36 + ], + [ + 31, + 36 + ], + [ + 35, + 36 + ], + [ + 27, + 37 + ], + [ + 32, + 37 + ], + [ + 33, + 37 + ], + [ + 34, + 37 + ], + [ + 31, + 37 + ], + [ + 35, + 37 + ], + [ + 36, + 37 + ], + [ + 38, + 37 + ], + [ + 27, + 39 + ], + [ + 40, + 39 + ], + [ + 32, + 39 + ], + [ + 33, + 39 + ], + [ + 34, + 39 + ], + [ + 31, + 39 + ], + [ + 35, + 39 + ], + [ + 36, + 39 + ], + [ + 38, + 39 + ], + [ + 27, + 38 + ], + [ + 30, + 38 + ], + [ + 32, + 38 + ], + [ + 33, + 38 + ], + [ + 34, + 38 + ], + [ + 31, + 38 + ], + [ + 35, + 38 + ], + [ + 36, + 38 + ], + [ + 27, + 40 + ], + [ + 30, + 40 + ], + [ + 37, + 40 + ], + [ + 32, + 40 + ], + [ + 33, + 40 + ], + [ + 34, + 40 + ], + [ + 31, + 40 + ], + [ + 35, + 40 + ], + [ + 36, + 40 + ], + [ + 38, + 40 + ], + [ + 27, + 41 + ], + [ + 40, + 41 + ], + [ + 32, + 41 + ], + [ + 33, + 41 + ], + [ + 34, + 41 + ], + [ + 31, + 41 + ], + [ + 35, + 41 + ], + [ + 36, + 41 + ], + [ + 38, + 41 + ], + [ + 27, + 42 + ], + [ + 40, + 42 + ], + [ + 41, + 42 + ], + [ + 32, + 42 + ], + [ + 33, + 42 + ], + [ + 34, + 42 + ], + [ + 31, + 42 + ], + [ + 35, + 42 + ], + [ + 36, + 42 + ], + [ + 38, + 42 + ], + [ + 40, + 43 + ], + [ + 41, + 43 + ], + [ + 42, + 43 + ], + [ + 32, + 43 + ], + [ + 33, + 43 + ], + [ + 34, + 43 + ], + [ + 31, + 43 + ], + [ + 35, + 43 + ], + [ + 36, + 43 + ], + [ + 38, + 43 + ], + [ + 40, + 44 + ], + [ + 41, + 44 + ], + [ + 42, + 44 + ], + [ + 43, + 44 + ], + [ + 33, + 44 + ], + [ + 34, + 44 + ], + [ + 31, + 44 + ], + [ + 35, + 44 + ], + [ + 36, + 44 + ], + [ + 38, + 44 + ], + [ + 40, + 45 + ], + [ + 41, + 45 + ], + [ + 42, + 45 + ], + [ + 43, + 45 + ], + [ + 44, + 45 + ], + [ + 33, + 45 + ], + [ + 34, + 45 + ], + [ + 31, + 45 + ], + [ + 35, + 45 + ], + [ + 36, + 45 + ], + [ + 38, + 45 + ], + [ + 40, + 46 + ], + [ + 41, + 46 + ], + [ + 42, + 46 + ], + [ + 43, + 46 + ], + [ + 44, + 46 + ], + [ + 45, + 46 + ], + [ + 33, + 46 + ], + [ + 34, + 46 + ], + [ + 31, + 46 + ], + [ + 35, + 46 + ], + [ + 36, + 46 + ], + [ + 38, + 46 + ], + [ + 46, + 47 + ], + [ + 48, + 47 + ], + [ + 46, + 49 + ], + [ + 48, + 49 + ], + [ + 47, + 49 + ], + [ + 40, + 50 + ], + [ + 41, + 50 + ], + [ + 42, + 50 + ], + [ + 43, + 50 + ], + [ + 44, + 50 + ], + [ + 45, + 50 + ], + [ + 46, + 50 + ], + [ + 33, + 50 + ], + [ + 34, + 50 + ], + [ + 31, + 50 + ], + [ + 35, + 50 + ], + [ + 36, + 50 + ], + [ + 38, + 50 + ], + [ + 46, + 51 + ], + [ + 48, + 51 + ], + [ + 47, + 51 + ], + [ + 49, + 51 + ], + [ + 46, + 52 + ], + [ + 40, + 53 + ], + [ + 41, + 53 + ], + [ + 42, + 53 + ], + [ + 43, + 53 + ], + [ + 44, + 53 + ], + [ + 45, + 53 + ], + [ + 46, + 53 + ], + [ + 35, + 53 + ], + [ + 36, + 53 + ], + [ + 38, + 53 + ], + [ + 46, + 54 + ], + [ + 53, + 54 + ], + [ + 53, + 55 + ], + [ + 52, + 55 + ], + [ + 54, + 55 + ], + [ + 40, + 56 + ], + [ + 41, + 56 + ], + [ + 42, + 56 + ], + [ + 43, + 56 + ], + [ + 44, + 56 + ], + [ + 45, + 56 + ], + [ + 46, + 56 + ], + [ + 53, + 56 + ], + [ + 36, + 56 + ], + [ + 38, + 56 + ], + [ + 53, + 57 + ], + [ + 56, + 57 + ], + [ + 52, + 57 + ], + [ + 54, + 57 + ], + [ + 56, + 58 + ], + [ + 55, + 58 + ], + [ + 57, + 58 + ], + [ + 40, + 59 + ], + [ + 41, + 59 + ], + [ + 42, + 59 + ], + [ + 43, + 59 + ], + [ + 44, + 59 + ], + [ + 45, + 59 + ], + [ + 46, + 59 + ], + [ + 50, + 59 + ], + [ + 53, + 59 + ], + [ + 56, + 59 + ], + [ + 40, + 60 + ], + [ + 41, + 60 + ], + [ + 42, + 60 + ], + [ + 43, + 60 + ], + [ + 44, + 60 + ], + [ + 46, + 60 + ], + [ + 50, + 60 + ], + [ + 53, + 60 + ], + [ + 56, + 60 + ], + [ + 59, + 60 + ], + [ + 59, + 61 + ], + [ + 60, + 61 + ], + [ + 58, + 61 + ], + [ + 41, + 62 + ], + [ + 42, + 62 + ], + [ + 43, + 62 + ], + [ + 44, + 62 + ], + [ + 46, + 62 + ], + [ + 50, + 62 + ], + [ + 53, + 62 + ], + [ + 56, + 62 + ], + [ + 59, + 62 + ], + [ + 60, + 62 + ], + [ + 60, + 63 + ], + [ + 61, + 63 + ], + [ + 62, + 64 + ], + [ + 55, + 64 + ], + [ + 57, + 64 + ], + [ + 58, + 64 + ], + [ + 61, + 64 + ], + [ + 62, + 65 + ], + [ + 55, + 65 + ], + [ + 57, + 65 + ], + [ + 58, + 65 + ], + [ + 61, + 65 + ], + [ + 62, + 66 + ], + [ + 55, + 66 + ], + [ + 58, + 66 + ], + [ + 61, + 66 + ], + [ + 65, + 66 + ], + [ + 42, + 67 + ], + [ + 43, + 67 + ], + [ + 44, + 67 + ], + [ + 46, + 67 + ], + [ + 50, + 67 + ], + [ + 53, + 67 + ], + [ + 56, + 67 + ], + [ + 59, + 67 + ], + [ + 60, + 67 + ], + [ + 62, + 67 + ], + [ + 44, + 68 + ], + [ + 46, + 68 + ], + [ + 50, + 68 + ], + [ + 53, + 68 + ], + [ + 56, + 68 + ], + [ + 59, + 68 + ], + [ + 60, + 68 + ], + [ + 62, + 68 + ], + [ + 67, + 68 + ], + [ + 69, + 68 + ], + [ + 43, + 69 + ], + [ + 44, + 69 + ], + [ + 46, + 69 + ], + [ + 50, + 69 + ], + [ + 53, + 69 + ], + [ + 56, + 69 + ], + [ + 59, + 69 + ], + [ + 60, + 69 + ], + [ + 62, + 69 + ], + [ + 67, + 69 + ], + [ + 69, + 70 + ], + [ + 55, + 70 + ], + [ + 58, + 70 + ], + [ + 61, + 70 + ], + [ + 65, + 70 + ], + [ + 66, + 70 + ], + [ + 46, + 71 + ], + [ + 50, + 71 + ], + [ + 53, + 71 + ], + [ + 56, + 71 + ], + [ + 59, + 71 + ], + [ + 60, + 71 + ], + [ + 62, + 71 + ], + [ + 67, + 71 + ], + [ + 69, + 71 + ], + [ + 68, + 71 + ], + [ + 68, + 73 + ], + [ + 55, + 73 + ], + [ + 58, + 73 + ], + [ + 61, + 73 + ], + [ + 65, + 73 + ], + [ + 66, + 73 + ], + [ + 70, + 73 + ], + [ + 72, + 74 + ], + [ + 71, + 75 + ], + [ + 55, + 75 + ], + [ + 73, + 75 + ], + [ + 58, + 75 + ], + [ + 61, + 75 + ], + [ + 65, + 75 + ], + [ + 66, + 75 + ], + [ + 70, + 75 + ], + [ + 50, + 76 + ], + [ + 53, + 76 + ], + [ + 56, + 76 + ], + [ + 59, + 76 + ], + [ + 60, + 76 + ], + [ + 62, + 76 + ], + [ + 67, + 76 + ], + [ + 69, + 76 + ], + [ + 68, + 76 + ], + [ + 71, + 76 + ], + [ + 71, + 77 + ], + [ + 55, + 77 + ], + [ + 73, + 77 + ], + [ + 58, + 77 + ], + [ + 61, + 77 + ], + [ + 65, + 77 + ], + [ + 66, + 77 + ], + [ + 70, + 77 + ], + [ + 72, + 78 + ], + [ + 76, + 79 + ], + [ + 55, + 79 + ], + [ + 73, + 79 + ], + [ + 77, + 79 + ], + [ + 58, + 79 + ], + [ + 61, + 79 + ], + [ + 65, + 79 + ], + [ + 66, + 79 + ], + [ + 70, + 79 + ], + [ + 79, + 80 + ], + [ + 82, + 81 + ], + [ + 83, + 81 + ], + [ + 72, + 84 + ], + [ + 74, + 84 + ], + [ + 78, + 84 + ], + [ + 81, + 84 + ], + [ + 86, + 85 + ], + [ + 73, + 85 + ], + [ + 75, + 85 + ], + [ + 77, + 85 + ], + [ + 79, + 85 + ], + [ + 58, + 85 + ], + [ + 61, + 85 + ], + [ + 63, + 85 + ], + [ + 65, + 85 + ], + [ + 66, + 85 + ], + [ + 70, + 85 + ], + [ + 56, + 87 + ], + [ + 60, + 87 + ], + [ + 62, + 87 + ], + [ + 67, + 87 + ], + [ + 69, + 87 + ], + [ + 68, + 87 + ], + [ + 71, + 87 + ], + [ + 76, + 87 + ], + [ + 86, + 87 + ], + [ + 82, + 88 + ], + [ + 89, + 88 + ], + [ + 83, + 88 + ], + [ + 90, + 88 + ], + [ + 84, + 88 + ], + [ + 87, + 91 + ], + [ + 73, + 91 + ], + [ + 75, + 91 + ], + [ + 77, + 91 + ], + [ + 79, + 91 + ], + [ + 85, + 91 + ], + [ + 61, + 91 + ], + [ + 63, + 91 + ], + [ + 65, + 91 + ], + [ + 66, + 91 + ], + [ + 70, + 91 + ], + [ + 85, + 92 + ], + [ + 91, + 93 + ], + [ + 82, + 94 + ], + [ + 89, + 94 + ], + [ + 83, + 94 + ], + [ + 90, + 94 + ], + [ + 84, + 94 + ], + [ + 88, + 94 + ], + [ + 87, + 95 + ], + [ + 73, + 95 + ], + [ + 75, + 95 + ], + [ + 77, + 95 + ], + [ + 79, + 95 + ], + [ + 85, + 95 + ], + [ + 91, + 95 + ], + [ + 61, + 95 + ], + [ + 63, + 95 + ], + [ + 65, + 95 + ], + [ + 66, + 95 + ], + [ + 70, + 95 + ], + [ + 95, + 96 + ], + [ + 80, + 96 + ], + [ + 92, + 96 + ], + [ + 93, + 96 + ], + [ + 95, + 97 + ], + [ + 80, + 97 + ], + [ + 92, + 97 + ], + [ + 93, + 97 + ], + [ + 96, + 97 + ], + [ + 56, + 86 + ], + [ + 60, + 86 + ], + [ + 62, + 86 + ], + [ + 67, + 86 + ], + [ + 69, + 86 + ], + [ + 68, + 86 + ], + [ + 71, + 86 + ], + [ + 76, + 86 + ], + [ + 59, + 98 + ], + [ + 60, + 98 + ], + [ + 62, + 98 + ], + [ + 67, + 98 + ], + [ + 69, + 98 + ], + [ + 68, + 98 + ], + [ + 71, + 98 + ], + [ + 76, + 98 + ], + [ + 86, + 98 + ], + [ + 87, + 98 + ], + [ + 100, + 99 + ], + [ + 97, + 99 + ], + [ + 80, + 99 + ], + [ + 96, + 99 + ], + [ + 98, + 101 + ], + [ + 73, + 101 + ], + [ + 77, + 101 + ], + [ + 79, + 101 + ], + [ + 85, + 101 + ], + [ + 91, + 101 + ], + [ + 95, + 101 + ], + [ + 100, + 101 + ], + [ + 98, + 100 + ], + [ + 73, + 100 + ], + [ + 77, + 100 + ], + [ + 79, + 100 + ], + [ + 85, + 100 + ], + [ + 91, + 100 + ], + [ + 95, + 100 + ], + [ + 65, + 100 + ], + [ + 66, + 100 + ], + [ + 70, + 100 + ], + [ + 103, + 102 + ], + [ + 82, + 102 + ], + [ + 83, + 102 + ], + [ + 90, + 102 + ], + [ + 84, + 102 + ], + [ + 88, + 102 + ], + [ + 94, + 102 + ], + [ + 104, + 102 + ], + [ + 105, + 102 + ], + [ + 106, + 102 + ], + [ + 101, + 107 + ], + [ + 97, + 107 + ], + [ + 99, + 107 + ], + [ + 98, + 108 + ], + [ + 73, + 108 + ], + [ + 77, + 108 + ], + [ + 79, + 108 + ], + [ + 85, + 108 + ], + [ + 91, + 108 + ], + [ + 95, + 108 + ], + [ + 100, + 108 + ], + [ + 101, + 108 + ], + [ + 70, + 108 + ], + [ + 72, + 109 + ], + [ + 74, + 109 + ], + [ + 78, + 109 + ], + [ + 81, + 109 + ], + [ + 84, + 109 + ], + [ + 88, + 109 + ], + [ + 94, + 109 + ], + [ + 102, + 109 + ], + [ + 108, + 110 + ], + [ + 97, + 110 + ], + [ + 99, + 110 + ], + [ + 107, + 110 + ], + [ + 103, + 111 + ], + [ + 72, + 111 + ], + [ + 74, + 111 + ], + [ + 78, + 111 + ], + [ + 81, + 111 + ], + [ + 84, + 111 + ], + [ + 88, + 111 + ], + [ + 94, + 111 + ], + [ + 102, + 111 + ], + [ + 109, + 111 + ] + ] +} diff --git a/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/graph-gb-with-quay-metadata.json b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/graph-gb-with-quay-metadata.json new file mode 100644 index 000000000..23b7eb58a --- /dev/null +++ b/graph-builder/src/plugins/openshift_secondary_metadata_parser/test_fixtures/20200220.104838/graph-gb-with-quay-metadata.json @@ -0,0 +1,3079 @@ +{ + "nodes": [ + { + "version": "4.0.0-6+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:1def881ba4273f180941d3345f09dbd2f7fd87ac2409c77a3c257c31a6aa776d", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:1def881ba4273f180941d3345f09dbd2f7fd87ac2409c77a3c257c31a6aa776d", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-5+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:ed45d79377a8f36aa5db7be63c1278ae864031ec3d50b80fdd9902c6be4517ba", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:ed45d79377a8f36aa5db7be63c1278ae864031ec3d50b80fdd9902c6be4517ba" + } + }, + { + "version": "4.0.0-4+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:4f02d5c7183360a519a7c7dbe601f58123c9867cd5721ae503072ae62920575b", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:4f02d5c7183360a519a7c7dbe601f58123c9867cd5721ae503072ae62920575b" + } + }, + { + "version": "4.0.0-0.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:8580a118ce951dd241e4a4b73a0e5f4cda3b56088b6c1ab56ccadbf8e270fb1d", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:8580a118ce951dd241e4a4b73a0e5f4cda3b56088b6c1ab56ccadbf8e270fb1d", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-0.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:66cee7428ba0d3cb983bd2a437e576b2289e7fd5abafa70256200a5408b26644", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:66cee7428ba0d3cb983bd2a437e576b2289e7fd5abafa70256200a5408b26644", + "description": "This is the beta1 image based on the 4.0.0-0.nightly-2019-01-15-010905 build", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-0.okd-0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a974d62e29b5a91501b8703ad2e1ac68b503fcb92a2f3abed38681bc7fe354d5", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:a974d62e29b5a91501b8703ad2e1ac68b503fcb92a2f3abed38681bc7fe354d5" + } + }, + { + "version": "4.0.0-0.3+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:5b7d1c80f75a7703b5622de7273d63b4939dbfae1986b87b3fee436a1dacab44", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:5b7d1c80f75a7703b5622de7273d63b4939dbfae1986b87b3fee436a1dacab44" + } + }, + { + "version": "4.0.0-0.4+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:9f5f1d4514124f7406129629d8afd587f6beddd8b384b9ed09c5b4532f9f5631", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:9f5f1d4514124f7406129629d8afd587f6beddd8b384b9ed09c5b4532f9f5631" + } + }, + { + "version": "4.0.0-8+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:2390e665f4b3a2a12c2e676e7a75af6ff74f66e57242ab2f2e58b9d8e6837777", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:2390e665f4b3a2a12c2e676e7a75af6ff74f66e57242ab2f2e58b9d8e6837777" + } + }, + { + "version": "4.0.0-7+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:3e70b2d2004c9335dabc24d6259c5b03739fd86eae435c191ee2b8592e86efec", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:3e70b2d2004c9335dabc24d6259c5b03739fd86eae435c191ee2b8592e86efec" + } + }, + { + "version": "4.0.0-0.5+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:6bfad9b32e8f4f94ba08424db4242da03b4dd14c7a65e216d69f5f13508882cd", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:6bfad9b32e8f4f94ba08424db4242da03b4dd14c7a65e216d69f5f13508882cd", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-9+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:e237499d3b118e25890550daad8b17274af93baf855914a9c6f8f07ebc095dea", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:e237499d3b118e25890550daad8b17274af93baf855914a9c6f8f07ebc095dea", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-0.6+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a063664ec3a376b62ed796dec8662b18269528c4821d4cea4bec18d1171691f9", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:a063664ec3a376b62ed796dec8662b18269528c4821d4cea4bec18d1171691f9" + } + }, + { + "version": "4.0.0-0.7+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:641c0e4f550af59ec20349187a31751ae5108270f13332d1771935520ebf34c1", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:641c0e4f550af59ec20349187a31751ae5108270f13332d1771935520ebf34c1", + "description": "Beta 2", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.0.0-0.9+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:29a057c89cc5cf9c7853c52b815ba95bd66d1a66cb274d1991ca4951f5920cb2", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "stable-4.0", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "Beta 3", + "io.openshift.upgrades.graph.release.manifestref": "sha256:29a057c89cc5cf9c7853c52b815ba95bd66d1a66cb274d1991ca4951f5920cb2" + } + }, + { + "version": "4.0.0-0.8+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:358585fa0d2e709ce3964a245474b49b4360d8946455ab5b0467a11b135a21df", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:358585fa0d2e709ce3964a245474b49b4360d8946455ab5b0467a11b135a21df" + } + }, + { + "version": "4.0.0-0.10+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:df05555541a7c40cae2f0603c33329e897ed4b71a07cba947f7dcea1a2291fbc", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "Beta 3 patch 1", + "io.openshift.upgrades.graph.release.channels": "stable-4.0", + "io.openshift.upgrades.graph.release.manifestref": "sha256:df05555541a7c40cae2f0603c33329e897ed4b71a07cba947f7dcea1a2291fbc" + } + }, + { + "version": "4.0.0-0.11+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:48a384355e6e6f6c6edda037125b332831c17e79f8e23400ad8feee7b3c9e0d0", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "stable-4.0", + "io.openshift.upgrades.graph.release.manifestref": "sha256:48a384355e6e6f6c6edda037125b332831c17e79f8e23400ad8feee7b3c9e0d0", + "description": "Beta 3 patch 2" + } + }, + { + "version": "4.1.0-rc.0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:345ec9351ecc1d78c16cf0853fe0ef2d9f48dd493da5fdffc18fa18f45707867", + "metadata": { + "description": "Beta 4", + "io.openshift.upgrades.graph.release.manifestref": "sha256:345ec9351ecc1d78c16cf0853fe0ef2d9f48dd493da5fdffc18fa18f45707867", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1" + } + }, + { + "version": "4.1.0-rc.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:689102dee32defd00a0803ccb206c604515f8f0198713e9c206d91fe295b4b63", + "metadata": { + "url": "https://errata.devel.redhat.com/advisory/38252", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:689102dee32defd00a0803ccb206c604515f8f0198713e9c206d91fe295b4b63", + "description": "beta 5" + } + }, + { + "version": "4.1.0-rc.4+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:6f4cf2db7e63c4dba54496a72b83fec22c49293b520ff0cdb78f1e38b23f1ccb", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:6f4cf2db7e63c4dba54496a72b83fec22c49293b520ff0cdb78f1e38b23f1ccb", + "url": "https://errata.devel.redhat.com/advisory/38252", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1", + "description": "Beta 6", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.1.0-rc.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:be61a9ec132118e41a417b347242361d9cc96b1a73753e121dc7a74a1905baea", + "metadata": { + "url": "https://errata.devel.redhat.com/advisory/38252", + "io.openshift.upgrades.graph.release.manifestref": "sha256:be61a9ec132118e41a417b347242361d9cc96b1a73753e121dc7a74a1905baea", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "beta 5" + } + }, + { + "version": "4.1.0-rc.3+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:713aae8687cf8a3cb5c2c504f65532dfe11e1b3534448ea9eeef5b0931d3e208", + "metadata": { + "description": "beta 5", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1", + "io.openshift.upgrades.graph.release.manifestref": "sha256:713aae8687cf8a3cb5c2c504f65532dfe11e1b3534448ea9eeef5b0931d3e208", + "url": "https://errata.devel.redhat.com/advisory/38252" + } + }, + { + "version": "4.1.0-rc.5+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:dc67ad5edd91ca48402309fe0629593e5ae3333435ef8d0bc52c2b62ca725021", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://errata.devel.redhat.com/advisory/38252", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1", + "io.openshift.upgrades.graph.release.manifestref": "sha256:dc67ad5edd91ca48402309fe0629593e5ae3333435ef8d0bc52c2b62ca725021", + "description": "Beta 7" + } + }, + { + "version": "4.1.0-rc.7+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:7e1e73c66702daa39223b3e6dd2cf5e15c057ef30c988256f55fae27448c3b01", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:7e1e73c66702daa39223b3e6dd2cf5e15c057ef30c988256f55fae27448c3b01", + "url": "https://access.redhat.com/errata/RHBA-2019:0758-09", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.previous.add": "4.1.0-rc.6" + } + }, + { + "version": "4.1.0-rc.6+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:1dabe42b5c94841fd8736d8f3a80afeaf5f5ad3833cef8d304c419a97b0efbc3", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://errata.devel.redhat.com/advisory/38252", + "io.openshift.upgrades.graph.release.manifestref": "sha256:1dabe42b5c94841fd8736d8f3a80afeaf5f5ad3833cef8d304c419a97b0efbc3", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1", + "io.openshift.upgrades.graph.previous.add": "4.1.0-rc.5", + "description": "Beta 8" + } + }, + { + "version": "4.1.0-rc.8+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:8250bbf79d4f567e24a7b85795aba97f9e75a9df18738891a0cb6ba42e422584", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:8250bbf79d4f567e24a7b85795aba97f9e75a9df18738891a0cb6ba42e422584", + "url": "https://access.redhat.com/errata/RHBA-2019:0758-09", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1" + } + }, + { + "version": "4.1.0-rc.9+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:49c4b6bf70061e522e3525aed534d087c9abfba7c39cbcbdd1bd770ab096bf9e", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1", + "io.openshift.upgrades.graph.previous.add": "4.1.0-rc.7,4.1.0-rc.8", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:49c4b6bf70061e522e3525aed534d087c9abfba7c39cbcbdd1bd770ab096bf9e", + "url": "https://access.redhat.com/errata/RHBA-2019:0758-09" + } + }, + { + "version": "4.1.0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:b8307ac0f3ec4ac86c3f3b52846425205022da52c16f56ec31cbe428501001d6", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1", + "io.openshift.upgrades.graph.release.manifestref": "sha256:b8307ac0f3ec4ac86c3f3b52846425205022da52c16f56ec31cbe428501001d6", + "io.openshift.upgrades.graph.previous.add": "4.1.0-rc.4,4.1.0-rc.9", + "url": "https://access.redhat.com/errata/RHBA-2019:0758" + } + }, + { + "version": "4.2.0-0.nightly-2019-06-03-135056+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:8d51bc2da4b9873053b2b3f0737c912ba1e0623ff4b303f1a8ec3618ba3354ff", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:8d51bc2da4b9873053b2b3f0737c912ba1e0623ff4b303f1a8ec3618ba3354ff", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.1.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:e9415dbf80988553adc6c34740243805a21d92e3cdedeb2fd8d743ca56522a61", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:e9415dbf80988553adc6c34740243805a21d92e3cdedeb2fd8d743ca56522a61", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "io.openshift.upgrades.graph.previous.remove": "*", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1", + "url": "https://access.redhat.com/errata/RHBA-2019:1381" + } + }, + { + "version": "4.1.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:9c5f0df8b192a0d7b46cd5f6a4da2289c155fd5302dec7954f8f06c878160b8b", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:9c5f0df8b192a0d7b46cd5f6a4da2289c155fd5302dec7954f8f06c878160b8b", + "url": "https://access.redhat.com/errata/RHBA-2019:1382", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1" + } + }, + { + "version": "4.1.3+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:f852f9d8c2e81a633e874e57a7d9bdd52588002a9b32fc037dba12b67cf1f8b0", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:1589", + "io.openshift.upgrades.graph.release.manifestref": "sha256:f852f9d8c2e81a633e874e57a7d9bdd52588002a9b32fc037dba12b67cf1f8b0", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1" + } + }, + { + "version": "4.1.6+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:aa955a9ec40e55e5d9c0203a995b398e8c1031473dae24ed405efe9a95b43186", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:1766", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1", + "io.openshift.upgrades.graph.release.manifestref": "sha256:aa955a9ec40e55e5d9c0203a995b398e8c1031473dae24ed405efe9a95b43186" + } + }, + { + "version": "4.1.4+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a6c177eb007d20bb00bfd8f829e99bd40137167480112bd5ae1c25e40a4a163a", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1", + "url": "https://access.redhat.com/errata/RHBA-2019:1635", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:a6c177eb007d20bb00bfd8f829e99bd40137167480112bd5ae1c25e40a4a163a", + "description": "" + } + }, + { + "version": "4.1.7+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:c9ce7c3b1e77d6cc5ee366364e4e0c6c901556aa3f61f7bd394b5e3010a1f551", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:c9ce7c3b1e77d6cc5ee366364e4e0c6c901556aa3f61f7bd394b5e3010a1f551", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:1809" + } + }, + { + "version": "4.1.8+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:3ea2648231035c1a65e8d91fa818bb225a2815bc0d6abfc35063a11eaba8659f", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1", + "url": "https://access.redhat.com/errata/RHBA-2019:1866", + "io.openshift.upgrades.graph.release.manifestref": "sha256:3ea2648231035c1a65e8d91fa818bb225a2815bc0d6abfc35063a11eaba8659f", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "" + } + }, + { + "version": "4.1.10+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:b2f03ea1b04edd25bf677aa755450eb0bb55898695b3ec1aa805ae2a97df3b90", + "metadata": { + "io.openshift.upgrades.graph.previous.remove": "*", + "url": "https://access.redhat.com/errata/RHBA-2019:2417", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:b2f03ea1b04edd25bf677aa755450eb0bb55898695b3ec1aa805ae2a97df3b90", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1" + } + }, + { + "version": "4.1.9+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:27fd24c705d1107cc73cb7dda8257fe97900e130b68afc314d0ef0e31bcf9b8e", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:27fd24c705d1107cc73cb7dda8257fe97900e130b68afc314d0ef0e31bcf9b8e", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:2010-02", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1" + } + }, + { + "version": "4.1.11+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:bfca31dbb518b35f312cc67516fa18aa40df9925dc84fdbcd15f8bbca425d7ff", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:2417", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:bfca31dbb518b35f312cc67516fa18aa40df9925dc84fdbcd15f8bbca425d7ff", + "description": "" + } + }, + { + "version": "4.1.12+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:c28afba66cc09233f7dfa49177423e124d939cf5b0cd60d71bbb918edb0ed739", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:c28afba66cc09233f7dfa49177423e124d939cf5b0cd60d71bbb918edb0ed739", + "url": "https://access.redhat.com/errata/RHBA-2019:44849", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.1.13+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:212296a41e04176c308bfe169e7c6e05d77b76f403361664c3ce55cd30682a94", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:45273", + "io.openshift.upgrades.graph.release.manifestref": "sha256:212296a41e04176c308bfe169e7c6e05d77b76f403361664c3ce55cd30682a94", + "description": "", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.1.14+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:fd41c9bda9e0ff306954f1fd7af6428edff8c3989b75f9fe984968db66846231", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:fd41c9bda9e0ff306954f1fd7af6428edff8c3989b75f9fe984968db66846231", + "url": "https://access.redhat.com/errata/RHSA-2019:2594", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1" + } + }, + { + "version": "4.1.15+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:0a7f743a98e4d0937f44561138a03db8c09cdc4817a771a67f154e032435bcef", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:0a7f743a98e4d0937f44561138a03db8c09cdc4817a771a67f154e032435bcef", + "description": "", + "url": " https://access.redhat.com/errata/RHBA-2019:2681", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1" + } + }, + { + "version": "4.1.16+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:61ed953962d43cae388cb3c544b4cac358d4675076c2fc0befb236209d5116f7", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:2768", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:61ed953962d43cae388cb3c544b4cac358d4675076c2fc0befb236209d5116f7", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1" + } + }, + { + "version": "4.1.17+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:747e0d41ee2f1af8b234e8c96c3291225a120fab3af53ae691afb4f51ce02b85", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:2820", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1", + "io.openshift.upgrades.graph.release.manifestref": "sha256:747e0d41ee2f1af8b234e8c96c3291225a120fab3af53ae691afb4f51ce02b85" + } + }, + { + "version": "4.1.18+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:420633acf3fc7572372fe2df758152f6ab1f53a21c79a6c4b741fa0394c7df3a", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:420633acf3fc7572372fe2df758152f6ab1f53a21c79a6c4b741fa0394c7df3a", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:2856", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1,candidate-4.2" + } + }, + { + "version": "4.2.0-rc.0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:7e063c6b4a61377755284bf1a37bef8a25e5c1663a63fe2ba2e005f745f4e8c3", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:7e063c6b4a61377755284bf1a37bef8a25e5c1663a63fe2ba2e005f745f4e8c3", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.2", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:2922" + } + }, + { + "version": "4.2.0-rc.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:0a1dcbc81869f790fdd26d481706ee5d18ff4f5a13a833460d56fa0c396dc153", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:0a1dcbc81869f790fdd26d481706ee5d18ff4f5a13a833460d56fa0c396dc153", + "url": "https://access.redhat.com/errata/RHBA-2019:2922", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.2" + } + }, + { + "version": "4.2.0-rc.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:9a1a38ce4d5fa79c785801eca3679a759bede9f40081b9e1b9f0cca2baa673a2", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:9a1a38ce4d5fa79c785801eca3679a759bede9f40081b9e1b9f0cca2baa673a2", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:2922" + } + }, + { + "version": "4.2.0-rc.3+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:ab2241a765cb7715b7f5b5853b7b0bf8124e71459c5a80b74faf43ff51dcec49", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2019:2922", + "io.openshift.upgrades.graph.release.manifestref": "sha256:ab2241a765cb7715b7f5b5853b7b0bf8124e71459c5a80b74faf43ff51dcec49", + "description": "" + } + }, + { + "version": "4.2.0-rc.4+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:2ed0897c27fe0f2e27591da81f1f73c8cfefec6dfd4d3e67a68481d0efe38148", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:2922", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:2ed0897c27fe0f2e27591da81f1f73c8cfefec6dfd4d3e67a68481d0efe38148" + } + }, + { + "version": "4.1.19+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:56521ce8b07bddbb9e47452d6a2f3ebad0a3d3f120b9e70fdc589b5976f65fa5", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:3004", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:56521ce8b07bddbb9e47452d6a2f3ebad0a3d3f120b9e70fdc589b5976f65fa5", + "description": "" + } + }, + { + "version": "4.2.0-rc.5+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:1a2b56060f9d462ce879ce57d27f41941081ba063f4ac7f775505f0903d0713a", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:1a2b56060f9d462ce879ce57d27f41941081ba063f4ac7f775505f0903d0713a", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,prerelease-4.2", + "io.openshift.upgrades.graph.previous.remove": "*", + "url": "https://access.redhat.com/errata/RHBA-2019:2922" + } + }, + { + "version": "4.1.20+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a7e97365d16d8d920fedd3684b018b780337e069deb1dd8500e866c0d6110334", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1,candidate-4.2", + "io.openshift.upgrades.graph.release.manifestref": "sha256:a7e97365d16d8d920fedd3684b018b780337e069deb1dd8500e866c0d6110334", + "url": "https://access.redhat.com/errata/RHBA-2019:3004", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.2.0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:c5337afd85b94c93ec513f21c8545e3f9e36a227f55d41bc1dfb8fcc3f2be129", + "metadata": { + "io.openshift.upgrades.graph.previous.remove": "4.1.20", + "url": "https://access.redhat.com/errata/RHBA-2019:2922", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:c5337afd85b94c93ec513f21c8545e3f9e36a227f55d41bc1dfb8fcc3f2be129", + "description": "", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2" + } + }, + { + "version": "4.1.21+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a68066e534c41010b3750f18d620abede491965d5b0e860f5717b626cde08e5b", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:3152", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1,candidate-4.2,fast-4.2", + "io.openshift.upgrades.graph.release.manifestref": "sha256:a68066e534c41010b3750f18d620abede491965d5b0e860f5717b626cde08e5b", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.2.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:dc782b44cac3d59101904cc5da2b9d8bdb90e55a07814df50ea7a13071b0f5f0", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:dc782b44cac3d59101904cc5da2b9d8bdb90e55a07814df50ea7a13071b0f5f0", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:3151" + } + }, + { + "version": "4.2.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:32f2e138c0c5af6183830a22801f627bedb414591332960b7c8506ba7f6d7bb6", + "metadata": { + "io.openshift.upgrades.graph.previous.remove": "*", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:3151", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:32f2e138c0c5af6183830a22801f627bedb414591332960b7c8506ba7f6d7bb6", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2" + } + }, + { + "version": "4.1.22+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:31d3c3f2f3d3f9b40d6fde943d71ef823af3b3ceb41ea4fbcd6f428082a28872", + "metadata": { + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:3294", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1,candidate-4.2,fast-4.2", + "io.openshift.upgrades.graph.release.manifestref": "sha256:31d3c3f2f3d3f9b40d6fde943d71ef823af3b3ceb41ea4fbcd6f428082a28872" + } + }, + { + "version": "4.1.23+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:5dc1a2097ec0ecab4ef322c4e87bce93821c8ac9130a64ea3dc2f2bd8411a69c", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1,candidate-4.2", + "url": "https://access.redhat.com/errata/RHBA-2019:3766", + "io.openshift.upgrades.graph.release.manifestref": "sha256:5dc1a2097ec0ecab4ef322c4e87bce93821c8ac9130a64ea3dc2f2bd8411a69c", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "" + } + }, + { + "version": "4.1.24+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:6f87fb66dfa907db03981e69474ea3069deab66358c18d965f6331bd727ff23f", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1,candidate-4.2,fast-4.2,stable-4.2", + "io.openshift.upgrades.graph.release.manifestref": "sha256:6f87fb66dfa907db03981e69474ea3069deab66358c18d965f6331bd727ff23f", + "url": "https://access.redhat.com/errata/RHBA-2019:3875", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "" + } + }, + { + "version": "4.2.4+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:cebce35c054f1fb066a4dc0a518064945087ac1f3637fe23d2ee2b0c433d6ba8", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:3303", + "io.openshift.upgrades.graph.release.manifestref": "sha256:cebce35c054f1fb066a4dc0a518064945087ac1f3637fe23d2ee2b0c433d6ba8", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2" + } + }, + { + "version": "4.2.5+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:37c3ebd6fcdd20820a575a3639891cf9feed65a7553129ac6f0d1ef57fc6ad1e", + "metadata": { + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:3869", + "io.openshift.upgrades.graph.release.manifestref": "sha256:37c3ebd6fcdd20820a575a3639891cf9feed65a7553129ac6f0d1ef57fc6ad1e", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.2.6+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a5d134c1a0709d5d9c7d6b476cbf613d6a8cd34c49591e0f9cd9b23cc14065a1", + "metadata": { + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:3869", + "io.openshift.upgrades.graph.release.manifestref": "sha256:a5d134c1a0709d5d9c7d6b476cbf613d6a8cd34c49591e0f9cd9b23cc14065a1", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.2.7+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:bac62983757570b9b8f8bc84c740782984a255c16372b3e30cfc8b52c0a187b9", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:bac62983757570b9b8f8bc84c740782984a255c16372b3e30cfc8b52c0a187b9", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:3869" + } + }, + { + "version": "4.2.8+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:4bf307b98beba4d42da3316464013eac120c6e5a398646863ef92b0e2c621230", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:3919", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:4bf307b98beba4d42da3316464013eac120c6e5a398646863ef92b0e2c621230" + } + }, + { + "version": "4.1.25+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:5f824fa3b3c44c6a78a5fc6a77a82edc47cf2b495bb6b2b31e3e0a4d3d77684b", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:3913", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1,candidate-4.2", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:5f824fa3b3c44c6a78a5fc6a77a82edc47cf2b495bb6b2b31e3e0a4d3d77684b" + } + }, + { + "version": "4.2.9+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:f28cbabd1227352fe704a00df796a4511880174042dece96233036a10ac61639", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:f28cbabd1227352fe704a00df796a4511880174042dece96233036a10ac61639", + "url": "https://access.redhat.com/errata/RHBA-2019:3953", + "description": "", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2" + } + }, + { + "version": "4.1.26+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:3bc5f8bb2df578ea17e3d5ff5b9ae899a40fe16402b393abec0357f31eb85e58", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:3bc5f8bb2df578ea17e3d5ff5b9ae899a40fe16402b393abec0357f31eb85e58", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1,candidate-4.2,fast-4.2,stable-4.2", + "url": "https://access.redhat.com/errata/RHBA-2019:3956" + } + }, + { + "version": "4.1.27+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:10519d7ba7e028efec0b9a210e5c75d37f2f5fe74bced4e034bd89a323ea833f", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:10519d7ba7e028efec0b9a210e5c75d37f2f5fe74bced4e034bd89a323ea833f", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:4084", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1,candidate-4.2,fast-4.2,stable-4.2", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.2.10-s390x+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:28e9bbf8aa8c97e7bff1eeb2666ed6bde0edd8a72fc9b595fd1f5a367bf65a76", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2019:4093", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2", + "io.openshift.upgrades.graph.release.arch": "s390x", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:28e9bbf8aa8c97e7bff1eeb2666ed6bde0edd8a72fc9b595fd1f5a367bf65a76" + } + }, + { + "version": "4.2.10+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:dc2e38fb00085d6b7f722475f8b7b758a0cb3a02ba42d9acf8a8298a6d510d9c", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2", + "url": "https://access.redhat.com/errata/RHBA-2019:4093", + "io.openshift.upgrades.graph.release.manifestref": "sha256:dc2e38fb00085d6b7f722475f8b7b758a0cb3a02ba42d9acf8a8298a6d510d9c", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + }, + { + "version": "4.1.28+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:5eaaeb251579254e837f361bbda7f5c897e8cbf15ae52f1d78bfb1bcc18aec7b", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1,candidate-4.2,fast-4.2,stable-4.2", + "url": "https://access.redhat.com/errata/RHBA-2019:4186", + "io.openshift.upgrades.graph.release.manifestref": "sha256:5eaaeb251579254e837f361bbda7f5c897e8cbf15ae52f1d78bfb1bcc18aec7b" + } + }, + { + "version": "4.2.11-s390x+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:96ba6acf8cbcb6863425ecdc006495ae43fbe2b7b55f6002f5a4c77ea6183373", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2", + "io.openshift.upgrades.graph.release.arch": "s390x", + "io.openshift.upgrades.graph.previous.remove": "*", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:4181", + "io.openshift.upgrades.graph.release.manifestref": "sha256:96ba6acf8cbcb6863425ecdc006495ae43fbe2b7b55f6002f5a4c77ea6183373" + } + }, + { + "version": "4.2.11+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:49ee20ee3102b15a7cf4c019fd8875134fda41ccda1dc27b6e4483ded2aa8a5c", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:49ee20ee3102b15a7cf4c019fd8875134fda41ccda1dc27b6e4483ded2aa8a5c", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:4181", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2", + "io.openshift.upgrades.graph.previous.remove": "*" + } + }, + { + "version": "4.1.29+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:a30326a62fabe5478a11ed712f38bab4d1b56f688acbf65f21dfe2b8310f9220", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2020:0010", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:a30326a62fabe5478a11ed712f38bab4d1b56f688acbf65f21dfe2b8310f9220", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1,candidate-4.2,fast-4.2,stable-4.2" + } + }, + { + "version": "4.2.12-s390x+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:f1ef86861361140c69adca66278185c09eba12af80415208a2b0f9b014723f26", + "metadata": { + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2019:4181", + "io.openshift.upgrades.graph.release.manifestref": "sha256:f1ef86861361140c69adca66278185c09eba12af80415208a2b0f9b014723f26", + "io.openshift.upgrades.graph.release.arch": "s390x", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2" + } + }, + { + "version": "4.2.12+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:77ade34c373062c6a6c869e0e56ef93b2faaa373adadaac1430b29484a24d843", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:77ade34c373062c6a6c869e0e56ef93b2faaa373adadaac1430b29484a24d843", + "url": "https://access.redhat.com/errata/RHBA-2019:4181" + } + }, + { + "version": "4.2.13+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:782b41750f3284f3c8ee2c1f8cb896896da074e362cf8a472846356d1617752d", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2", + "io.openshift.upgrades.graph.release.manifestref": "sha256:782b41750f3284f3c8ee2c1f8cb896896da074e362cf8a472846356d1617752d", + "io.openshift.upgrades.graph.release.arch": "amd64", + "url": "https://access.redhat.com/errata/RHBA-2020:0014" + } + }, + { + "version": "4.3.0-rc.0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:bcf57853b93c72691f9c90813d17bc1d3b6d1efb75accc16e406be410689c885", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.channels": "candidate-4.3", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.previous.remove": "*", + "url": "https://access.redhat.com/errata/RHBA-2020:0062", + "io.openshift.upgrades.graph.release.manifestref": "sha256:bcf57853b93c72691f9c90813d17bc1d3b6d1efb75accc16e406be410689c885" + } + }, + { + "version": "4.2.13-s390x+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:5bbfbaf203e981a5783f1e73bedd41d2a35d69e11cf7d0d2de0becdd51a1fb1d", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2", + "io.openshift.upgrades.graph.previous.remove": "*", + "url": "https://access.redhat.com/errata/RHBA-2020:0014", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:5bbfbaf203e981a5783f1e73bedd41d2a35d69e11cf7d0d2de0becdd51a1fb1d", + "io.openshift.upgrades.graph.release.arch": "s390x" + } + }, + { + "version": "4.2.10+s390x" + }, + { + "version": "4.2.12+s390x" + }, + { + "version": "4.1.31+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:09bfa02aca6fb3f34e28b955f75efbaf28d2e760f384b01f9ab4a0fc1154962a", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1,candidate-4.2,fast-4.2,stable-4.2", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0115", + "io.openshift.upgrades.graph.release.manifestref": "sha256:09bfa02aca6fb3f34e28b955f75efbaf28d2e760f384b01f9ab4a0fc1154962a" + } + }, + { + "version": "4.1.30+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:c811f484faeefa469492b583033da759ca3323e9810471185a579baab187052c", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,stable-4.1,candidate-4.2,fast-4.2,stable-4.2", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:c811f484faeefa469492b583033da759ca3323e9810471185a579baab187052c", + "url": "https://access.redhat.com/errata/RHBA-2020:0071", + "description": "" + } + }, + { + "version": "4.2.14+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:3fabe939da31f9a31f509251b9f73d321e367aba2d09ff392c2f452f6433a95a", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:3fabe939da31f9a31f509251b9f73d321e367aba2d09ff392c2f452f6433a95a", + "url": "https://access.redhat.com/errata/RHBA-2020:0066" + } + }, + { + "version": "4.2.14+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:26ba0c17618872c68a2e9a5002c3f3e48f75ae844fcf66e83063bd72a104cfc7", + "metadata": { + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0066", + "io.openshift.upgrades.graph.release.arch": "s390x", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2", + "io.openshift.upgrades.graph.release.manifestref": "sha256:26ba0c17618872c68a2e9a5002c3f3e48f75ae844fcf66e83063bd72a104cfc7" + } + }, + { + "version": "4.2.15+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:18f3a392afa7adb531db116d599b777c07dc6592d58d1e81b7c389b6f04450c4", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:18f3a392afa7adb531db116d599b777c07dc6592d58d1e81b7c389b6f04450c4", + "url": "https://access.redhat.com/errata/RHBA-2020:0107", + "description": "", + "io.openshift.upgrades.graph.release.arch": "s390x" + } + }, + { + "version": "4.2.11+s390x" + }, + { + "version": "4.2.13+s390x" + }, + { + "version": "4.3.0-rc.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:5498810afcab4ce08ca890679bceda3cd7dfe929c6164a788d170f6e034963f6", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2020:0062", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:5498810afcab4ce08ca890679bceda3cd7dfe929c6164a788d170f6e034963f6", + "description": "" + } + }, + { + "version": "4.2.15+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:fa9a816c3e2825b483630b1454d55a33826cdc33abc854ad4865b9254639ebf9", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2020:0107", + "description": "", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:fa9a816c3e2825b483630b1454d55a33826cdc33abc854ad4865b9254639ebf9" + } + }, + { + "version": "4.3.0-rc.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:11281ce30dfa174086618f5034c131d15c14d7ccf5578c2ff3162724e5b3eadb", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:11281ce30dfa174086618f5034c131d15c14d7ccf5578c2ff3162724e5b3eadb", + "url": "https://access.redhat.com/errata/RHBA-2020:0062" + } + }, + { + "version": "4.2.16+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:04b79afdbb41579e0f969bf23cdb16483dbfadbc09a6a0fec60b94328d68135a", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2020:0107", + "io.openshift.upgrades.graph.release.manifestref": "sha256:04b79afdbb41579e0f969bf23cdb16483dbfadbc09a6a0fec60b94328d68135a", + "description": "", + "io.openshift.upgrades.graph.release.arch": "s390x", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2" + } + }, + { + "version": "4.3.0-rc.3+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:7467ac3dd703da09a1d5f63e9c61c2c3e04ff25c96bf58c66a715aafaa73697a", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "candidate-4.3", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0062", + "io.openshift.upgrades.graph.release.manifestref": "sha256:7467ac3dd703da09a1d5f63e9c61c2c3e04ff25c96bf58c66a715aafaa73697a", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.previous.remove": "4.2.16" + } + }, + { + "version": "4.2.16+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:e5a6e348721c38a78d9299284fbb5c60fb340135a86b674b038500bf190ad514", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,fast-4.2,stable-4.2,candidate-4.3,fast-4.3", + "url": "https://access.redhat.com/errata/RHBA-2020:0107", + "io.openshift.upgrades.graph.release.manifestref": "sha256:e5a6e348721c38a78d9299284fbb5c60fb340135a86b674b038500bf190ad514", + "description": "" + } + }, + { + "version": "4.3.0+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:3a516480dfd68e0f87f702b4d7bdd6f6a0acfdac5cd2e9767b838ceede34d70d", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2020:0062", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "candidate-4.3,fast-4.3,stable-4.3", + "io.openshift.upgrades.graph.release.manifestref": "sha256:3a516480dfd68e0f87f702b4d7bdd6f6a0acfdac5cd2e9767b838ceede34d70d", + "description": "" + } + }, + { + "version": "4.3.1+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:ea7ac3ad42169b39fce07e5e53403a028644810bee9a212e7456074894df40f3", + "metadata": { + "io.openshift.upgrades.graph.previous.remove": "4.2.18", + "io.openshift.upgrades.graph.release.manifestref": "sha256:ea7ac3ad42169b39fce07e5e53403a028644810bee9a212e7456074894df40f3", + "url": "https://access.redhat.com/errata/RHBA-2020:0391", + "io.openshift.upgrades.graph.release.channels": "candidate-4.3,fast-4.3,stable-4.3", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "" + } + }, + { + "version": "4.2.18+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:283a1625e18e0b6d7f354b1b022a0aeaab5598f2144ec484faf89e1ecb5c7498", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2020:0395", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,candidate-4.3", + "io.openshift.upgrades.graph.release.manifestref": "sha256:283a1625e18e0b6d7f354b1b022a0aeaab5598f2144ec484faf89e1ecb5c7498", + "description": "" + } + }, + { + "version": "4.1.34+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:d98c0df40e603b4a8ab344e2b4f44e53a67b036803f45be9a99bc0153ebb3f2e", + "metadata": { + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:d98c0df40e603b4a8ab344e2b4f44e53a67b036803f45be9a99bc0153ebb3f2e", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "prerelease-4.1,candidate-4.2", + "url": "https://access.redhat.com/errata/RHBA-2020:0399" + } + }, + { + "version": "4.2.19+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:b51a0c316bb0c11686e6b038ec7c9f7ff96763f47a53c3443ac82e8c054bc035", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "candidate-4.2,candidate-4.3", + "io.openshift.upgrades.graph.release.manifestref": "sha256:b51a0c316bb0c11686e6b038ec7c9f7ff96763f47a53c3443ac82e8c054bc035", + "url": "https://access.redhat.com/errata/RHBA-2020:0460", + "io.openshift.upgrades.graph.release.arch": "amd64", + "description": "" + } + }, + { + "version": "4.2.18+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:260ada42ef59e8af11a885897f39f293e7e8b95c40d6a393196b7f0e2b826f0b", + "metadata": { + "io.openshift.upgrades.graph.release.channels": "candidate-4.2", + "url": "https://access.redhat.com/errata/RHBA-2020:0395", + "io.openshift.upgrades.graph.release.manifestref": "sha256:260ada42ef59e8af11a885897f39f293e7e8b95c40d6a393196b7f0e2b826f0b", + "io.openshift.upgrades.graph.release.arch": "s390x", + "description": "" + } + }, + { + "version": "4.1.34+s390x" + }, + { + "version": "4.2.7+s390x" + }, + { + "version": "4.2.8+s390x" + }, + { + "version": "4.2.9+s390x" + }, + { + "version": "4.3.2+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:cadf53e7181639f6cc77d2430339102db2908de330210c1ff8c7a7dc1cb0e550", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:cadf53e7181639f6cc77d2430339102db2908de330210c1ff8c7a7dc1cb0e550", + "url": "https://access.redhat.com/errata/RHBA-2020:0492", + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.channels": "candidate-4.3", + "description": "" + } + }, + { + "version": "4.2.19+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:0b33c4263909b9e8960d3f3551466ab158d28dfd15fac661f0a717a70b804775", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "s390x", + "io.openshift.upgrades.graph.release.channels": "candidate-4.2", + "url": "https://access.redhat.com/errata/RHBA-2020:0460", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:0b33c4263909b9e8960d3f3551466ab158d28dfd15fac661f0a717a70b804775" + } + }, + { + "version": "4.2.20+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:bd8aa8e0ce08002d4f8e73d6a2f9de5ae535a6a961ff6b8fdf2c52e4a14cc787", + "metadata": { + "io.openshift.upgrades.graph.release.arch": "amd64", + "io.openshift.upgrades.graph.release.manifestref": "sha256:bd8aa8e0ce08002d4f8e73d6a2f9de5ae535a6a961ff6b8fdf2c52e4a14cc787", + "description": "", + "url": "https://access.redhat.com/errata/RHBA-2020:0523" + } + }, + { + "version": "4.2.20+s390x", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:4183c6acd0cc53f1ad4282cc04b4fda57ee2b504635016b3acb1464ea9775ccd", + "metadata": { + "io.openshift.upgrades.graph.release.manifestref": "sha256:4183c6acd0cc53f1ad4282cc04b4fda57ee2b504635016b3acb1464ea9775ccd", + "description": "", + "io.openshift.upgrades.graph.release.arch": "s390x", + "url": "https://access.redhat.com/errata/RHBA-2020:0523" + } + }, + { + "version": "4.3.3+amd64", + "payload": "quay.io/openshift-release-dev/ocp-release@sha256:9b8708b67dd9b7720cb7ab3ed6d12c394f689cc8927df0e727c76809ab383f44", + "metadata": { + "url": "https://access.redhat.com/errata/RHBA-2020:0528", + "description": "", + "io.openshift.upgrades.graph.release.manifestref": "sha256:9b8708b67dd9b7720cb7ab3ed6d12c394f689cc8927df0e727c76809ab383f44", + "io.openshift.upgrades.graph.release.arch": "amd64" + } + } + ], + "edges": [ + [ + 1, + 0 + ], + [ + 4, + 3 + ], + [ + 3, + 6 + ], + [ + 6, + 7 + ], + [ + 9, + 8 + ], + [ + 7, + 10 + ], + [ + 2, + 1 + ], + [ + 8, + 11 + ], + [ + 0, + 9 + ], + [ + 10, + 12 + ], + [ + 12, + 13 + ], + [ + 14, + 16 + ], + [ + 16, + 17 + ], + [ + 14, + 17 + ], + [ + 24, + 26 + ], + [ + 28, + 31 + ], + [ + 30, + 31 + ], + [ + 28, + 32 + ], + [ + 31, + 32 + ], + [ + 28, + 33 + ], + [ + 31, + 33 + ], + [ + 32, + 33 + ], + [ + 34, + 33 + ], + [ + 28, + 34 + ], + [ + 30, + 34 + ], + [ + 31, + 34 + ], + [ + 32, + 34 + ], + [ + 28, + 35 + ], + [ + 30, + 35 + ], + [ + 31, + 35 + ], + [ + 32, + 35 + ], + [ + 34, + 35 + ], + [ + 33, + 35 + ], + [ + 28, + 36 + ], + [ + 30, + 36 + ], + [ + 31, + 36 + ], + [ + 32, + 36 + ], + [ + 34, + 36 + ], + [ + 33, + 36 + ], + [ + 35, + 36 + ], + [ + 28, + 37 + ], + [ + 31, + 37 + ], + [ + 32, + 37 + ], + [ + 34, + 37 + ], + [ + 33, + 37 + ], + [ + 35, + 37 + ], + [ + 36, + 37 + ], + [ + 38, + 37 + ], + [ + 28, + 38 + ], + [ + 30, + 38 + ], + [ + 31, + 38 + ], + [ + 32, + 38 + ], + [ + 34, + 38 + ], + [ + 33, + 38 + ], + [ + 35, + 38 + ], + [ + 36, + 38 + ], + [ + 28, + 39 + ], + [ + 30, + 39 + ], + [ + 37, + 39 + ], + [ + 31, + 39 + ], + [ + 32, + 39 + ], + [ + 34, + 39 + ], + [ + 33, + 39 + ], + [ + 35, + 39 + ], + [ + 36, + 39 + ], + [ + 38, + 39 + ], + [ + 28, + 40 + ], + [ + 39, + 40 + ], + [ + 31, + 40 + ], + [ + 32, + 40 + ], + [ + 34, + 40 + ], + [ + 33, + 40 + ], + [ + 35, + 40 + ], + [ + 36, + 40 + ], + [ + 38, + 40 + ], + [ + 28, + 41 + ], + [ + 39, + 41 + ], + [ + 31, + 41 + ], + [ + 32, + 41 + ], + [ + 34, + 41 + ], + [ + 33, + 41 + ], + [ + 35, + 41 + ], + [ + 36, + 41 + ], + [ + 38, + 41 + ], + [ + 28, + 42 + ], + [ + 39, + 42 + ], + [ + 41, + 42 + ], + [ + 31, + 42 + ], + [ + 32, + 42 + ], + [ + 34, + 42 + ], + [ + 33, + 42 + ], + [ + 35, + 42 + ], + [ + 36, + 42 + ], + [ + 38, + 42 + ], + [ + 39, + 43 + ], + [ + 41, + 43 + ], + [ + 42, + 43 + ], + [ + 31, + 43 + ], + [ + 32, + 43 + ], + [ + 34, + 43 + ], + [ + 33, + 43 + ], + [ + 35, + 43 + ], + [ + 36, + 43 + ], + [ + 38, + 43 + ], + [ + 39, + 44 + ], + [ + 41, + 44 + ], + [ + 42, + 44 + ], + [ + 43, + 44 + ], + [ + 32, + 44 + ], + [ + 34, + 44 + ], + [ + 33, + 44 + ], + [ + 35, + 44 + ], + [ + 36, + 44 + ], + [ + 38, + 44 + ], + [ + 39, + 45 + ], + [ + 41, + 45 + ], + [ + 42, + 45 + ], + [ + 43, + 45 + ], + [ + 44, + 45 + ], + [ + 32, + 45 + ], + [ + 34, + 45 + ], + [ + 33, + 45 + ], + [ + 35, + 45 + ], + [ + 36, + 45 + ], + [ + 38, + 45 + ], + [ + 39, + 46 + ], + [ + 41, + 46 + ], + [ + 42, + 46 + ], + [ + 43, + 46 + ], + [ + 44, + 46 + ], + [ + 45, + 46 + ], + [ + 32, + 46 + ], + [ + 34, + 46 + ], + [ + 33, + 46 + ], + [ + 35, + 46 + ], + [ + 36, + 46 + ], + [ + 38, + 46 + ], + [ + 46, + 48 + ], + [ + 47, + 48 + ], + [ + 46, + 49 + ], + [ + 47, + 49 + ], + [ + 48, + 49 + ], + [ + 46, + 50 + ], + [ + 47, + 50 + ], + [ + 48, + 50 + ], + [ + 49, + 50 + ], + [ + 46, + 51 + ], + [ + 39, + 52 + ], + [ + 41, + 52 + ], + [ + 42, + 52 + ], + [ + 43, + 52 + ], + [ + 44, + 52 + ], + [ + 45, + 52 + ], + [ + 46, + 52 + ], + [ + 32, + 52 + ], + [ + 34, + 52 + ], + [ + 33, + 52 + ], + [ + 35, + 52 + ], + [ + 36, + 52 + ], + [ + 38, + 52 + ], + [ + 46, + 53 + ], + [ + 54, + 53 + ], + [ + 39, + 54 + ], + [ + 41, + 54 + ], + [ + 42, + 54 + ], + [ + 43, + 54 + ], + [ + 44, + 54 + ], + [ + 45, + 54 + ], + [ + 46, + 54 + ], + [ + 35, + 54 + ], + [ + 36, + 54 + ], + [ + 38, + 54 + ], + [ + 54, + 55 + ], + [ + 51, + 55 + ], + [ + 53, + 55 + ], + [ + 39, + 56 + ], + [ + 41, + 56 + ], + [ + 42, + 56 + ], + [ + 43, + 56 + ], + [ + 44, + 56 + ], + [ + 45, + 56 + ], + [ + 46, + 56 + ], + [ + 54, + 56 + ], + [ + 36, + 56 + ], + [ + 38, + 56 + ], + [ + 56, + 57 + ], + [ + 55, + 57 + ], + [ + 58, + 57 + ], + [ + 54, + 58 + ], + [ + 56, + 58 + ], + [ + 51, + 58 + ], + [ + 53, + 58 + ], + [ + 39, + 59 + ], + [ + 41, + 59 + ], + [ + 42, + 59 + ], + [ + 43, + 59 + ], + [ + 44, + 59 + ], + [ + 45, + 59 + ], + [ + 46, + 59 + ], + [ + 52, + 59 + ], + [ + 54, + 59 + ], + [ + 56, + 59 + ], + [ + 39, + 60 + ], + [ + 41, + 60 + ], + [ + 42, + 60 + ], + [ + 43, + 60 + ], + [ + 44, + 60 + ], + [ + 46, + 60 + ], + [ + 52, + 60 + ], + [ + 54, + 60 + ], + [ + 56, + 60 + ], + [ + 59, + 60 + ], + [ + 41, + 61 + ], + [ + 42, + 61 + ], + [ + 43, + 61 + ], + [ + 44, + 61 + ], + [ + 46, + 61 + ], + [ + 52, + 61 + ], + [ + 54, + 61 + ], + [ + 56, + 61 + ], + [ + 59, + 61 + ], + [ + 60, + 61 + ], + [ + 59, + 62 + ], + [ + 60, + 62 + ], + [ + 57, + 62 + ], + [ + 60, + 63 + ], + [ + 62, + 63 + ], + [ + 61, + 64 + ], + [ + 55, + 64 + ], + [ + 58, + 64 + ], + [ + 57, + 64 + ], + [ + 62, + 64 + ], + [ + 61, + 65 + ], + [ + 55, + 65 + ], + [ + 58, + 65 + ], + [ + 57, + 65 + ], + [ + 62, + 65 + ], + [ + 61, + 66 + ], + [ + 55, + 66 + ], + [ + 57, + 66 + ], + [ + 62, + 66 + ], + [ + 65, + 66 + ], + [ + 42, + 67 + ], + [ + 43, + 67 + ], + [ + 44, + 67 + ], + [ + 46, + 67 + ], + [ + 52, + 67 + ], + [ + 54, + 67 + ], + [ + 56, + 67 + ], + [ + 59, + 67 + ], + [ + 60, + 67 + ], + [ + 61, + 67 + ], + [ + 69, + 68 + ], + [ + 55, + 68 + ], + [ + 57, + 68 + ], + [ + 62, + 68 + ], + [ + 65, + 68 + ], + [ + 66, + 68 + ], + [ + 43, + 69 + ], + [ + 44, + 69 + ], + [ + 46, + 69 + ], + [ + 52, + 69 + ], + [ + 54, + 69 + ], + [ + 56, + 69 + ], + [ + 59, + 69 + ], + [ + 60, + 69 + ], + [ + 61, + 69 + ], + [ + 67, + 69 + ], + [ + 44, + 70 + ], + [ + 46, + 70 + ], + [ + 52, + 70 + ], + [ + 54, + 70 + ], + [ + 56, + 70 + ], + [ + 59, + 70 + ], + [ + 60, + 70 + ], + [ + 61, + 70 + ], + [ + 67, + 70 + ], + [ + 69, + 70 + ], + [ + 70, + 72 + ], + [ + 55, + 72 + ], + [ + 57, + 72 + ], + [ + 62, + 72 + ], + [ + 65, + 72 + ], + [ + 66, + 72 + ], + [ + 68, + 72 + ], + [ + 46, + 73 + ], + [ + 52, + 73 + ], + [ + 54, + 73 + ], + [ + 56, + 73 + ], + [ + 59, + 73 + ], + [ + 60, + 73 + ], + [ + 61, + 73 + ], + [ + 67, + 73 + ], + [ + 69, + 73 + ], + [ + 70, + 73 + ], + [ + 71, + 74 + ], + [ + 73, + 75 + ], + [ + 55, + 75 + ], + [ + 72, + 75 + ], + [ + 57, + 75 + ], + [ + 62, + 75 + ], + [ + 65, + 75 + ], + [ + 66, + 75 + ], + [ + 68, + 75 + ], + [ + 52, + 76 + ], + [ + 54, + 76 + ], + [ + 56, + 76 + ], + [ + 59, + 76 + ], + [ + 60, + 76 + ], + [ + 61, + 76 + ], + [ + 67, + 76 + ], + [ + 69, + 76 + ], + [ + 70, + 76 + ], + [ + 73, + 76 + ], + [ + 71, + 77 + ], + [ + 73, + 78 + ], + [ + 55, + 78 + ], + [ + 72, + 78 + ], + [ + 57, + 78 + ], + [ + 62, + 78 + ], + [ + 65, + 78 + ], + [ + 66, + 78 + ], + [ + 68, + 78 + ], + [ + 76, + 79 + ], + [ + 55, + 79 + ], + [ + 72, + 79 + ], + [ + 78, + 79 + ], + [ + 57, + 79 + ], + [ + 62, + 79 + ], + [ + 65, + 79 + ], + [ + 66, + 79 + ], + [ + 68, + 79 + ], + [ + 79, + 80 + ], + [ + 82, + 81 + ], + [ + 83, + 81 + ], + [ + 56, + 84 + ], + [ + 60, + 84 + ], + [ + 61, + 84 + ], + [ + 67, + 84 + ], + [ + 69, + 84 + ], + [ + 70, + 84 + ], + [ + 73, + 84 + ], + [ + 76, + 84 + ], + [ + 85, + 84 + ], + [ + 85, + 86 + ], + [ + 72, + 86 + ], + [ + 75, + 86 + ], + [ + 78, + 86 + ], + [ + 79, + 86 + ], + [ + 57, + 86 + ], + [ + 62, + 86 + ], + [ + 63, + 86 + ], + [ + 65, + 86 + ], + [ + 66, + 86 + ], + [ + 68, + 86 + ], + [ + 71, + 87 + ], + [ + 74, + 87 + ], + [ + 77, + 87 + ], + [ + 81, + 87 + ], + [ + 82, + 88 + ], + [ + 89, + 88 + ], + [ + 83, + 88 + ], + [ + 90, + 88 + ], + [ + 87, + 88 + ], + [ + 86, + 91 + ], + [ + 84, + 92 + ], + [ + 72, + 92 + ], + [ + 75, + 92 + ], + [ + 78, + 92 + ], + [ + 79, + 92 + ], + [ + 86, + 92 + ], + [ + 62, + 92 + ], + [ + 63, + 92 + ], + [ + 65, + 92 + ], + [ + 66, + 92 + ], + [ + 68, + 92 + ], + [ + 92, + 93 + ], + [ + 82, + 94 + ], + [ + 89, + 94 + ], + [ + 83, + 94 + ], + [ + 90, + 94 + ], + [ + 87, + 94 + ], + [ + 88, + 94 + ], + [ + 96, + 95 + ], + [ + 80, + 95 + ], + [ + 91, + 95 + ], + [ + 93, + 95 + ], + [ + 84, + 96 + ], + [ + 72, + 96 + ], + [ + 75, + 96 + ], + [ + 78, + 96 + ], + [ + 79, + 96 + ], + [ + 86, + 96 + ], + [ + 92, + 96 + ], + [ + 62, + 96 + ], + [ + 63, + 96 + ], + [ + 65, + 96 + ], + [ + 66, + 96 + ], + [ + 68, + 96 + ], + [ + 96, + 97 + ], + [ + 80, + 97 + ], + [ + 91, + 97 + ], + [ + 93, + 97 + ], + [ + 95, + 97 + ], + [ + 56, + 85 + ], + [ + 60, + 85 + ], + [ + 61, + 85 + ], + [ + 67, + 85 + ], + [ + 69, + 85 + ], + [ + 70, + 85 + ], + [ + 73, + 85 + ], + [ + 76, + 85 + ], + [ + 99, + 98 + ], + [ + 97, + 98 + ], + [ + 80, + 98 + ], + [ + 95, + 98 + ], + [ + 59, + 100 + ], + [ + 60, + 100 + ], + [ + 61, + 100 + ], + [ + 67, + 100 + ], + [ + 69, + 100 + ], + [ + 70, + 100 + ], + [ + 73, + 100 + ], + [ + 76, + 100 + ], + [ + 85, + 100 + ], + [ + 84, + 100 + ], + [ + 100, + 101 + ], + [ + 72, + 101 + ], + [ + 78, + 101 + ], + [ + 79, + 101 + ], + [ + 86, + 101 + ], + [ + 92, + 101 + ], + [ + 96, + 101 + ], + [ + 99, + 101 + ], + [ + 100, + 99 + ], + [ + 72, + 99 + ], + [ + 78, + 99 + ], + [ + 79, + 99 + ], + [ + 86, + 99 + ], + [ + 92, + 99 + ], + [ + 96, + 99 + ], + [ + 65, + 99 + ], + [ + 66, + 99 + ], + [ + 68, + 99 + ], + [ + 103, + 102 + ], + [ + 82, + 102 + ], + [ + 83, + 102 + ], + [ + 90, + 102 + ], + [ + 87, + 102 + ], + [ + 88, + 102 + ], + [ + 94, + 102 + ], + [ + 104, + 102 + ], + [ + 105, + 102 + ], + [ + 106, + 102 + ], + [ + 101, + 107 + ], + [ + 97, + 107 + ], + [ + 98, + 107 + ], + [ + 71, + 108 + ], + [ + 74, + 108 + ], + [ + 77, + 108 + ], + [ + 81, + 108 + ], + [ + 87, + 108 + ], + [ + 88, + 108 + ], + [ + 94, + 108 + ], + [ + 102, + 108 + ], + [ + 100, + 109 + ], + [ + 72, + 109 + ], + [ + 78, + 109 + ], + [ + 79, + 109 + ], + [ + 86, + 109 + ], + [ + 92, + 109 + ], + [ + 96, + 109 + ], + [ + 99, + 109 + ], + [ + 101, + 109 + ], + [ + 68, + 109 + ], + [ + 103, + 110 + ], + [ + 71, + 110 + ], + [ + 74, + 110 + ], + [ + 77, + 110 + ], + [ + 81, + 110 + ], + [ + 87, + 110 + ], + [ + 88, + 110 + ], + [ + 94, + 110 + ], + [ + 102, + 110 + ], + [ + 108, + 110 + ], + [ + 109, + 111 + ], + [ + 97, + 111 + ], + [ + 98, + 111 + ], + [ + 107, + 111 + ] + ] +}