Skip to content

Commit f597780

Browse files
authored
Chore: Migrate to Gophercloud v2 (gardener#260)
* remove deprecated unused config.BuildNameToCertificate() * Migrate to gophercloud v2 * Fix servers SchedulerHintOpts instead of volumes * Generic function for find single by name * Make tidy * Fix return correct error type * Remove TODO * Update gardener * Update mock dependency * Make tidy
1 parent 652209d commit f597780

20 files changed

Lines changed: 721 additions & 539 deletions

File tree

go.mod

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,14 +8,12 @@ require (
88
github.com/ahmetb/gen-crd-api-reference-docs v0.3.0
99
github.com/gardener/gardener v1.119.0
1010
github.com/gardener/machine-controller-manager v0.58.0
11-
github.com/gophercloud/gophercloud v1.14.1
12-
github.com/gophercloud/utils v0.0.0-20230523080330-de873b9cf00d
11+
github.com/gophercloud/gophercloud/v2 v2.7.0
1312
github.com/onsi/ginkgo/v2 v2.23.4
1413
github.com/onsi/gomega v1.37.0
1514
github.com/prometheus/client_golang v1.22.0
1615
github.com/spf13/pflag v1.0.6
17-
go.uber.org/mock v0.5.1
18-
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616
16+
go.uber.org/mock v0.5.2
1917
k8s.io/api v0.32.4
2018
k8s.io/apimachinery v0.32.4
2119
k8s.io/code-generator v0.32.4
@@ -50,15 +48,13 @@ require (
5048
github.com/google/gofuzz v1.2.0 // indirect
5149
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 // indirect
5250
github.com/google/uuid v1.6.0 // indirect
53-
github.com/hashicorp/go-uuid v1.0.3 // indirect
5451
github.com/inconshreveable/mousetrap v1.1.0 // indirect
5552
github.com/ironcore-dev/vgopath v0.1.5 // indirect
5653
github.com/josharian/intern v1.0.0 // indirect
5754
github.com/json-iterator/go v1.1.12 // indirect
5855
github.com/mailru/easyjson v0.9.0 // indirect
5956
github.com/mattn/go-colorable v0.1.13 // indirect
6057
github.com/mattn/go-isatty v0.0.20 // indirect
61-
github.com/mitchellh/go-homedir v1.1.0 // indirect
6258
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
6359
github.com/modern-go/reflect2 v1.0.2 // indirect
6460
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect

go.sum

Lines changed: 4 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,8 @@ github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J
6565
github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA=
6666
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
6767
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
68-
github.com/gophercloud/gophercloud v1.3.0/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM=
69-
github.com/gophercloud/gophercloud v1.14.1 h1:DTCNaTVGl8/cFu58O1JwWgis9gtISAFONqpMKNg/Vpw=
70-
github.com/gophercloud/gophercloud v1.14.1/go.mod h1:aAVqcocTSXh2vYFZ1JTvx4EQmfgzxRcNupUfxZbBNDM=
71-
github.com/gophercloud/utils v0.0.0-20230523080330-de873b9cf00d h1:6Gvua77nKyAiZQpu0N3AsamGu1L6Mlnhp3tAtDcqwvc=
72-
github.com/gophercloud/utils v0.0.0-20230523080330-de873b9cf00d/go.mod h1:VSalo4adEk+3sNkmVJLnhHoOyOYYS8sTWLG4mv5BKto=
73-
github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8=
74-
github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro=
68+
github.com/gophercloud/gophercloud/v2 v2.7.0 h1:o0m4kgVcPgHlcXiWAjoVxGd8QCmvM5VU+YM71pFbn0E=
69+
github.com/gophercloud/gophercloud/v2 v2.7.0/go.mod h1:Ki/ILhYZr/5EPebrPL9Ej+tUg4lqx71/YH2JWVeU+Qk=
7570
github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
7671
github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
7772
github.com/ironcore-dev/vgopath v0.1.5 h1:+I46zEFfbmNIGIGylqedT2bMXw8V7yVP16GJkG64gAw=
@@ -100,8 +95,6 @@ github.com/mattn/go-colorable v0.1.13/go.mod h1:7S9/ev0klgBDR4GtXTXX8a3vIGJpMovk
10095
github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM=
10196
github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY=
10297
github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y=
103-
github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
104-
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
10598
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
10699
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
107100
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -157,7 +150,6 @@ github.com/x448/float16 v0.8.4 h1:qLwI1I70+NjRFUR3zs1JPUCgaCXSh3SW62uAKT1mSBM=
157150
github.com/x448/float16 v0.8.4/go.mod h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
158151
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
159152
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
160-
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
161153
go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U=
162154
go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg=
163155
go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM=
@@ -166,75 +158,52 @@ go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs=
166158
go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8=
167159
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
168160
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
169-
go.uber.org/mock v0.5.1 h1:ASgazW/qBmR+A32MYFDB6E2POoTgOwT509VP0CT/fjs=
170-
go.uber.org/mock v0.5.1/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM=
161+
go.uber.org/mock v0.5.2 h1:LbtPTcP8A5k9WPXj54PPPbjcI4Y6lhyOZXn+VS7wNko=
162+
go.uber.org/mock v0.5.2/go.mod h1:wLlUxC2vVTPTaE3UD51E0BGOAElKrILxhVSDYQLld5o=
171163
go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0=
172164
go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y=
173165
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
174166
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
175167
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
176168
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
177169
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
178-
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
179-
golang.org/x/crypto v0.0.0-20220829220503-c86fa9a7ed90/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
180-
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616 h1:VLliZ0d+/avPrXXH+OakdXhpJuEoBZuwh1m2j7U6Iug=
181-
golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
182-
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
183170
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
184171
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
185-
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
186172
golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=
187173
golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
188174
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
189175
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
190176
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
191177
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
192-
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
193-
golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
194-
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
195178
golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY=
196179
golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds=
197180
golang.org/x/oauth2 v0.28.0 h1:CrgCKl8PPAVtLnU3c+EDw6x11699EWlsDeWNWKdIOkc=
198181
golang.org/x/oauth2 v0.28.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8=
199182
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
200183
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
201184
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
202-
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
203185
golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
204186
golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
205187
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
206188
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
207189
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
208-
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
209-
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
210-
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
211-
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
212-
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
213190
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
214-
golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
215191
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
216192
golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
217193
golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
218-
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
219-
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
220194
golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg=
221195
golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ=
222196
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
223197
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
224-
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
225-
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
226-
golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
227198
golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4=
228199
golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA=
229200
golang.org/x/time v0.11.0 h1:/bpjEDfN9tkoN/ryeYHnv5hcMlc8ncjMcM4XBk5NWV0=
230201
golang.org/x/time v0.11.0/go.mod h1:CDIdPxbZBQxdj6cxyCIdrNogrJKMJ7pr37NYpMcMDSg=
231202
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
232203
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
233-
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
234204
golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
235205
golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
236206
golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
237-
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
238207
golang.org/x/tools v0.33.0 h1:4qz2S3zmRxbGIhDIAgjxvFutSvH5EfnsYrRBj0UI0bc=
239208
golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI=
240209
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

hack/tools.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import (
1515
_ "github.com/gardener/gardener/hack/api-reference/template"
1616
_ "github.com/onsi/ginkgo/v2"
1717
_ "github.com/onsi/gomega"
18-
_ "golang.org/x/lint/golint"
1918
_ "k8s.io/code-generator"
2019
_ "sigs.k8s.io/controller-runtime" // Needed to work around strange behaviour in check-generate. Without this explicit dependenc this package will always fail the check, either needing to be removed or added (depending on whether it is already present or not).
2120
)

pkg/client/cinder.go

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@
55
package client
66

77
import (
8+
"context"
89
"fmt"
910

10-
"github.com/gophercloud/gophercloud"
11-
"github.com/gophercloud/gophercloud/openstack"
12-
"github.com/gophercloud/gophercloud/openstack/blockstorage/v3/volumes"
13-
utilGroups "github.com/gophercloud/utils/openstack/blockstorage/v3/volumes"
11+
"github.com/gophercloud/gophercloud/v2"
12+
"github.com/gophercloud/gophercloud/v2/openstack"
13+
"github.com/gophercloud/gophercloud/v2/openstack/blockstorage/v3/volumes"
1414
)
1515

1616
const (
@@ -47,8 +47,8 @@ func newCinderV3(providerClient *gophercloud.ProviderClient, eo gophercloud.Endp
4747
}
4848

4949
// CreateVolume creates a Cinder volume.
50-
func (c *cinderV3) CreateVolume(opts volumes.CreateOptsBuilder) (*volumes.Volume, error) {
51-
v, err := volumes.Create(c.serviceClient, opts).Extract()
50+
func (c *cinderV3) CreateVolume(ctx context.Context, opts volumes.CreateOptsBuilder, hintOpts volumes.SchedulerHintOptsBuilder) (*volumes.Volume, error) {
51+
v, err := volumes.Create(ctx, c.serviceClient, opts, hintOpts).Extract()
5252
onCall(cinderService)
5353
if err != nil {
5454
onFailure(cinderService)
@@ -58,13 +58,13 @@ func (c *cinderV3) CreateVolume(opts volumes.CreateOptsBuilder) (*volumes.Volume
5858
}
5959

6060
// GetVolume retrieves information about a volume.
61-
func (c *cinderV3) GetVolume(id string) (*volumes.Volume, error) {
62-
return volumes.Get(c.serviceClient, id).Extract()
61+
func (c *cinderV3) GetVolume(ctx context.Context, id string) (*volumes.Volume, error) {
62+
return volumes.Get(ctx, c.serviceClient, id).Extract()
6363
}
6464

6565
// DeleteVolume deletes a volume
66-
func (c *cinderV3) DeleteVolume(id string) error {
67-
err := volumes.Delete(c.serviceClient, id, volumes.DeleteOpts{}).ExtractErr()
66+
func (c *cinderV3) DeleteVolume(ctx context.Context, id string) error {
67+
err := volumes.Delete(ctx, c.serviceClient, id, volumes.DeleteOpts{}).ExtractErr()
6868
onCall(cinderService)
6969
if err != nil {
7070
onFailure(cinderService)
@@ -74,20 +74,33 @@ func (c *cinderV3) DeleteVolume(id string) error {
7474
}
7575

7676
// VolumeIDFromName resolves the given volume name to a unique ID.
77-
func (c *cinderV3) VolumeIDFromName(name string) (string, error) {
78-
id, err := utilGroups.IDFromName(c.serviceClient, name)
77+
func (c *cinderV3) VolumeIDFromName(ctx context.Context, name string) (string, error) {
78+
listOpts := volumes.ListOpts{
79+
Name: name,
80+
}
7981

80-
onCall(cinderService)
81-
if err != nil {
82-
onFailure(cinderService)
83-
return "", err
82+
listFunc := func(ctx context.Context) ([]volumes.Volume, error) {
83+
allPages, err := volumes.List(c.serviceClient, listOpts).AllPages(ctx)
84+
onCall(cinderService)
85+
if err != nil {
86+
onFailure(cinderService)
87+
return nil, err
88+
}
89+
return volumes.ExtractVolumes(allPages)
8490
}
85-
return id, nil
91+
92+
getNameFunc := func(volume volumes.Volume) string {
93+
return volume.Name
94+
}
95+
96+
volume, err := findSingleByName(ctx, listFunc, getNameFunc, name, "volume")
97+
98+
return volume.ID, err
8699
}
87100

88101
// ListVolumes lists all volumes
89-
func (c *cinderV3) ListVolumes(opts volumes.ListOptsBuilder) ([]volumes.Volume, error) {
90-
vols, err := volumes.List(c.serviceClient, opts).AllPages()
102+
func (c *cinderV3) ListVolumes(ctx context.Context, opts volumes.ListOptsBuilder) ([]volumes.Volume, error) {
103+
vols, err := volumes.List(c.serviceClient, opts).AllPages(ctx)
91104
onCall(cinderService)
92105
if err != nil {
93106
onFailure(cinderService)

pkg/client/client_suite_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
// SPDX-FileCopyrightText: 2020 SAP SE or an SAP affiliate company and Gardener contributors
2+
//
3+
// SPDX-License-Identifier: Apache-2.0
4+
5+
package client
6+
7+
import (
8+
"testing"
9+
10+
. "github.com/onsi/ginkgo/v2"
11+
. "github.com/onsi/gomega"
12+
)
13+
14+
func TestValidation(t *testing.T) {
15+
RegisterFailHandler(Fail)
16+
RunSpecs(t, "Client Suite")
17+
}

pkg/client/errors.go

Lines changed: 9 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ package client
66

77
import (
88
"errors"
9+
"net/http"
910

10-
"github.com/gophercloud/gophercloud"
11+
"github.com/gophercloud/gophercloud/v2"
1112
)
1213

1314
// IsNotFoundError checks if an error returned by OpenStack service calls is caused by HTTP 404 status code.
@@ -16,12 +17,7 @@ func IsNotFoundError(err error) bool {
1617
return false
1718
}
1819

19-
if errors.As(err, &gophercloud.ErrDefault404{}) {
20-
return true
21-
}
22-
23-
var e gophercloud.Err404er
24-
if errors.As(err, &e) {
20+
if gophercloud.ResponseCodeIs(err, http.StatusNotFound) {
2521
return true
2622
}
2723

@@ -32,30 +28,20 @@ func IsNotFoundError(err error) bool {
3228
return false
3329
}
3430

35-
// IsUnauthenticated checks if an error returned by OpenStack service calls is caused by HTTP 401 status code.
36-
func IsUnauthenticated(err error) bool {
31+
// IsUnauthorized checks if an error returned by OpenStack service calls is caused by HTTP 401 status code.
32+
func IsUnauthorized(err error) bool {
3733
if err == nil {
3834
return false
3935
}
4036

41-
if errors.As(err, &gophercloud.ErrDefault401{}) {
42-
return true
43-
}
44-
45-
var e gophercloud.Err401er
46-
return errors.As(err, &e)
37+
return gophercloud.ResponseCodeIs(err, http.StatusUnauthorized)
4738
}
4839

49-
// IsUnauthorized checks if an error returned by OpenStack service calls is caused by HTTP 403 status code.
50-
func IsUnauthorized(err error) bool {
40+
// IsForbidden checks if an error returned by OpenStack service calls is caused by HTTP 403 status code.
41+
func IsForbidden(err error) bool {
5142
if err == nil {
5243
return false
5344
}
5445

55-
if errors.As(err, &gophercloud.ErrDefault403{}) {
56-
return true
57-
}
58-
59-
var e gophercloud.Err403er
60-
return errors.As(err, &e)
46+
return gophercloud.ResponseCodeIs(err, http.StatusForbidden)
6147
}

0 commit comments

Comments
 (0)