Skip to content

Commit fdc5f49

Browse files
authored
Merge pull request #1813 from shiftstack/better-conversion
🌱 Improve method signatures of conversion functions
2 parents 3d09742 + 4519da9 commit fdc5f49

File tree

3 files changed

+170
-185
lines changed

3 files changed

+170
-185
lines changed

api/v1alpha6/conversion.go

Lines changed: 62 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -103,51 +103,50 @@ func restorev1alpha6ClusterSpec(previous *OpenStackClusterSpec, dst *OpenStackCl
103103
var _ ctrlconversion.Convertible = &OpenStackCluster{}
104104

105105
var v1alpha6OpenStackClusterRestorer = conversion.RestorerFor[*OpenStackCluster]{
106-
"spec": conversion.HashedFieldRestorer[*OpenStackCluster, OpenStackClusterSpec]{
107-
GetField: func(c *OpenStackCluster) *OpenStackClusterSpec {
106+
"spec": conversion.HashedFieldRestorer(
107+
func(c *OpenStackCluster) *OpenStackClusterSpec {
108108
return &c.Spec
109109
},
110-
RestoreField: restorev1alpha6ClusterSpec,
111-
},
112-
"status": conversion.HashedFieldRestorer[*OpenStackCluster, OpenStackClusterStatus]{
113-
GetField: func(c *OpenStackCluster) *OpenStackClusterStatus {
110+
restorev1alpha6ClusterSpec,
111+
),
112+
"status": conversion.HashedFieldRestorer(
113+
func(c *OpenStackCluster) *OpenStackClusterStatus {
114114
return &c.Status
115115
},
116-
RestoreField: restorev1alpha6ClusterStatus,
117-
},
116+
restorev1alpha6ClusterStatus,
117+
),
118118
}
119119

120120
var v1alpha8OpenStackClusterRestorer = conversion.RestorerFor[*infrav1.OpenStackCluster]{
121-
"router": conversion.UnconditionalFieldRestorer[*infrav1.OpenStackCluster, *infrav1.RouterFilter]{
122-
GetField: func(c *infrav1.OpenStackCluster) **infrav1.RouterFilter {
121+
"router": conversion.UnconditionalFieldRestorer(
122+
func(c *infrav1.OpenStackCluster) **infrav1.RouterFilter {
123123
return &c.Spec.Router
124124
},
125-
},
126-
"networkMtu": conversion.UnconditionalFieldRestorer[*infrav1.OpenStackCluster, int]{
127-
GetField: func(c *infrav1.OpenStackCluster) *int {
125+
),
126+
"networkMtu": conversion.UnconditionalFieldRestorer(
127+
func(c *infrav1.OpenStackCluster) *int {
128128
return &c.Spec.NetworkMTU
129129
},
130-
},
131-
"bastion": conversion.HashedFieldRestorer[*infrav1.OpenStackCluster, *infrav1.Bastion]{
132-
GetField: func(c *infrav1.OpenStackCluster) **infrav1.Bastion {
130+
),
131+
"bastion": conversion.HashedFieldRestorer(
132+
func(c *infrav1.OpenStackCluster) **infrav1.Bastion {
133133
return &c.Spec.Bastion
134134
},
135-
RestoreField: restorev1alpha8Bastion,
136-
},
137-
"status": conversion.HashedFieldRestorer[*infrav1.OpenStackCluster, infrav1.OpenStackClusterStatus]{
138-
GetField: func(c *infrav1.OpenStackCluster) *infrav1.OpenStackClusterStatus {
135+
restorev1alpha8Bastion,
136+
),
137+
"status": conversion.HashedFieldRestorer(
138+
func(c *infrav1.OpenStackCluster) *infrav1.OpenStackClusterStatus {
139139
return &c.Status
140140
},
141-
RestoreField: restorev1alpha8ClusterStatus,
142-
},
141+
restorev1alpha8ClusterStatus,
142+
),
143143
}
144144

145145
func (r *OpenStackCluster) ConvertTo(dstRaw ctrlconversion.Hub) error {
146146
dst := dstRaw.(*infrav1.OpenStackCluster)
147147

148-
compare := &OpenStackCluster{}
149148
return conversion.ConvertAndRestore(
150-
r, dst, compare,
149+
r, dst,
151150
Convert_v1alpha6_OpenStackCluster_To_v1alpha8_OpenStackCluster, Convert_v1alpha8_OpenStackCluster_To_v1alpha6_OpenStackCluster,
152151
v1alpha6OpenStackClusterRestorer, v1alpha8OpenStackClusterRestorer,
153152
)
@@ -156,9 +155,8 @@ func (r *OpenStackCluster) ConvertTo(dstRaw ctrlconversion.Hub) error {
156155
func (r *OpenStackCluster) ConvertFrom(srcRaw ctrlconversion.Hub) error {
157156
src := srcRaw.(*infrav1.OpenStackCluster)
158157

159-
compare := &infrav1.OpenStackCluster{}
160158
return conversion.ConvertAndRestore(
161-
src, r, compare,
159+
src, r,
162160
Convert_v1alpha8_OpenStackCluster_To_v1alpha6_OpenStackCluster, Convert_v1alpha6_OpenStackCluster_To_v1alpha8_OpenStackCluster,
163161
v1alpha8OpenStackClusterRestorer, v1alpha6OpenStackClusterRestorer,
164162
)
@@ -181,39 +179,38 @@ func (r *OpenStackClusterList) ConvertFrom(srcRaw ctrlconversion.Hub) error {
181179
var _ ctrlconversion.Convertible = &OpenStackClusterTemplate{}
182180

183181
var v1alpha6OpenStackClusterTemplateRestorer = conversion.RestorerFor[*OpenStackClusterTemplate]{
184-
"spec": conversion.HashedFieldRestorer[*OpenStackClusterTemplate, OpenStackClusterSpec]{
185-
GetField: func(c *OpenStackClusterTemplate) *OpenStackClusterSpec {
182+
"spec": conversion.HashedFieldRestorer(
183+
func(c *OpenStackClusterTemplate) *OpenStackClusterSpec {
186184
return &c.Spec.Template.Spec
187185
},
188-
RestoreField: restorev1alpha6ClusterSpec,
189-
},
186+
restorev1alpha6ClusterSpec,
187+
),
190188
}
191189

192190
var v1alpha8OpenStackClusterTemplateRestorer = conversion.RestorerFor[*infrav1.OpenStackClusterTemplate]{
193-
"router": conversion.UnconditionalFieldRestorer[*infrav1.OpenStackClusterTemplate, *infrav1.RouterFilter]{
194-
GetField: func(c *infrav1.OpenStackClusterTemplate) **infrav1.RouterFilter {
191+
"router": conversion.UnconditionalFieldRestorer(
192+
func(c *infrav1.OpenStackClusterTemplate) **infrav1.RouterFilter {
195193
return &c.Spec.Template.Spec.Router
196194
},
197-
},
198-
"networkMtu": conversion.UnconditionalFieldRestorer[*infrav1.OpenStackClusterTemplate, int]{
199-
GetField: func(c *infrav1.OpenStackClusterTemplate) *int {
195+
),
196+
"networkMtu": conversion.UnconditionalFieldRestorer(
197+
func(c *infrav1.OpenStackClusterTemplate) *int {
200198
return &c.Spec.Template.Spec.NetworkMTU
201199
},
202-
},
203-
"bastion": conversion.HashedFieldRestorer[*infrav1.OpenStackClusterTemplate, *infrav1.Bastion]{
204-
GetField: func(c *infrav1.OpenStackClusterTemplate) **infrav1.Bastion {
200+
),
201+
"bastion": conversion.HashedFieldRestorer(
202+
func(c *infrav1.OpenStackClusterTemplate) **infrav1.Bastion {
205203
return &c.Spec.Template.Spec.Bastion
206204
},
207-
RestoreField: restorev1alpha8Bastion,
208-
},
205+
restorev1alpha8Bastion,
206+
),
209207
}
210208

211209
func (r *OpenStackClusterTemplate) ConvertTo(dstRaw ctrlconversion.Hub) error {
212210
dst := dstRaw.(*infrav1.OpenStackClusterTemplate)
213211

214-
compare := &OpenStackClusterTemplate{}
215212
return conversion.ConvertAndRestore(
216-
r, dst, compare,
213+
r, dst,
217214
Convert_v1alpha6_OpenStackClusterTemplate_To_v1alpha8_OpenStackClusterTemplate, Convert_v1alpha8_OpenStackClusterTemplate_To_v1alpha6_OpenStackClusterTemplate,
218215
v1alpha6OpenStackClusterTemplateRestorer, v1alpha8OpenStackClusterTemplateRestorer,
219216
)
@@ -222,9 +219,8 @@ func (r *OpenStackClusterTemplate) ConvertTo(dstRaw ctrlconversion.Hub) error {
222219
func (r *OpenStackClusterTemplate) ConvertFrom(srcRaw ctrlconversion.Hub) error {
223220
src := srcRaw.(*infrav1.OpenStackClusterTemplate)
224221

225-
compare := &infrav1.OpenStackClusterTemplate{}
226222
return conversion.ConvertAndRestore(
227-
src, r, compare,
223+
src, r,
228224
Convert_v1alpha8_OpenStackClusterTemplate_To_v1alpha6_OpenStackClusterTemplate, Convert_v1alpha6_OpenStackClusterTemplate_To_v1alpha8_OpenStackClusterTemplate,
229225
v1alpha8OpenStackClusterTemplateRestorer, v1alpha6OpenStackClusterTemplateRestorer,
230226
)
@@ -233,11 +229,12 @@ func (r *OpenStackClusterTemplate) ConvertFrom(srcRaw ctrlconversion.Hub) error
233229
var _ ctrlconversion.Convertible = &OpenStackMachine{}
234230

235231
var v1alpha6OpenStackMachineRestorer = conversion.RestorerFor[*OpenStackMachine]{
236-
"spec": conversion.HashedFieldRestorer[*OpenStackMachine, OpenStackMachineSpec]{
237-
GetField: func(c *OpenStackMachine) *OpenStackMachineSpec {
232+
"spec": conversion.HashedFieldRestorer(
233+
func(c *OpenStackMachine) *OpenStackMachineSpec {
238234
return &c.Spec
239235
},
240-
FilterField: func(s *OpenStackMachineSpec) *OpenStackMachineSpec {
236+
restorev1alpha6MachineSpec,
237+
conversion.HashedFilterField[*OpenStackMachine, OpenStackMachineSpec](func(s *OpenStackMachineSpec) *OpenStackMachineSpec {
241238
// Despite being spec fields, ProviderID and InstanceID
242239
// are both set by the machine controller. If these are
243240
// the only changes to the spec, we still want to
@@ -249,26 +246,24 @@ var v1alpha6OpenStackMachineRestorer = conversion.RestorerFor[*OpenStackMachine]
249246
return &f
250247
}
251248
return s
252-
},
253-
RestoreField: restorev1alpha6MachineSpec,
254-
},
249+
}),
250+
),
255251
}
256252

257253
var v1alpha8OpenStackMachineRestorer = conversion.RestorerFor[*infrav1.OpenStackMachine]{
258-
"spec": conversion.HashedFieldRestorer[*infrav1.OpenStackMachine, infrav1.OpenStackMachineSpec]{
259-
GetField: func(c *infrav1.OpenStackMachine) *infrav1.OpenStackMachineSpec {
254+
"spec": conversion.HashedFieldRestorer(
255+
func(c *infrav1.OpenStackMachine) *infrav1.OpenStackMachineSpec {
260256
return &c.Spec
261257
},
262-
RestoreField: restorev1alpha8MachineSpec,
263-
},
258+
restorev1alpha8MachineSpec,
259+
),
264260
}
265261

266262
func (r *OpenStackMachine) ConvertTo(dstRaw ctrlconversion.Hub) error {
267263
dst := dstRaw.(*infrav1.OpenStackMachine)
268264

269-
compare := &OpenStackMachine{}
270265
return conversion.ConvertAndRestore(
271-
r, dst, compare,
266+
r, dst,
272267
Convert_v1alpha6_OpenStackMachine_To_v1alpha8_OpenStackMachine, Convert_v1alpha8_OpenStackMachine_To_v1alpha6_OpenStackMachine,
273268
v1alpha6OpenStackMachineRestorer, v1alpha8OpenStackMachineRestorer,
274269
)
@@ -277,9 +272,8 @@ func (r *OpenStackMachine) ConvertTo(dstRaw ctrlconversion.Hub) error {
277272
func (r *OpenStackMachine) ConvertFrom(srcRaw ctrlconversion.Hub) error {
278273
src := srcRaw.(*infrav1.OpenStackMachine)
279274

280-
compare := &infrav1.OpenStackMachine{}
281275
return conversion.ConvertAndRestore(
282-
src, r, compare,
276+
src, r,
283277
Convert_v1alpha8_OpenStackMachine_To_v1alpha6_OpenStackMachine, Convert_v1alpha6_OpenStackMachine_To_v1alpha8_OpenStackMachine,
284278
v1alpha8OpenStackMachineRestorer, v1alpha6OpenStackMachineRestorer,
285279
)
@@ -300,29 +294,28 @@ func (r *OpenStackMachineList) ConvertFrom(srcRaw ctrlconversion.Hub) error {
300294
var _ ctrlconversion.Convertible = &OpenStackMachineTemplate{}
301295

302296
var v1alpha6OpenStackMachineTemplateRestorer = conversion.RestorerFor[*OpenStackMachineTemplate]{
303-
"spec": conversion.HashedFieldRestorer[*OpenStackMachineTemplate, OpenStackMachineSpec]{
304-
GetField: func(c *OpenStackMachineTemplate) *OpenStackMachineSpec {
297+
"spec": conversion.HashedFieldRestorer(
298+
func(c *OpenStackMachineTemplate) *OpenStackMachineSpec {
305299
return &c.Spec.Template.Spec
306300
},
307-
RestoreField: restorev1alpha6MachineSpec,
308-
},
301+
restorev1alpha6MachineSpec,
302+
),
309303
}
310304

311305
var v1alpha8OpenStackMachineTemplateRestorer = conversion.RestorerFor[*infrav1.OpenStackMachineTemplate]{
312-
"spec": conversion.HashedFieldRestorer[*infrav1.OpenStackMachineTemplate, infrav1.OpenStackMachineSpec]{
313-
GetField: func(c *infrav1.OpenStackMachineTemplate) *infrav1.OpenStackMachineSpec {
306+
"spec": conversion.HashedFieldRestorer(
307+
func(c *infrav1.OpenStackMachineTemplate) *infrav1.OpenStackMachineSpec {
314308
return &c.Spec.Template.Spec
315309
},
316-
RestoreField: restorev1alpha8MachineSpec,
317-
},
310+
restorev1alpha8MachineSpec,
311+
),
318312
}
319313

320314
func (r *OpenStackMachineTemplate) ConvertTo(dstRaw ctrlconversion.Hub) error {
321315
dst := dstRaw.(*infrav1.OpenStackMachineTemplate)
322316

323-
compare := &OpenStackMachineTemplate{}
324317
return conversion.ConvertAndRestore(
325-
r, dst, compare,
318+
r, dst,
326319
Convert_v1alpha6_OpenStackMachineTemplate_To_v1alpha8_OpenStackMachineTemplate, Convert_v1alpha8_OpenStackMachineTemplate_To_v1alpha6_OpenStackMachineTemplate,
327320
v1alpha6OpenStackMachineTemplateRestorer, v1alpha8OpenStackMachineTemplateRestorer,
328321
)
@@ -331,9 +324,8 @@ func (r *OpenStackMachineTemplate) ConvertTo(dstRaw ctrlconversion.Hub) error {
331324
func (r *OpenStackMachineTemplate) ConvertFrom(srcRaw ctrlconversion.Hub) error {
332325
src := srcRaw.(*infrav1.OpenStackMachineTemplate)
333326

334-
compare := &infrav1.OpenStackMachineTemplate{}
335327
return conversion.ConvertAndRestore(
336-
src, r, compare,
328+
src, r,
337329
Convert_v1alpha8_OpenStackMachineTemplate_To_v1alpha6_OpenStackMachineTemplate, Convert_v1alpha6_OpenStackMachineTemplate_To_v1alpha8_OpenStackMachineTemplate,
338330
v1alpha8OpenStackMachineTemplateRestorer, v1alpha6OpenStackMachineTemplateRestorer,
339331
)

0 commit comments

Comments
 (0)