Skip to content

Commit a3e5521

Browse files
committed
fixing reliance on candidate channel containing all referenced bundles (#1009)
Signed-off-by: Jordan Keister <[email protected]> Upstream-commit: 52e35f0291529290363e0e2d23d5b0c1524103c1 Upstream-repository: operator-registry
1 parent aec6a49 commit a3e5521

File tree

2 files changed

+48
-20
lines changed
  • staging/operator-registry/alpha/veneer/semver
  • vendor/github.com/operator-framework/operator-registry/alpha/veneer/semver

2 files changed

+48
-20
lines changed

staging/operator-registry/alpha/veneer/semver/semver.go

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package semver
33
import (
44
"context"
55
"fmt"
6-
"io/ioutil"
6+
"io"
77
"sort"
88

99
"github.com/blang/semver/v4"
@@ -18,8 +18,8 @@ import (
1818

1919
// data passed into this module externally
2020
type Veneer struct {
21-
Ref string
22-
Reg image.Registry
21+
Data io.Reader
22+
Registry image.Registry
2323
}
2424

2525
// IO structs -- BEGIN
@@ -78,17 +78,23 @@ type semverRenderedChannelVersions map[string]map[string]semver.Version // e.g.
7878
func (v Veneer) Render(ctx context.Context) (*declcfg.DeclarativeConfig, error) {
7979
var out declcfg.DeclarativeConfig
8080

81-
sv, err := readFile(v.Ref)
81+
sv, err := readFile(v.Data)
8282
if err != nil {
8383
return nil, fmt.Errorf("semver-render: unable to read file: %v", err)
8484
}
8585

8686
var cfgs []declcfg.DeclarativeConfig
87-
for _, b := range sv.Candidate.Bundles {
87+
88+
bundleDict := make(map[string]struct{})
89+
buildBundleList(&sv.Candidate.Bundles, &bundleDict)
90+
buildBundleList(&sv.Fast.Bundles, &bundleDict)
91+
buildBundleList(&sv.Stable.Bundles, &bundleDict)
92+
93+
for b, _ := range bundleDict {
8894
r := action.Render{
8995
AllowedRefMask: action.RefBundleImage,
90-
Refs: []string{b.Image},
91-
Registry: v.Reg,
96+
Refs: []string{b},
97+
Registry: v.Registry,
9298
}
9399
c, err := r.Run(ctx)
94100
if err != nil {
@@ -114,8 +120,16 @@ func (v Veneer) Render(ctx context.Context) (*declcfg.DeclarativeConfig, error)
114120
return &out, nil
115121
}
116122

117-
func readFile(ref string) (*semverVeneer, error) {
118-
data, err := ioutil.ReadFile(ref)
123+
func buildBundleList(bundles *[]semverVeneerBundleEntry, dict *map[string]struct{}) {
124+
for _, b := range *bundles {
125+
if _, ok := (*dict)[b.Image]; !ok {
126+
(*dict)[b.Image] = struct{}{}
127+
}
128+
}
129+
}
130+
131+
func readFile(data io.Reader) (*semverVeneer, error) {
132+
fileData, err := io.ReadAll(data)
119133
if err != nil {
120134
return nil, err
121135
}
@@ -126,7 +140,7 @@ func readFile(ref string) (*semverVeneer, error) {
126140
GenerateMinorChannels: true,
127141
AvoidSkipPatch: false,
128142
}
129-
if err := yaml.Unmarshal(data, &sv); err != nil {
143+
if err := yaml.Unmarshal(fileData, &sv); err != nil {
130144
return nil, err
131145
}
132146
return &sv, nil

vendor/github.com/operator-framework/operator-registry/alpha/veneer/semver/semver.go

Lines changed: 24 additions & 10 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)