From a0e8537d2286c40b0a6da0aaa476dc67d45544c8 Mon Sep 17 00:00:00 2001 From: Jordan Keister Date: Wed, 3 Aug 2022 14:23:54 -0500 Subject: [PATCH] fixing reliance on candidate channel containing all referenced bundles Signed-off-by: Jordan Keister --- alpha/veneer/semver/semver.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/alpha/veneer/semver/semver.go b/alpha/veneer/semver/semver.go index 5392e0a7f..00edcc64f 100644 --- a/alpha/veneer/semver/semver.go +++ b/alpha/veneer/semver/semver.go @@ -84,10 +84,16 @@ func (v Veneer) Render(ctx context.Context) (*declcfg.DeclarativeConfig, error) } var cfgs []declcfg.DeclarativeConfig - for _, b := range sv.Candidate.Bundles { + + bundleDict := make(map[string]struct{}) + buildBundleList(&sv.Candidate.Bundles, &bundleDict) + buildBundleList(&sv.Fast.Bundles, &bundleDict) + buildBundleList(&sv.Stable.Bundles, &bundleDict) + + for b, _ := range bundleDict { r := action.Render{ AllowedRefMask: action.RefBundleImage, - Refs: []string{b.Image}, + Refs: []string{b}, Registry: v.Registry, } c, err := r.Run(ctx) @@ -114,6 +120,14 @@ func (v Veneer) Render(ctx context.Context) (*declcfg.DeclarativeConfig, error) return &out, nil } +func buildBundleList(bundles *[]semverVeneerBundleEntry, dict *map[string]struct{}) { + for _, b := range *bundles { + if _, ok := (*dict)[b.Image]; !ok { + (*dict)[b.Image] = struct{}{} + } + } +} + func readFile(data io.Reader) (*semverVeneer, error) { fileData, err := io.ReadAll(data) if err != nil {