@@ -88,10 +88,36 @@ func restorev1alpha6MachineSpec(previous *OpenStackMachineSpec, dst *OpenStackMa
88
88
dst .Subnet = previous .Subnet
89
89
}
90
90
91
+ func restorev1alpha7MachineSpec (previous * infrav1.OpenStackMachineSpec , dst * infrav1.OpenStackMachineSpec ) {
92
+ // PropagateUplinkStatus has been added in v1alpha7.
93
+ // We restore the whole Ports since they are anyway immutable.
94
+ dst .Ports = previous .Ports
95
+ }
96
+
91
97
func restorev1alpha7ClusterSpec (previous * infrav1.OpenStackClusterSpec , dst * infrav1.OpenStackClusterSpec ) {
92
98
// APIServerLoadBalancer.Provider is new in v1alpha7
93
99
dst .APIServerLoadBalancer .Provider = previous .APIServerLoadBalancer .Provider
94
100
dst .Router = previous .Router
101
+ // PropagateUplinkStatus has been added in v1alpha7.
102
+ // We restore the whole Ports since they are anyway immutable.
103
+ if previous .Bastion != nil && previous .Bastion .Instance .Ports != nil {
104
+ dst .Bastion .Instance .Ports = previous .Bastion .Instance .Ports
105
+ }
106
+ }
107
+
108
+ func restorev1alpha7ClusterStatus (previous * infrav1.OpenStackClusterStatus , dst * infrav1.OpenStackClusterStatus ) {
109
+ // PropagateUplinkStatus has been added in v1alpha7
110
+ if previous .ExternalNetwork != nil && previous .ExternalNetwork .PortOpts != nil {
111
+ dst .ExternalNetwork .PortOpts .PropagateUplinkStatus = previous .ExternalNetwork .PortOpts .PropagateUplinkStatus
112
+ }
113
+ if previous .Network != nil && previous .Network .PortOpts != nil {
114
+ dst .Network .PortOpts .PropagateUplinkStatus = previous .Network .PortOpts .PropagateUplinkStatus
115
+ }
116
+ // PropagateUplinkStatus has been added in v1alpha7.
117
+ // We restore the whole Networks since they are anyway immutable.
118
+ if previous .Bastion != nil && previous .Bastion .Networks != nil {
119
+ dst .Bastion .Networks = previous .Bastion .Networks
120
+ }
95
121
}
96
122
97
123
var _ ctrlconversion.Convertible = & OpenStackCluster {}
@@ -106,6 +132,7 @@ func (r *OpenStackCluster) ConvertTo(dstRaw ctrlconversion.Hub) error {
106
132
107
133
if restored {
108
134
restorev1alpha7ClusterSpec (& previous .Spec , & dst .Spec )
135
+ restorev1alpha7ClusterStatus (& previous .Status , & dst .Status )
109
136
}
110
137
111
138
return nil
@@ -183,7 +210,12 @@ var _ ctrlconversion.Convertible = &OpenStackMachine{}
183
210
func (r * OpenStackMachine ) ConvertTo (dstRaw ctrlconversion.Hub ) error {
184
211
dst := dstRaw .(* infrav1.OpenStackMachine )
185
212
var previous infrav1.OpenStackMachine
186
- _ , err := convertAndRestore (r , dst , & previous , Convert_v1alpha6_OpenStackMachine_To_v1alpha7_OpenStackMachine )
213
+ restored , err := convertAndRestore (r , dst , & previous , Convert_v1alpha6_OpenStackMachine_To_v1alpha7_OpenStackMachine )
214
+
215
+ if restored {
216
+ restorev1alpha7MachineSpec (& previous .Spec , & dst .Spec )
217
+ }
218
+
187
219
return err
188
220
}
189
221
@@ -219,7 +251,12 @@ var _ ctrlconversion.Convertible = &OpenStackMachineTemplate{}
219
251
func (r * OpenStackMachineTemplate ) ConvertTo (dstRaw ctrlconversion.Hub ) error {
220
252
dst := dstRaw .(* infrav1.OpenStackMachineTemplate )
221
253
var previous infrav1.OpenStackMachineTemplate
222
- _ , err := convertAndRestore (r , dst , & previous , Convert_v1alpha6_OpenStackMachineTemplate_To_v1alpha7_OpenStackMachineTemplate )
254
+ restored , err := convertAndRestore (r , dst , & previous , Convert_v1alpha6_OpenStackMachineTemplate_To_v1alpha7_OpenStackMachineTemplate )
255
+
256
+ if restored {
257
+ restorev1alpha7MachineSpec (& previous .Spec .Template .Spec , & dst .Spec .Template .Spec )
258
+ }
259
+
223
260
return err
224
261
}
225
262
@@ -262,3 +299,28 @@ func Convert_v1alpha7_APIServerLoadBalancer_To_v1alpha6_APIServerLoadBalancer(in
262
299
func Convert_v1alpha7_OpenStackClusterSpec_To_v1alpha6_OpenStackClusterSpec (in * infrav1.OpenStackClusterSpec , out * OpenStackClusterSpec , s conversion.Scope ) error {
263
300
return autoConvert_v1alpha7_OpenStackClusterSpec_To_v1alpha6_OpenStackClusterSpec (in , out , s )
264
301
}
302
+
303
+ func Convert_Slice_v1alpha6_Network_To_Slice_v1alpha7_Network (in * []Network , out * []infrav1.Network , s conversion.Scope ) error {
304
+ * out = make ([]infrav1.Network , len (* in ))
305
+ for i := range * in {
306
+ if err := Convert_v1alpha6_Network_To_v1alpha7_Network (& (* in )[i ], & (* out )[i ], s ); err != nil {
307
+ return err
308
+ }
309
+ }
310
+ return nil
311
+ }
312
+
313
+ func Convert_Slice_v1alpha7_Network_To_Slice_v1alpha6_Network (in * []infrav1.Network , out * []Network , s conversion.Scope ) error {
314
+ * out = make ([]Network , len (* in ))
315
+ for i := range * in {
316
+ if err := Convert_v1alpha7_Network_To_v1alpha6_Network (& (* in )[i ], & (* out )[i ], s ); err != nil {
317
+ return err
318
+ }
319
+ }
320
+ return nil
321
+ }
322
+
323
+ func Convert_v1alpha7_PortOpts_To_v1alpha6_PortOpts (in * infrav1.PortOpts , out * PortOpts , s conversion.Scope ) error {
324
+ // value specs and propagate uplink status have been added in v1alpha7 but have no equivalent in v1alpha5
325
+ return autoConvert_v1alpha7_PortOpts_To_v1alpha6_PortOpts (in , out , s )
326
+ }
0 commit comments