Skip to content

Commit 2c36793

Browse files
Merge pull request #64 from gallettilance/ocpmaxversion
OPRUN-3368: block cluster upgrade when installed operators have a max ocp version set that is incompatible with the next minor release
2 parents 81736a9 + 93836bc commit 2c36793

File tree

3,699 files changed

+307627
-107379
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

3,699 files changed

+307627
-107379
lines changed

cmd/cluster-olm-operator/main.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
"k8s.io/component-base/cli"
2121
utilflag "k8s.io/component-base/cli/flag"
2222

23+
"github.com/openshift/cluster-olm-operator/internal/utils"
2324
"github.com/openshift/cluster-olm-operator/pkg/clients"
2425
"github.com/openshift/cluster-olm-operator/pkg/controller"
2526
"github.com/openshift/cluster-olm-operator/pkg/version"
@@ -105,13 +106,28 @@ func runOperator(ctx context.Context, cc *controllercmd.ControllerContext) error
105106
deploymentControllerList = append(deploymentControllerList, controller)
106107
}
107108

109+
operatorImageVersion := status.VersionForOperatorFromEnv()
110+
nextOCPMinorVersion, err := utils.GetNextOCPMinorVersion(operatorImageVersion)
111+
if err != nil {
112+
return err
113+
}
114+
108115
upgradeableConditionController := controller.NewStaticUpgradeableConditionController(
109116
"OLMStaticUpgradeableConditionController",
110117
cl.OperatorClient,
111118
cc.EventRecorder.ForComponent("OLMStaticUpgradeableConditionController"),
112119
controllerNames,
113120
)
114121

122+
incompatibleOperatorController := controller.NewIncompatibleOperatorController(
123+
"OLMIncompatibleOperatorController",
124+
nextOCPMinorVersion,
125+
cl.KubeClient,
126+
cl.ClusterExtensionClient,
127+
cl.OperatorClient,
128+
cc.EventRecorder.ForComponent("OLMIncompatibleOperatorController"),
129+
)
130+
115131
versionGetter := status.NewVersionGetter()
116132
versionGetter.SetVersion("operator", status.VersionForOperatorFromEnv())
117133

@@ -129,7 +145,7 @@ func runOperator(ctx context.Context, cc *controllercmd.ControllerContext) error
129145

130146
cl.StartInformers(ctx)
131147

