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

+2-1
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

+5-5
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

+8-8
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

+2-2
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

+4-4
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

+1
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

+2-2
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

+4-4
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=
File renamed without changes.

main.go

+10-6
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")

orc/Makefile

+14-1
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ modules:
5353
cd hack/codegen; go work sync; go mod tidy
5454

5555
.PHONY: generate
56-
generate: modules manifests generate-controller-gen generate-codegen
56+
generate: modules manifests generate-controller-gen generate-codegen generate-go
5757

5858
.PHONY: generate-controller-gen
5959
generate-controller-gen: controller-gen ## Generate code containing DeepCopy, DeepCopyInto, and DeepCopyObject method implementations.
@@ -63,6 +63,10 @@ generate-controller-gen: controller-gen ## Generate code containing DeepCopy, De
6363
generate-codegen: generate-controller-gen ## codegen requires DeepCopy etc
6464
./hack/update-codegen.sh
6565

66+
.PHONY: generate-go
67+
generate-go: mockgen
68+
go generate ./...
69+
6670
.PHONY: verify-generated
6771
verify-generated: generate
6872
@if !(git diff --quiet HEAD); then \
@@ -173,18 +177,22 @@ LOCALBIN ?= $(shell pwd)/bin
173177
$(LOCALBIN):
174178
mkdir -p $(LOCALBIN)
175179

180+
export PATH := $(LOCALBIN):$(PATH)
181+
176182
## Tool Binaries
177183
KUBECTL ?= kubectl
178184
KUSTOMIZE ?= $(LOCALBIN)/kustomize
179185
CONTROLLER_GEN ?= $(LOCALBIN)/controller-gen
180186
ENVTEST ?= $(LOCALBIN)/setup-envtest
181187
GOLANGCI_LINT = $(LOCALBIN)/golangci-lint
188+
MOCKGEN = $(LOCALBIN)/mockgen
182189

183190
## Tool Versions
184191
KUSTOMIZE_VERSION ?= v5.4.2
185192
CONTROLLER_TOOLS_VERSION ?= v0.16.4
186193
ENVTEST_VERSION ?= release-0.18
187194
GOLANGCI_LINT_VERSION ?= v1.61.0
195+
MOCKGEN_VERSION ?= v0.4.0
188196

189197
.PHONY: kustomize
190198
kustomize: $(KUSTOMIZE) ## Download kustomize locally if necessary.
@@ -206,6 +214,11 @@ golangci-lint: $(GOLANGCI_LINT) ## Download golangci-lint locally if necessary.
206214
$(GOLANGCI_LINT): $(LOCALBIN)
207215
$(call go-install-tool,$(GOLANGCI_LINT),github.com/golangci/golangci-lint/cmd/golangci-lint,$(GOLANGCI_LINT_VERSION))
208216

217+
.PHONY: mockgen
218+
mockgen: $(MOCKGEN) ## Download mockgen locally if necessary.
219+
$(MOCKGEN): $(LOCALBIN)
220+
$(call go-install-tool,$(MOCKGEN),go.uber.org/mock/mockgen,$(MOCKGEN_VERSION))
221+
209222
# go-install-tool will 'go install' any package with custom target and name of binary, if it doesn't exist
210223
# $1 - target path with name of binary
211224
# $2 - package url which can be installed

orc/config/rbac/role.yaml

+21-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,26 @@
1+
---
12
apiVersion: rbac.authorization.k8s.io/v1
23
kind: ClusterRole
34
metadata:
4-
labels:
5-
app.kubernetes.io/name: orc
6-
app.kubernetes.io/managed-by: kustomize
75
name: manager-role
86
rules:
9-
- apiGroups: [""]
10-
resources: ["pods"]
11-
verbs: ["get", "list", "watch"]
7+
- apiGroups:
8+
- openstack.k-orc.cloud
9+
resources:
10+
- images
11+
verbs:
12+
- create
13+
- delete
14+
- get
15+
- list
16+
- patch
17+
- update
18+
- watch
19+
- apiGroups:
20+
- openstack.k-orc.cloud
21+
resources:
22+
- images/status
23+
verbs:
24+
- get
25+
- patch
26+
- update

orc/go.mod

+13-7
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,23 @@ module github.com/k-orc/openstack-resource-controller
33
go 1.22.0
44

