Skip to content

Commit 1a45513

Browse files
committedMar 31, 2020
fix(load): add synthetic nodes in every channel that a replacement is in
This adds an additional test to the imageloader test suite that shows the issue (it fails without the other changes in this commit). The update logic was different from the "new" logic for adding bundles. To simplify reasoning about these two paths, they're now the same - updating will recalculate the graph from the new entrypoints and replace whatever was there before.
1 parent 6494b99 commit 1a45513

26 files changed

+375
-587
lines changed
 
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
annotations:
22
operators.operatorframework.io.bundle.package.v1: "prometheus"
3-
operators.operatorframework.io.bundle.channels.v1: "preview"
3+
operators.operatorframework.io.bundle.channels.v1: "preview,stable"
44
operators.operatorframework.io.bundle.channel.default.v1: "preview"

‎cmd/opm/index/delete.go

+6-6
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@ func runIndexDeleteCmdFunc(cmd *cobra.Command, args []string) error {
9595
indexDeleter := indexer.NewIndexDeleter(containerTool, logger)
9696

9797
request := indexer.DeleteFromIndexRequest{
98-
Generate: generate,
99-
FromIndex: fromIndex,
98+
Generate: generate,
99+
FromIndex: fromIndex,
100100
BinarySourceImage: binaryImage,
101-
OutDockerfile: outDockerfile,
102-
Operators: operators,
103-
Tag: tag,
104-
Permissive: permissive,
101+
OutDockerfile: outDockerfile,
102+
Operators: operators,
103+
Tag: tag,
104+
Permissive: permissive,
105105
}
106106

107107
err = indexDeleter.DeleteFromIndex(request)

‎cmd/opm/registry/add.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,9 @@ func addFunc(cmd *cobra.Command, args []string) error {
5353
}
5454

5555
request := registry.AddToRegistryRequest{
56-
Bundles: bundleImages,
56+
Bundles: bundleImages,
5757
InputDatabase: fromFilename,
58-
Permissive: permissive,
58+
Permissive: permissive,
5959
ContainerTool: containerTool,
6060
}
6161

‎cmd/opm/registry/mirror.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ func MirrorCmd() *cobra.Command {
4040
flags := cmd.Flags()
4141

4242
cmd.Flags().Bool("debug", false, "Enable debug logging.")
43-
flags.StringVar(&o.ManifestDir, "--to-manifests", "manifests", "Local path to store manifests.")
43+
flags.StringVar(&o.ManifestDir, "--to-manifests", "manifests", "Local path to store manifests.")
4444

4545
return cmd
4646
}

‎cmd/opm/registry/rm.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,9 @@ func rmFunc(cmd *cobra.Command, args []string) error {
4646
}
4747

4848
request := registry.DeleteFromRegistryRequest{
49-
Packages: packages,
49+
Packages: packages,
5050
InputDatabase: fromFilename,
51-
Permissive: permissive,
51+
Permissive: permissive,
5252
}
5353

5454
logger := logrus.WithFields(logrus.Fields{"packages": packages})

‎pkg/containertools/getimagedata_options.go

+2-3
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@ type GetImageDataOptions struct {
66

77
type GetImageDataOption func(*GetImageDataOptions)
88

9-
109
func WithWorkingDir(workingDir string) GetImageDataOption {
1110
return func(o *GetImageDataOptions) {
12-
o.WorkingDir = workingDir
13-
}
11+
o.WorkingDir = workingDir
12+
}
1413
}

‎pkg/containertools/labelreader_test.go

+69-70
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
package containertools_test
22

33
import (
4-
"fmt"
4+
"fmt"
55
"testing"
66

7-
"github.com/operator-framework/operator-registry/pkg/containertools"
8-
"github.com/operator-framework/operator-registry/pkg/containertools/containertoolsfakes"
7+
"github.com/operator-framework/operator-registry/pkg/containertools"
8+
"github.com/operator-framework/operator-registry/pkg/containertools/containertoolsfakes"
99

1010
"github.com/sirupsen/logrus"
1111
"github.com/stretchr/testify/require"
@@ -18,41 +18,40 @@ func TestReadDockerLabels(t *testing.T) {
1818
expectedLabelVal := "./index.db"
1919
containerTool := "docker"
2020

21-
logger := logrus.NewEntry(logrus.New())
22-
mockCmd := containertoolsfakes.FakeCommandRunner{}
23-
24-
mockCmd.PullReturns(nil)
25-
mockCmd.InspectReturns([]byte(imageData), nil)
26-
mockCmd.GetToolNameReturns(containerTool)
21+
logger := logrus.NewEntry(logrus.New())
22+
mockCmd := containertoolsfakes.FakeCommandRunner{}
23+
24+
mockCmd.PullReturns(nil)
25+
mockCmd.InspectReturns([]byte(imageData), nil)
26+
mockCmd.GetToolNameReturns(containerTool)
2727

2828
labelReader := containertools.ImageLabelReader{
29-
Cmd: &mockCmd,
30-
Logger: logger,
31-
}
29+
Cmd: &mockCmd,
30+
Logger: logger,
31+
}
3232

3333
labels, err := labelReader.GetLabelsFromImage(image)
3434
require.NoError(t, err)
3535
require.Equal(t, labels[expectedLabelKey], expectedLabelVal)
3636
}
3737

38-
3938
func TestReadDockerLabelsNoLabels(t *testing.T) {
4039
image := "quay.io/operator-framework/example"
4140
imageData := exampleInspectResultDockerNoLabels
4241
containerTool := "docker"
4342

44-
mockCmd := containertoolsfakes.FakeCommandRunner{}
45-
46-
logger := logrus.NewEntry(logrus.New())
43+
mockCmd := containertoolsfakes.FakeCommandRunner{}
44+
45+
logger := logrus.NewEntry(logrus.New())
4746

4847
labelReader := containertools.ImageLabelReader{
49-
Cmd: &mockCmd,
50-
Logger: logger,
51-
}
48+
Cmd: &mockCmd,
49+
Logger: logger,
50+
}
5251

5352
mockCmd.PullReturns(nil)
54-
mockCmd.InspectReturns([]byte(imageData), nil)
55-
mockCmd.GetToolNameReturns(containerTool)
53+
mockCmd.InspectReturns([]byte(imageData), nil)
54+
mockCmd.GetToolNameReturns(containerTool)
5655

5756
labels, err := labelReader.GetLabelsFromImage(image)
5857
require.NoError(t, err)
@@ -66,18 +65,18 @@ func TestReadPodmanLabels(t *testing.T) {
6665
expectedLabelVal := "./index.db"
6766
containerTool := "podman"
6867

69-
mockCmd := containertoolsfakes.FakeCommandRunner{}
70-
71-
logger := logrus.NewEntry(logrus.New())
68+
mockCmd := containertoolsfakes.FakeCommandRunner{}
69+
70+
logger := logrus.NewEntry(logrus.New())
7271

7372
labelReader := containertools.ImageLabelReader{
74-
Cmd: &mockCmd,
75-
Logger: logger,
76-
}
73+
Cmd: &mockCmd,
74+
Logger: logger,
75+
}
7776

7877
mockCmd.PullReturns(nil)
79-
mockCmd.InspectReturns([]byte(imageData), nil)
80-
mockCmd.GetToolNameReturns(containerTool)
78+
mockCmd.InspectReturns([]byte(imageData), nil)
79+
mockCmd.GetToolNameReturns(containerTool)
8180

8281
labels, err := labelReader.GetLabelsFromImage(image)
8382
require.NoError(t, err)
@@ -89,18 +88,18 @@ func TestReadPodmanLabelsNoLabels(t *testing.T) {
8988
imageData := exampleInspectResultPodmanNoLabels
9089
containerTool := "podman"
9190

92-
mockCmd := containertoolsfakes.FakeCommandRunner{}
91+
mockCmd := containertoolsfakes.FakeCommandRunner{}
9392

94-
logger := logrus.NewEntry(logrus.New())
93+
logger := logrus.NewEntry(logrus.New())
9594

9695
labelReader := containertools.ImageLabelReader{
97-
Cmd: &mockCmd,
98-
Logger: logger,
99-
}
96+
Cmd: &mockCmd,
97+
Logger: logger,
98+
}
10099

101100
mockCmd.PullReturns(nil)
102-
mockCmd.InspectReturns([]byte(imageData), nil)
103-
mockCmd.GetToolNameReturns(containerTool)
101+
mockCmd.InspectReturns([]byte(imageData), nil)
102+
mockCmd.GetToolNameReturns(containerTool)
104103

105104
labels, err := labelReader.GetLabelsFromImage(image)
106105
require.NoError(t, err)
@@ -109,64 +108,64 @@ func TestReadPodmanLabelsNoLabels(t *testing.T) {
109108

110109
func TestReadDockerLabels_PullError(t *testing.T) {
111110
image := "quay.io/operator-framework/example"
112-
pullErr := fmt.Errorf("Error pulling image")
111+
pullErr := fmt.Errorf("Error pulling image")
113112

114-
logger := logrus.NewEntry(logrus.New())
115-
mockCmd := containertoolsfakes.FakeCommandRunner{}
116-
117-
mockCmd.PullReturns(pullErr)
113+
logger := logrus.NewEntry(logrus.New())
114+
mockCmd := containertoolsfakes.FakeCommandRunner{}
115+
116+
mockCmd.PullReturns(pullErr)
118117

119118
labelReader := containertools.ImageLabelReader{
120-
Cmd: &mockCmd,
121-
Logger: logger,
122-
}
119+
Cmd: &mockCmd,
120+
Logger: logger,
121+
}
123122

124123
_, err := labelReader.GetLabelsFromImage(image)
125-
require.Error(t, err)
126-
require.EqualError(t, err, pullErr.Error())
124+
require.Error(t, err)
125+
require.EqualError(t, err, pullErr.Error())
127126
}
128127

129128
func TestReadDockerLabels_InspectError(t *testing.T) {
130129
image := "quay.io/operator-framework/example"
131-
containerTool := "docker"
132-
inspectErr := fmt.Errorf("Error inspecting image")
130+
containerTool := "docker"
131+
inspectErr := fmt.Errorf("Error inspecting image")
132+
133+
logger := logrus.NewEntry(logrus.New())
134+
mockCmd := containertoolsfakes.FakeCommandRunner{}
133135

134-
logger := logrus.NewEntry(logrus.New())
135-
mockCmd := containertoolsfakes.FakeCommandRunner{}
136-
137-
mockCmd.PullReturns(nil)
138-
mockCmd.InspectReturns(nil, inspectErr)
139-
mockCmd.GetToolNameReturns(containerTool)
136+
mockCmd.PullReturns(nil)
137+
mockCmd.InspectReturns(nil, inspectErr)
138+
mockCmd.GetToolNameReturns(containerTool)
140139

141140
labelReader := containertools.ImageLabelReader{
142-
Cmd: &mockCmd,
143-
Logger: logger,
144-
}
141+
Cmd: &mockCmd,
142+
Logger: logger,
143+
}
145144

146145
_, err := labelReader.GetLabelsFromImage(image)
147146
require.Error(t, err)
148-
require.EqualError(t, err, inspectErr.Error())
147+
require.EqualError(t, err, inspectErr.Error())
149148
}
150149

