Skip to content

Commit 07f889c

Browse files
committed
ORC: Move image controller into ORC
This requires copying some framework code currently shared with CAPO, specifically clients and scope. These are expected to diverge over time as their needs differ.
1 parent c9fe757 commit 07f889c

Some content is hidden

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

55 files changed

+3499
-133
lines changed

Makefile

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -318,10 +318,11 @@ generate-manifests: $(CONTROLLER_GEN) ## Generate manifests e.g. CRD, RBAC etc.
318318
paths=./pkg/webhooks/... \
319319
output:webhook:dir=$(WEBHOOK_ROOT) \
320320
webhook
321+
# We also need to extract rbac from ORC while we're running its controllers
321322
$(CONTROLLER_GEN) \
322323
paths=./ \
323324
paths=./controllers/... \
324-
paths=./internal/controllers/... \
325+
paths=./orc/internal/controllers/... \
325326
output:rbac:dir=$(RBAC_ROOT) \
326327
rbac:roleName=manager-role
327328

go.mod

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,17 @@ require (
88
github.com/google/go-cmp v0.6.0
99
github.com/google/gofuzz v1.2.0
1010
github.com/google/uuid v1.6.0
11-
github.com/gophercloud/gophercloud/v2 v2.1.0
12-
github.com/gophercloud/utils/v2 v2.0.0-20240812072210-8ce1fc0f2894
11+
github.com/gophercloud/gophercloud/v2 v2.1.1
12+
github.com/gophercloud/utils/v2 v2.0.0-20241008104625-7cbb8fd76bb7
1313
github.com/hashicorp/go-version v1.7.0
1414
github.com/k-orc/openstack-resource-controller v0.0.0-00010101000000-000000000000
1515
github.com/onsi/ginkgo/v2 v2.20.0
1616
github.com/onsi/gomega v1.34.1
1717
github.com/prometheus/client_golang v1.20.0
1818
github.com/spf13/pflag v1.0.5
19-
github.com/ulikunitz/xz v0.5.12
2019
go.uber.org/mock v0.4.0
2120
golang.org/x/crypto v0.26.0
22-
golang.org/x/text v0.17.0
21+
golang.org/x/text v0.19.0
2322
gopkg.in/ini.v1 v1.67.0
2423
k8s.io/api v0.30.3
2524
k8s.io/apiextensions-apiserver v0.30.3
@@ -118,6 +117,7 @@ require (
118117
github.com/spf13/viper v1.19.0 // indirect
119118
github.com/stoewer/go-strcase v1.3.0 // indirect
120119
github.com/subosito/gotenv v1.6.0 // indirect
120+
github.com/ulikunitz/xz v0.5.12 // indirect
121121
github.com/valyala/fastjson v1.6.4 // indirect
122122
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.49.0 // indirect
123123
go.opentelemetry.io/otel v1.24.0 // indirect
@@ -133,7 +133,7 @@ require (
133133
golang.org/x/net v0.28.0 // indirect
134134
golang.org/x/oauth2 v0.21.0 // indirect
135135
golang.org/x/sync v0.8.0 // indirect
136-
golang.org/x/sys v0.24.0 // indirect
136+
golang.org/x/sys v0.26.0 // indirect
137137
golang.org/x/term v0.23.0 // indirect
138138
golang.org/x/time v0.5.0 // indirect
139139
golang.org/x/tools v0.24.0 // indirect

go.sum

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -132,10 +132,10 @@ github.com/google/safetext v0.0.0-20220905092116-b49f7bc46da2/go.mod h1:Tv1PlzqC
132132
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
133133
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
134134
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
135-
github.com/gophercloud/gophercloud/v2 v2.1.0 h1:91p6c+uMckXyx39nSIYjDirDBnPVFQq0q1njLNPX+NY=
136-
github.com/gophercloud/gophercloud/v2 v2.1.0/go.mod h1:f2hMRC7Kakbv5vM7wSGHrIPZh6JZR60GVHryJlF/K44=
137-
github.com/gophercloud/utils/v2 v2.0.0-20240812072210-8ce1fc0f2894 h1:KgYK/Mf71IdN7+sq2cVmY8Jtumi26GxahN7nlV0ETBQ=
138-
github.com/gophercloud/utils/v2 v2.0.0-20240812072210-8ce1fc0f2894/go.mod h1:IXS9MKM8YBsr9G2xhnMAuiCOaNxmghQFQGi1p68+No0=
135+
github.com/gophercloud/gophercloud/v2 v2.1.1 h1:KUeVTUoq6um/CijR+hl1JRZ35SXRY62LiYUbgp4qqKw=
136+
github.com/gophercloud/gophercloud/v2 v2.1.1/go.mod h1:f2hMRC7Kakbv5vM7wSGHrIPZh6JZR60GVHryJlF/K44=
137+
github.com/gophercloud/utils/v2 v2.0.0-20241008104625-7cbb8fd76bb7 h1:RDFC3+cVfeCQ8zi/PgaKrPzJyUbwzg3Mi2xCWnAW+g4=
138+
github.com/gophercloud/utils/v2 v2.0.0-20241008104625-7cbb8fd76bb7/go.mod h1:hLzf9Ts2fhebZrZAtq6BpbwXQLEZmUqa7ABJMkg/il8=
139139
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
140140
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
141141
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=
@@ -371,8 +371,8 @@ golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBc
371371
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
372372
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
373373
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
374-
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
375-
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
374+
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
375+
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
376376
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
377377
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
378378
golang.org/x/term v0.2.0/go.mod h1:TVmDHMZPmdnySmBfhjOoOdhjzdE1h4u1VwSiw2l1Nuc=
@@ -382,8 +382,8 @@ golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
382382
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
383383
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
384384
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
385-
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
386-
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
385+
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
386+
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
387387
golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk=
388388
golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM=
389389
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

hack/codegen/go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ require (
3434
golang.org/x/mod v0.20.0 // indirect
3535
golang.org/x/net v0.28.0 // indirect
3636
golang.org/x/sync v0.8.0 // indirect
37-
golang.org/x/sys v0.24.0 // indirect
38-
golang.org/x/text v0.17.0 // indirect
37+
golang.org/x/sys v0.26.0 // indirect
38+
golang.org/x/text v0.19.0 // indirect
3939
golang.org/x/tools v0.24.0 // indirect
4040
google.golang.org/protobuf v1.34.2 // indirect
4141
gopkg.in/inf.v0 v0.9.1 // indirect

hack/codegen/go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -98,12 +98,12 @@ golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk=
9898
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
9999
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
100100
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
101-
golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg=
102-
golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
101+
golang.org/x/sys v0.26.0 h1:KHjCJyddX0LoSTb3J+vWpupP9p0oznkqVk/IfjymZbo=
102+
golang.org/x/sys v0.26.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
103103
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
104104
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
105-
golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc=
106-
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
105+
golang.org/x/text v0.19.0 h1:kTxAhCbGbxhK0IwgSKiMO5awPoDQ0RpfiVYBfK860YM=
106+
golang.org/x/text v0.19.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
107107
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
108108
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
109109
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=

hack/codegen/go.work.sum

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,7 @@ golang.org/x/term v0.19.0/go.mod h1:2CuTdWZ7KHSQwUzKva0cbMg6q2DMI3Mmxp+gKJbskEk=
185185
golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw=
186186
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
187187
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
188+
golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY=
188189
golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
189190
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
190191
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=

hack/tools/go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,8 @@ require (
5252
github.com/google/pprof v0.0.0-20240827171923-fa2c70bbbfe5 // indirect
5353
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
5454
github.com/google/uuid v1.6.0 // indirect
55-
github.com/gophercloud/gophercloud/v2 v2.1.0 // indirect
56-
github.com/gophercloud/utils/v2 v2.0.0-20240812072210-8ce1fc0f2894 // indirect
55+
github.com/gophercloud/gophercloud/v2 v2.1.1 // indirect
56+
github.com/gophercloud/utils/v2 v2.0.0-20241008104625-7cbb8fd76bb7 // indirect
5757
github.com/grpc-ecosystem/grpc-gateway/v2 v2.20.0 // indirect
5858
github.com/hashicorp/go-version v1.7.0 // indirect
5959
github.com/imdario/mergo v0.3.15 // indirect

hack/tools/go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -155,10 +155,10 @@ github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaU
155155
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
156156
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
157157
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
158-
github.com/gophercloud/gophercloud/v2 v2.1.0 h1:91p6c+uMckXyx39nSIYjDirDBnPVFQq0q1njLNPX+NY=
159-
github.com/gophercloud/gophercloud/v2 v2.1.0/go.mod h1:f2hMRC7Kakbv5vM7wSGHrIPZh6JZR60GVHryJlF/K44=
160-
github.com/gophercloud/utils/v2 v2.0.0-20240812072210-8ce1fc0f2894 h1:KgYK/Mf71IdN7+sq2cVmY8Jtumi26GxahN7nlV0ETBQ=
161-
github.com/gophercloud/utils/v2 v2.0.0-20240812072210-8ce1fc0f2894/go.mod h1:IXS9MKM8YBsr9G2xhnMAuiCOaNxmghQFQGi1p68+No0=
158+
github.com/gophercloud/gophercloud/v2 v2.1.1 h1:KUeVTUoq6um/CijR+hl1JRZ35SXRY62LiYUbgp4qqKw=
159+
github.com/gophercloud/gophercloud/v2 v2.1.1/go.mod h1:f2hMRC7Kakbv5vM7wSGHrIPZh6JZR60GVHryJlF/K44=
160+
github.com/gophercloud/utils/v2 v2.0.0-20241008104625-7cbb8fd76bb7 h1:RDFC3+cVfeCQ8zi/PgaKrPzJyUbwzg3Mi2xCWnAW+g4=
161+
github.com/gophercloud/utils/v2 v2.0.0-20241008104625-7cbb8fd76bb7/go.mod h1:hLzf9Ts2fhebZrZAtq6BpbwXQLEZmUqa7ABJMkg/il8=
162162
github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc=
163163
github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
164164
github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=

main.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import (
4444
"sigs.k8s.io/controller-runtime/pkg/webhook"
4545

4646
orcv1alpha1 "github.com/k-orc/openstack-resource-controller/api/v1alpha1"
47+
orccontrollers "github.com/k-orc/openstack-resource-controller/pkg/controllers"
4748

4849
infrav1alpha1 "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha1"
4950
infrav1alpha6 "sigs.k8s.io/cluster-api-provider-openstack/api/v1alpha6"
@@ -274,10 +275,8 @@ func main() {
274275
// Initialize event recorder.
275276
record.InitFromRecorder(mgr.GetEventRecorderFor("openstack-controller"))
276277

277-
scopeFactory := scope.NewFactory(scopeCacheMaxSize)
278-
279278
setupChecks(mgr)
280-
setupReconcilers(ctx, mgr, caCerts, scopeFactory)
279+
setupReconcilers(ctx, mgr, caCerts)
281280
setupWebhooks(mgr)
282281
// +kubebuilder:scaffold:builder
283282
setupLog.Info("starting manager", "version", version.Get().String())
@@ -299,7 +298,9 @@ func setupChecks(mgr ctrl.Manager) {
299298
}
300299
}
301300

302-
func setupReconcilers(ctx context.Context, mgr ctrl.Manager, caCerts []byte, scopeFactory scope.Factory) {
301+
func setupReconcilers(ctx context.Context, mgr ctrl.Manager, caCerts []byte) {
302+
scopeFactory := scope.NewFactory(scopeCacheMaxSize)
303+
303304
if err := (&controllers.OpenStackClusterReconciler{
304305
Client: mgr.GetClient(),
305306
Recorder: mgr.GetEventRecorderFor("openstackcluster-controller"),
@@ -341,11 +342,14 @@ func setupReconcilers(ctx context.Context, mgr ctrl.Manager, caCerts []byte, sco
341342
setupLog.Error(err, "unable to create controller", "controller", "OpenStackServer")
342343
os.Exit(1)
343344
}
344-
if err := controllers.ImageController(
345+
346+
orcFactory := orccontrollers.NewScopeFactory(scopeCacheMaxSize)
347+
348+
if err := orccontrollers.ImageController(
345349
mgr.GetClient(),
346350
mgr.GetEventRecorderFor("orc-image-controller"),
347351
watchFilterValue,
348-
scopeFactory,
352+
orcFactory,
349353
caCerts,
350354
).SetupWithManager(ctx, mgr, concurrency(openStackMachineConcurrency)); err != nil {
351355
setupLog.Error(err, "unable to create controller", "controller", "ORCImage")

0 commit comments

Comments
 (0)