55
require (
6+
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc
67
github.com/go-logr/logr v1.4.2
8+
github.com/google/go-cmp v0.6.0
9+
github.com/gophercloud/gophercloud/v2 v2.1.1
10+
github.com/gophercloud/utils/v2 v2.0.0-20241008104625-7cbb8fd76bb7
711
github.com/onsi/ginkgo/v2 v2.20.0
812
github.com/onsi/gomega v1.34.1
13+
github.com/ulikunitz/xz v0.5.12
14+
go.uber.org/mock v0.4.0
915
k8s.io/api v0.30.3
1016
k8s.io/apimachinery v0.30.3
1117
k8s.io/client-go v0.30.3
18+
k8s.io/klog/v2 v2.130.1
19+
k8s.io/utils v0.0.0-20231127182322-b307cd553661
1220
sigs.k8s.io/controller-runtime v0.18.5
1321
sigs.k8s.io/structured-merge-diff/v4 v4.4.1
22+
sigs.k8s.io/yaml v1.4.0
1423
)
1524

1625
require (
@@ -19,7 +28,6 @@ require (
1928
github.com/blang/semver/v4 v4.0.0 // indirect
2029
github.com/cenkalti/backoff/v4 v4.2.1 // indirect
2130
github.com/cespare/xxhash/v2 v2.2.0 // indirect
22-
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
2331
github.com/emicklei/go-restful/v3 v3.12.0 // indirect
2432
github.com/evanphx/json-patch v5.7.0+incompatible // indirect
2533
github.com/evanphx/json-patch/v5 v5.9.0 // indirect
@@ -31,12 +39,12 @@ require (
3139
github.com/go-openapi/jsonreference v0.20.2 // indirect
3240
github.com/go-openapi/swag v0.22.4 // indirect
3341
github.com/go-task/slim-sprig/v3 v3.0.0 // indirect
42+
github.com/gofrs/uuid/v5 v5.3.0 // indirect
3443
github.com/gogo/protobuf v1.3.2 // indirect
3544
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
3645
github.com/golang/protobuf v1.5.4 // indirect
3746
github.com/google/cel-go v0.17.8 // indirect
3847
github.com/google/gnostic-models v0.6.8 // indirect
39-
github.com/google/go-cmp v0.6.0 // indirect
4048
github.com/google/gofuzz v1.2.0 // indirect
4149
github.com/google/pprof v0.0.0-20240727154555-813a5fbdbec8 // indirect
4250
github.com/google/uuid v1.4.0 // indirect
@@ -46,6 +54,7 @@ require (
4654
github.com/json-iterator/go v1.1.12 // indirect
4755
github.com/mailru/easyjson v0.7.7 // indirect
4856
github.com/matttproud/golang_protobuf_extensions/v2 v2.0.0 // indirect
57+
github.com/mitchellh/go-homedir v1.1.0 // indirect
4958
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
5059
github.com/modern-go/reflect2 v1.0.2 // indirect
5160
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
@@ -72,9 +81,9 @@ require (
7281
golang.org/x/net v0.28.0 // indirect
7382
golang.org/x/oauth2 v0.18.0 // indirect
7483
golang.org/x/sync v0.8.0 // indirect
75-
golang.org/x/sys v0.23.0 // indirect
84+
golang.org/x/sys v0.26.0 // indirect
7685
golang.org/x/term v0.23.0 // indirect
77-
golang.org/x/text v0.17.0 // indirect
86+
golang.org/x/text v0.19.0 // indirect
7887
golang.org/x/time v0.5.0 // indirect
7988
golang.org/x/tools v0.24.0 // indirect
8089
gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
@@ -89,10 +98,7 @@ require (
8998
k8s.io/apiextensions-apiserver v0.30.1 // indirect
9099
k8s.io/apiserver v0.30.1 // indirect
91100
k8s.io/component-base v0.30.1 // indirect
92-
k8s.io/klog/v2 v2.130.1 // indirect
93101
k8s.io/kube-openapi v0.0.0-20240228011516-70dd3763d340 // indirect
94-
k8s.io/utils v0.0.0-20231127182322-b307cd553661 // indirect
95102
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.29.0 // indirect
96103
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
97-
sigs.k8s.io/yaml v1.4.0 // indirect
98104
)

0 commit comments

Comments
 (0)