151150
func TestReadDockerLabels_InvalidData_Error(t *testing.T) {
152151
image := "quay.io/operator-framework/example"
153152
imageData := "invalidJson"
154-
containerTool := "docker"
153+
containerTool := "docker"
155154

156-
logger := logrus.NewEntry(logrus.New())
157-
mockCmd := containertoolsfakes.FakeCommandRunner{}
158-
159-
mockCmd.PullReturns(nil)
160-
mockCmd.InspectReturns([]byte(imageData), nil)
161-
mockCmd.GetToolNameReturns(containerTool)
155+
logger := logrus.NewEntry(logrus.New())
156+
mockCmd := containertoolsfakes.FakeCommandRunner{}
157+
158+
mockCmd.PullReturns(nil)
159+
mockCmd.InspectReturns([]byte(imageData), nil)
160+
mockCmd.GetToolNameReturns(containerTool)
162161

163162
labelReader := containertools.ImageLabelReader{
164-
Cmd: &mockCmd,
165-
Logger: logger,
166-
}
163+
Cmd: &mockCmd,
164+
Logger: logger,
165+
}
167166

168167
_, err := labelReader.GetLabelsFromImage(image)
169-
require.Error(t, err)
168+
require.Error(t, err)
170169
}
171170

172171
const exampleInspectResultDocker = `
@@ -563,4 +562,4 @@ const exampleInspectResultPodmanNoLabels = `
563562
]
564563
}
565564
]
566-
`
565+
`