132-
for _, c := range append(staticResourceControllerList, upgradeableConditionController, clusterOperatorController, operatorLoggingController) {
148+
for _, c := range append(staticResourceControllerList, upgradeableConditionController, incompatibleOperatorController, clusterOperatorController, operatorLoggingController) {
133149
go func(c factory.Controller) {
134150
defer runtime.HandleCrash()
135151
c.Run(ctx, 1)

go.mod

Lines changed: 101 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,115 +1,141 @@
11
module github.com/openshift/cluster-olm-operator
22

3-
go 1.22
3+
go 1.22.5
44

5-
toolchain go1.22.1
5+
toolchain go1.22.7
6+
7+
replace github.com/openshift/library-go => github.com/gallettilance/library-go v0.0.0-20240916114351-b183885b7d04
68

79
require (
8-
github.com/openshift/api v0.0.0-20240424142232-29a704bf5aa2
9-
github.com/openshift/build-machinery-go v0.0.0-20231128094528-1e9b1b0595c8
10-
github.com/openshift/client-go v0.0.0-20240405120947-c67c8325cdd8
11-
github.com/openshift/library-go v0.0.0-20240426153406-52527b886e57
12-
github.com/spf13/cobra v1.7.0
10+
github.com/blang/semver/v4 v4.0.0
11+
github.com/go-logr/logr v1.4.2
12+
github.com/openshift/api v0.0.0-20240909041644-5852b58f4b10
13+
github.com/openshift/build-machinery-go v0.0.0-20240613134303-8359781da660
14+
github.com/openshift/client-go v0.0.0-20240906181530-b2f7c4ab0984
15+
github.com/openshift/library-go v0.0.0-20240905123346-5bdbfe35a6f5
16+
github.com/operator-framework/helm-operator-plugins v0.5.0
17+
github.com/operator-framework/operator-controller v0.15.0
18+
github.com/operator-framework/operator-registry v1.47.0
19+
github.com/spf13/cobra v1.8.1
1320
github.com/spf13/pflag v1.0.5
14-
golang.org/x/text v0.14.0
15-
k8s.io/api v0.29.0
16-
k8s.io/apiextensions-apiserver v0.29.0
17-
k8s.io/apimachinery v0.29.0
18-
k8s.io/client-go v0.29.0
19-
k8s.io/component-base v0.29.0
20-
k8s.io/klog/v2 v2.110.1
21-
k8s.io/utils v0.0.0-20230726121419-3b25d923346b
22-
sigs.k8s.io/controller-runtime v0.15.0
21+
github.com/stretchr/testify v1.9.0
22+
golang.org/x/text v0.18.0
23+
helm.sh/helm/v3 v3.15.4
24+
k8s.io/api v0.31.0
25+
k8s.io/apiextensions-apiserver v0.31.0
26+
k8s.io/apimachinery v0.31.0
27+
k8s.io/client-go v0.31.0
28+
k8s.io/component-base v0.31.0
29+
k8s.io/klog/v2 v2.130.1
30+
k8s.io/utils v0.0.0-20240711033017-18e509b52bc8
31+
sigs.k8s.io/controller-runtime v0.19.0
2332
)
2433

2534
require (
35+
github.com/Masterminds/semver/v3 v3.3.0 // indirect
36+
github.com/Masterminds/squirrel v1.5.4 // indirect
2637
github.com/NYTimes/gziphandler v1.1.1 // indirect
27-
github.com/antlr/antlr4/runtime/Go/antlr/v4 v4.0.0-20230305170008-8188dc5388df // indirect
28-
github.com/asaskevich/govalidator v0.0.0-20190424111038-f61b66f89f4a // indirect
38+
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect
39+
github.com/asaskevich/govalidator v0.0.0-20230301143203-a9d515a09cc2 // indirect
2940
github.com/beorn7/perks v1.0.1 // indirect
30-
github.com/blang/semver/v4 v4.0.0 // indirect
31-
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
32-
github.com/cespare/xxhash/v2 v2.2.0 // indirect
41+
github.com/cenkalti/backoff/v4 v4.3.0 // indirect
42+
github.com/cespare/xxhash/v2 v2.3.0 // indirect
3343
github.com/coreos/go-semver v0.3.1 // indirect
3444
github.com/coreos/go-systemd/v22 v22.5.0 // indirect
35-
github.com/davecgh/go-spew v1.1.1 // indirect
36-
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
37-
github.com/evanphx/json-patch v4.12.0+incompatible // indirect
38-
github.com/felixge/httpsnoop v1.0.3 // indirect
45+
github.com/cyphar/filepath-securejoin v0.3.1 // indirect
46+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
47+
github.com/emicklei/go-restful/v3 v3.11.2 // indirect
48+
github.com/evanphx/json-patch v5.7.0+incompatible // indirect
49+
github.com/felixge/fgprof v0.9.4 // indirect
50+
github.com/felixge/httpsnoop v1.0.4 // indirect
3951
github.com/fsnotify/fsnotify v1.7.0 // indirect
40-
github.com/go-logr/logr v1.3.0 // indirect
52+
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
53+
github.com/go-gorp/gorp/v3 v3.1.0 // indirect
4154
github.com/go-logr/stdr v1.2.2 // indirect
42-
github.com/go-openapi/jsonpointer v0.19.6 // indirect
43-
github.com/go-openapi/jsonreference v0.20.2 // indirect
44-
github.com/go-openapi/swag v0.22.3 // indirect
55+
github.com/go-openapi/jsonpointer v0.21.0 // indirect
56+
github.com/go-openapi/jsonreference v0.21.0 // indirect
57+
github.com/go-openapi/swag v0.23.0 // indirect
4558
github.com/gogo/protobuf v1.3.2 // indirect
4659
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
4760
github.com/golang/protobuf v1.5.4 // indirect
48-
github.com/google/cel-go v0.17.7 // indirect
61+
github.com/google/cel-go v0.20.1 // indirect
4962
github.com/google/gnostic-models v0.6.8 // indirect
5063
github.com/google/go-cmp v0.6.0 // indirect
5164
github.com/google/gofuzz v1.2.0 // indirect
52-
github.com/google/uuid v1.3.1 // indirect
65+
github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 // indirect
66+
github.com/google/uuid v1.6.0 // indirect
5367
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
54-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect
55-
github.com/imdario/mergo v0.3.7 // indirect
68+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect
69+
github.com/imdario/mergo v0.3.16 // indirect
5670
github.com/inconshreveable/mousetrap v1.1.0 // indirect
71+
github.com/jmoiron/sqlx v1.3.5 // indirect
5772
github.com/josharian/intern v1.0.0 // indirect
5873
github.com/json-iterator/go v1.1.12 // indirect
74+
github.com/klauspost/compress v1.17.9 // indirect
75+
github.com/kylelemons/godebug v1.1.0 // indirect
76+
github.com/lann/builder v0.0.0-20180802200727-47ae307949d0 // indirect
77+
github.com/lann/ps v0.0.0-20150810152359-62de8c46ede0 // indirect
78+
github.com/lib/pq v1.10.9 // indirect
5979
github.com/mailru/easyjson v0.7.7 // indirect
60-
github.com/matttproud/golang_protobuf_extensions v1.0.4 // indirect
80+
github.com/mitchellh/copystructure v1.2.0 // indirect
81+
github.com/mitchellh/reflectwalk v1.0.2 // indirect
6182
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
6283
github.com/modern-go/reflect2 v1.0.2 // indirect
6384
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
85+
github.com/operator-framework/api v0.27.0 // indirect
6486
github.com/pkg/errors v0.9.1 // indirect
65-
github.com/pkg/profile v1.3.0 // indirect
66-
github.com/prometheus/client_golang v1.16.0 // indirect
67-
github.com/prometheus/client_model v0.4.0 // indirect
68-
github.com/prometheus/common v0.44.0 // indirect
69-
github.com/prometheus/procfs v0.10.1 // indirect
87+
github.com/pkg/profile v1.7.0 // indirect
88+
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
89+
github.com/prometheus/client_golang v1.20.2 // indirect
90+
github.com/prometheus/client_model v0.6.1 // indirect
91+
github.com/prometheus/common v0.55.0 // indirect
92+
github.com/prometheus/procfs v0.15.1 // indirect
7093
github.com/robfig/cron v1.2.0 // indirect
71-
github.com/sirupsen/logrus v1.9.0 // indirect
72-
github.com/stoewer/go-strcase v1.2.0 // indirect
73-
go.etcd.io/etcd/api/v3 v3.5.10 // indirect
74-
go.etcd.io/etcd/client/pkg/v3 v3.5.10 // indirect
75-
go.etcd.io/etcd/client/v3 v3.5.10 // indirect
76-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.44.0 // indirect
77-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.44.0 // indirect
78-
go.opentelemetry.io/otel v1.20.0 // indirect
79-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0 // indirect
80-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 // indirect
81-
go.opentelemetry.io/otel/metric v1.20.0 // indirect
82-
go.opentelemetry.io/otel/sdk v1.20.0 // indirect
83-
go.opentelemetry.io/otel/trace v1.20.0 // indirect
84-
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
85-
go.uber.org/atomic v1.10.0 // indirect
94+
github.com/rubenv/sql-migrate v1.5.2 // indirect
95+
github.com/sirupsen/logrus v1.9.3 // indirect
96+
github.com/stoewer/go-strcase v1.3.0 // indirect
97+
github.com/x448/float16 v0.8.4 // indirect
98+
github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb // indirect
99+
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 // indirect
100+
github.com/xeipuuv/gojsonschema v1.2.0 // indirect
101+
go.etcd.io/etcd/api/v3 v3.5.14 // indirect
102+
go.etcd.io/etcd/client/pkg/v3 v3.5.14 // indirect
103+
go.etcd.io/etcd/client/v3 v3.5.14 // indirect
104+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.53.0 // indirect
105+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.53.0 // indirect
106+
go.opentelemetry.io/otel v1.28.0 // indirect
107+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.28.0 // indirect
108+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.27.0 // indirect
109+
go.opentelemetry.io/otel/metric v1.28.0 // indirect
110+
go.opentelemetry.io/otel/sdk v1.28.0 // indirect
111+
go.opentelemetry.io/otel/trace v1.28.0 // indirect
112+
go.opentelemetry.io/proto/otlp v1.3.1 // indirect
86113
go.uber.org/multierr v1.11.0 // indirect
87-
go.uber.org/zap v1.24.0 // indirect
88-
golang.org/x/crypto v0.16.0 // indirect
89-
golang.org/x/exp v0.0.0-20220722155223-a9213eeb770e // indirect
90-
golang.org/x/net v0.19.0 // indirect
91-
golang.org/x/oauth2 v0.11.0 // indirect
92-
golang.org/x/sync v0.3.0 // indirect
93-
golang.org/x/sys v0.15.0 // indirect
94-
golang.org/x/term v0.15.0 // indirect
95-
golang.org/x/time v0.3.0 // indirect
96-
google.golang.org/appengine v1.6.7 // indirect
97-
google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d // indirect
98-
google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d // indirect
99-
google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d // indirect
100-
google.golang.org/grpc v1.59.0 // indirect
101-
google.golang.org/protobuf v1.33.0 // indirect
114+
go.uber.org/zap v1.27.0 // indirect
115+
golang.org/x/crypto v0.27.0 // indirect
116+
golang.org/x/exp v0.0.0-20240719175910-8a7402abbf56 // indirect
117+
golang.org/x/net v0.29.0 // indirect
118+
golang.org/x/oauth2 v0.22.0 // indirect
119+
golang.org/x/sync v0.8.0 // indirect
120+
golang.org/x/sys v0.25.0 // indirect
121+
golang.org/x/term v0.24.0 // indirect
122+
golang.org/x/time v0.5.0 // indirect
123+
google.golang.org/genproto/googleapis/api v0.0.0-20240604185151-ef581f913117 // indirect
124+
google.golang.org/genproto/googleapis/rpc v0.0.0-20240701130421-f6361c86f094 // indirect
125+
google.golang.org/grpc v1.66.0 // indirect
126+
google.golang.org/protobuf v1.34.2 // indirect
127+
gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect
102128
gopkg.in/inf.v0 v0.9.1 // indirect
103129
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
104130
gopkg.in/yaml.v2 v2.4.0 // indirect
105131
gopkg.in/yaml.v3 v3.0.1 // indirect
106-
k8s.io/apiserver v0.29.0 // indirect
107-
k8s.io/kms v0.29.0 // indirect
108-
k8s.io/kube-aggregator v0.29.0 // indirect
109-
k8s.io/kube-openapi v0.0.0-20231010175941-2dd684a91f00 // indirect
110-
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.28.0 // indirect
132+
k8s.io/apiserver v0.31.0 // indirect
133+
k8s.io/kms v0.31.0 // indirect
134+
k8s.io/kube-aggregator v0.31.0 // indirect
135+
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
136+
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.30.3 // indirect
111137
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
112138
sigs.k8s.io/kube-storage-version-migrator v0.0.6-0.20230721195810-5c8923c5ff96 // indirect
113139
sigs.k8s.io/structured-merge-diff/v4 v4.4.1 // indirect
114-
sigs.k8s.io/yaml v1.3.0 // indirect
140+
sigs.k8s.io/yaml v1.4.0 // indirect
115141
)

0 commit comments

Comments
 (0)