‎pkg/mirror/mirror.go

+7-7
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@ func (f ImageMirrorerFunc) Mirror(mapping map[string]string) error {
3939
}
4040

4141
type IndexImageMirrorer struct {
42-
ImageMirrorer ImageMirrorer
43-
DatabaseExtractor DatabaseExtractor
42+
ImageMirrorer ImageMirrorer
43+
DatabaseExtractor DatabaseExtractor
4444

4545
// options
46-
Source, Dest string
46+
Source, Dest string
4747
}
4848

4949
var _ Mirrorer = &IndexImageMirrorer{}
@@ -58,10 +58,10 @@ func NewIndexImageMirror(options ...ImageIndexMirrorOption) (*IndexImageMirrorer
5858
return nil, err
5959
}
6060
return &IndexImageMirrorer{
61-
ImageMirrorer: config.ImageMirrorer,
62-
DatabaseExtractor: config.DatabaseExtractor,
63-
Source: config.Source,
64-
Dest: config.Dest,
61+
ImageMirrorer: config.ImageMirrorer,
62+
DatabaseExtractor: config.DatabaseExtractor,
63+
Source: config.Source,
64+
Dest: config.Dest,
6565
}, nil
6666
}
6767

‎pkg/mirror/mirror_test.go

+13-14
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,6 @@ func CreateTestDb(t *testing.T) (*sql.DB, string, func()) {
3838
}
3939
}
4040

41-
4241
func TestIndexImageMirrorer_Mirror(t *testing.T) {
4342
_, path, cleanup := CreateTestDb(t)
4443
defer cleanup()
@@ -60,24 +59,24 @@ func TestIndexImageMirrorer_Mirror(t *testing.T) {
6059
}{
6160
{
6261
name: "mirror images",
63-
fields:fields{
62+
fields: fields{
6463
DatabaseExtractor: testExtractor,
6564
Source: "example",
6665
Dest: "localhost",
6766
},
6867
want: map[string]string{
69-
"quay.io/coreos/etcd-operator@sha256:bd944a211eaf8f31da5e6d69e8541e7cada8f16a9f7a5a570b22478997819943":"localhost/coreos/etcd-operator@sha256:bd944a211eaf8f31da5e6d69e8541e7cada8f16a9f7a5a570b22478997819943",
70-
"quay.io/coreos/etcd-operator@sha256:c0301e4686c3ed4206e370b42de5a3bd2229b9fb4906cf85f3f30650424abec2":"localhost/coreos/etcd-operator@sha256:c0301e4686c3ed4206e370b42de5a3bd2229b9fb4906cf85f3f30650424abec2",
71-
"quay.io/coreos/etcd-operator@sha256:db563baa8194fcfe39d1df744ed70024b0f1f9e9b55b5923c2f3a413c44dc6b8":"localhost/coreos/etcd-operator@sha256:db563baa8194fcfe39d1df744ed70024b0f1f9e9b55b5923c2f3a413c44dc6b8",
72-
"quay.io/coreos/etcd@sha256:3816b6daf9b66d6ced6f0f966314e2d4f894982c6b1493061502f8c2bf86ac84":"localhost/coreos/etcd@sha256:3816b6daf9b66d6ced6f0f966314e2d4f894982c6b1493061502f8c2bf86ac84",
73-
"quay.io/coreos/etcd@sha256:49d3d4a81e0d030d3f689e7167f23e120abf955f7d08dbedf3ea246485acee9f":"localhost/coreos/etcd@sha256:49d3d4a81e0d030d3f689e7167f23e120abf955f7d08dbedf3ea246485acee9f",
74-
"quay.io/coreos/prometheus-operator@sha256:0e92dd9b5789c4b13d53e1319d0a6375bcca4caaf0d698af61198061222a576d":"localhost/coreos/prometheus-operator@sha256:0e92dd9b5789c4b13d53e1319d0a6375bcca4caaf0d698af61198061222a576d",
75-
"quay.io/coreos/prometheus-operator@sha256:3daa69a8c6c2f1d35dcf1fe48a7cd8b230e55f5229a1ded438f687debade5bcf":"localhost/coreos/prometheus-operator@sha256:3daa69a8c6c2f1d35dcf1fe48a7cd8b230e55f5229a1ded438f687debade5bcf",
76-
"quay.io/coreos/prometheus-operator@sha256:5037b4e90dbb03ebdefaa547ddf6a1f748c8eeebeedf6b9d9f0913ad662b5731":"localhost/coreos/prometheus-operator@sha256:5037b4e90dbb03ebdefaa547ddf6a1f748c8eeebeedf6b9d9f0913ad662b5731",
77-
"docker.io/strimzi/cluster-operator:0.11.0": "localhost/strimzi/cluster-operator:0.11.0",
78-
"docker.io/strimzi/cluster-operator:0.11.1": "localhost/strimzi/cluster-operator:0.11.1",
79-
"docker.io/strimzi/operator:0.12.1": "localhost/strimzi/operator:0.12.1",
80-
"docker.io/strimzi/operator:0.12.2": "localhost/strimzi/operator:0.12.2",
68+
"quay.io/coreos/etcd-operator@sha256:bd944a211eaf8f31da5e6d69e8541e7cada8f16a9f7a5a570b22478997819943": "localhost/coreos/etcd-operator@sha256:bd944a211eaf8f31da5e6d69e8541e7cada8f16a9f7a5a570b22478997819943",
69+
"quay.io/coreos/etcd-operator@sha256:c0301e4686c3ed4206e370b42de5a3bd2229b9fb4906cf85f3f30650424abec2": "localhost/coreos/etcd-operator@sha256:c0301e4686c3ed4206e370b42de5a3bd2229b9fb4906cf85f3f30650424abec2",
70+
"quay.io/coreos/etcd-operator@sha256:db563baa8194fcfe39d1df744ed70024b0f1f9e9b55b5923c2f3a413c44dc6b8": "localhost/coreos/etcd-operator@sha256:db563baa8194fcfe39d1df744ed70024b0f1f9e9b55b5923c2f3a413c44dc6b8",
71+
"quay.io/coreos/etcd@sha256:3816b6daf9b66d6ced6f0f966314e2d4f894982c6b1493061502f8c2bf86ac84": "localhost/coreos/etcd@sha256:3816b6daf9b66d6ced6f0f966314e2d4f894982c6b1493061502f8c2bf86ac84",
72+
"quay.io/coreos/etcd@sha256:49d3d4a81e0d030d3f689e7167f23e120abf955f7d08dbedf3ea246485acee9f": "localhost/coreos/etcd@sha256:49d3d4a81e0d030d3f689e7167f23e120abf955f7d08dbedf3ea246485acee9f",
73+
"quay.io/coreos/prometheus-operator@sha256:0e92dd9b5789c4b13d53e1319d0a6375bcca4caaf0d698af61198061222a576d": "localhost/coreos/prometheus-operator@sha256:0e92dd9b5789c4b13d53e1319d0a6375bcca4caaf0d698af61198061222a576d",
74+
"quay.io/coreos/prometheus-operator@sha256:3daa69a8c6c2f1d35dcf1fe48a7cd8b230e55f5229a1ded438f687debade5bcf": "localhost/coreos/prometheus-operator@sha256:3daa69a8c6c2f1d35dcf1fe48a7cd8b230e55f5229a1ded438f687debade5bcf",
75+
"quay.io/coreos/prometheus-operator@sha256:5037b4e90dbb03ebdefaa547ddf6a1f748c8eeebeedf6b9d9f0913ad662b5731": "localhost/coreos/prometheus-operator@sha256:5037b4e90dbb03ebdefaa547ddf6a1f748c8eeebeedf6b9d9f0913ad662b5731",
76+
"docker.io/strimzi/cluster-operator:0.11.0": "localhost/strimzi/cluster-operator:0.11.0",
77+
"docker.io/strimzi/cluster-operator:0.11.1": "localhost/strimzi/cluster-operator:0.11.1",
78+
"docker.io/strimzi/operator:0.12.1": "localhost/strimzi/operator:0.12.1",
79+
"docker.io/strimzi/operator:0.12.2": "localhost/strimzi/operator:0.12.2",
8180
},
8281
},
8382
}

‎pkg/registry/bundle.go

-1
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ func (b *Bundle) Skips() ([]string, error) {
103103
return b.csv.GetSkips()
104104
}
105105

106-
107106
func (b *Bundle) CustomResourceDefinitions() ([]*v1beta1.CustomResourceDefinition, error) {
108107
if err := b.cache(); err != nil {
109108
return nil, err

‎pkg/registry/interface.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ import (
88

99
type Load interface {
1010
AddOperatorBundle(bundle *Bundle) error
11-
AddBundlePackageChannels(manifest PackageManifest, bundle *Bundle) error
1211
AddPackageChannels(manifest PackageManifest) error
13-
RmPackageName(packageName string) error
12+
AddBundlePackageChannels(manifest PackageManifest, bundle *Bundle) error
13+
RemovePackage(packageName string) error
1414
ClearNonDefaultBundles(packageName string) error
1515
}
1616

0 commit comments

Comments
 (0)
Please sign in to comment.