@@ -18,6 +18,7 @@ package v1alpha3
18
18
19
19
import (
20
20
"maps"
21
+ "reflect"
21
22
"slices"
22
23
"sort"
23
24
@@ -41,26 +42,46 @@ func (src *DockerCluster) ConvertTo(dstRaw conversion.Hub) error {
41
42
42
43
// Manually restore data.
43
44
restored := & infrav1.DockerCluster {}
44
- if ok , err := utilconversion .UnmarshalData (src , restored ); err != nil || ! ok {
45
+ ok , err := utilconversion .UnmarshalData (src , restored )
46
+ if err != nil {
45
47
return err
46
48
}
47
49
48
- if restored .Spec .LoadBalancer .ImageRepository != "" {
49
- dst .Spec .LoadBalancer .ImageRepository = restored .Spec .LoadBalancer .ImageRepository
50
+ // Recover intent for bool values converted to *bool.
51
+ initialization := infrav1.DockerClusterInitializationStatus {}
52
+ restoredDockerClusterProvisioned := restored .Status .Initialization .Provisioned
53
+ clusterv1 .Convert_bool_To_Pointer_bool (src .Status .Ready , ok , restoredDockerClusterProvisioned , & initialization .Provisioned )
54
+ if ! reflect .DeepEqual (initialization , infrav1.DockerClusterInitializationStatus {}) {
55
+ dst .Status .Initialization = initialization
50
56
}
51
57
52
- if restored . Spec . LoadBalancer . ImageTag != "" {
53
- dst .Spec . LoadBalancer . ImageTag = restored .Spec . LoadBalancer . ImageTag
58
+ if ok {
59
+ RestoreDockerClusterSpec ( & restored .Spec , & dst .Spec )
54
60
}
55
61
56
- if restored .Spec .LoadBalancer .CustomHAProxyConfigTemplateRef != nil {
57
- dst .Spec .LoadBalancer .CustomHAProxyConfigTemplateRef = restored .Spec .LoadBalancer .CustomHAProxyConfigTemplateRef
62
+ RestoreDockerClusterStatus (& restored .Status , & dst .Status )
63
+
64
+ return nil
65
+ }
66
+
67
+ func RestoreDockerClusterSpec (restored * infrav1.DockerClusterSpec , dst * infrav1.DockerClusterSpec ) {
68
+ // Restore fields added in v1beta2.
69
+ if restored .LoadBalancer .ImageRepository != "" {
70
+ dst .LoadBalancer .ImageRepository = restored .LoadBalancer .ImageRepository
71
+ }
72
+
73
+ if restored .LoadBalancer .ImageTag != "" {
74
+ dst .LoadBalancer .ImageTag = restored .LoadBalancer .ImageTag
58
75
}
59
76
60
- dst .Status .Conditions = restored .Status .Conditions
61
- dst .Status .Initialization = restored .Status .Initialization
77
+ if restored .LoadBalancer .CustomHAProxyConfigTemplateRef != nil {
78
+ dst .LoadBalancer .CustomHAProxyConfigTemplateRef = restored .LoadBalancer .CustomHAProxyConfigTemplateRef
79
+ }
80
+ }
62
81
63
- return nil
82
+ func RestoreDockerClusterStatus (restored * infrav1.DockerClusterStatus , dst * infrav1.DockerClusterStatus ) {
83
+ // Restore fields added in v1beta2.
84
+ dst .Conditions = restored .Conditions
64
85
}
65
86
66
87
func (dst * DockerCluster ) ConvertFrom (srcRaw conversion.Hub ) error {
@@ -70,12 +91,7 @@ func (dst *DockerCluster) ConvertFrom(srcRaw conversion.Hub) error {
70
91
return err
71
92
}
72
93
73
- // Preserve Hub data on down-conversion except for metadata
74
- if err := utilconversion .MarshalData (src , dst ); err != nil {
75
- return err
76
- }
77
-
78
- return nil
94
+ return utilconversion .MarshalData (src , dst )
79
95
}
80
96
81
97
func (src * DockerMachine ) ConvertTo (dstRaw conversion.Hub ) error {
@@ -87,20 +103,40 @@ func (src *DockerMachine) ConvertTo(dstRaw conversion.Hub) error {
87
103
88
104
// Manually restore data.
89
105
restored := & infrav1.DockerMachine {}
90
- if ok , err := utilconversion .UnmarshalData (src , restored ); err != nil || ! ok {
106
+ ok , err := utilconversion .UnmarshalData (src , restored )
107
+ if err != nil {
91
108
return err
92
109
}
93
110
94
- if restored .Spec .BootstrapTimeout != nil {
95
- dst .Spec .BootstrapTimeout = restored .Spec .BootstrapTimeout
111
+ // Recover intent for bool values converted to *bool.
112
+ initialization := infrav1.DockerMachineInitializationStatus {}
113
+ restoredDockerMachineProvisioned := restored .Status .Initialization .Provisioned
114
+ clusterv1 .Convert_bool_To_Pointer_bool (src .Status .Ready , ok , restoredDockerMachineProvisioned , & initialization .Provisioned )
115
+ if ! reflect .DeepEqual (initialization , infrav1.DockerMachineInitializationStatus {}) {
116
+ dst .Status .Initialization = initialization
117
+ }
118
+
119
+ if ok {
120
+ RestoreDockerMachineSpec (& restored .Spec , & dst .Spec )
96
121
}
97
122
98
- dst .Status .Conditions = restored .Status .Conditions
99
- dst .Status .Initialization = restored .Status .Initialization
123
+ RestoreDockerMachineStatus (& restored .Status , & dst .Status )
100
124
101
125
return nil
102
126
}
103
127
128
+ func RestoreDockerMachineSpec (restored * infrav1.DockerMachineSpec , dst * infrav1.DockerMachineSpec ) {
129
+ // Restore fields added in v1beta2.
130
+ if restored .BootstrapTimeout != nil {
131
+ dst .BootstrapTimeout = restored .BootstrapTimeout
132
+ }
133
+ }
134
+
135
+ func RestoreDockerMachineStatus (restored * infrav1.DockerMachineStatus , dst * infrav1.DockerMachineStatus ) {
136
+ // Restore fields added in v1beta2.
137
+ dst .Conditions = restored .Conditions
138
+ }
139
+
104
140
func (dst * DockerMachine ) ConvertFrom (srcRaw conversion.Hub ) error {
105
141
src := srcRaw .(* infrav1.DockerMachine )
106
142
@@ -112,11 +148,7 @@ func (dst *DockerMachine) ConvertFrom(srcRaw conversion.Hub) error {
112
148
dst .Spec .ProviderID = nil
113
149
}
114
150
115
- if err := utilconversion .MarshalData (src , dst ); err != nil {
116
- return err
117
- }
118
-
119
- return nil
151
+ return utilconversion .MarshalData (src , dst )
120
152
}
121
153
122
154
func (src * DockerMachineTemplate ) ConvertTo (dstRaw conversion.Hub ) error {
@@ -128,16 +160,24 @@ func (src *DockerMachineTemplate) ConvertTo(dstRaw conversion.Hub) error {
128
160
129
161
// Manually restore data.
130
162
restored := & infrav1.DockerMachineTemplate {}
131
- if ok , err := utilconversion .UnmarshalData (src , restored ); err != nil || ! ok {
163
+ ok , err := utilconversion .UnmarshalData (src , restored )
164
+ if err != nil {
132
165
return err
133
166
}
134
167
135
- dst .Spec .Template .ObjectMeta = restored .Spec .Template .ObjectMeta
136
- dst .Spec .Template .Spec .BootstrapTimeout = restored .Spec .Template .Spec .BootstrapTimeout
168
+ if ok {
169
+ RestoreDockerMachineTemplateSpec (& restored .Spec , & dst .Spec )
170
+ }
137
171
138
172
return nil
139
173
}
140
174
175
+ func RestoreDockerMachineTemplateSpec (restored * infrav1.DockerMachineTemplateSpec , dst * infrav1.DockerMachineTemplateSpec ) {
176
+ // Restore fields added in v1beta2.
177
+ dst .Template .ObjectMeta = restored .Template .ObjectMeta
178
+ dst .Template .Spec .BootstrapTimeout = restored .Template .Spec .BootstrapTimeout
179
+ }
180
+
141
181
func (dst * DockerMachineTemplate ) ConvertFrom (srcRaw conversion.Hub ) error {
142
182
src := srcRaw .(* infrav1.DockerMachineTemplate )
143
183
@@ -149,12 +189,7 @@ func (dst *DockerMachineTemplate) ConvertFrom(srcRaw conversion.Hub) error {
149
189
dst .Spec .Template .Spec .ProviderID = nil
150
190
}
151
191
152
- // Preserve Hub data on down-conversion except for metadata
153
- if err := utilconversion .MarshalData (src , dst ); err != nil {
154
- return err
155
- }
156
-
157
- return nil
192
+ return utilconversion .MarshalData (src , dst )
158
193
}
159
194
160
195
// Convert_v1beta2_DockerClusterSpec_To_v1alpha3_DockerClusterSpec is an autogenerated conversion function.
@@ -201,9 +236,7 @@ func Convert_v1beta2_DockerClusterStatus_To_v1alpha3_DockerClusterStatus(in *inf
201
236
clusterv1alpha3 .Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha3_Conditions (& in .Deprecated .V1Beta1 .Conditions , & out .Conditions )
202
237
}
203
238
204
- if in .Initialization .Provisioned != nil {
205
- out .Ready = * in .Initialization .Provisioned
206
- }
239
+ out .Ready = ptr .Deref (in .Initialization .Provisioned , false )
207
240
208
241
// Move FailureDomains
209
242
if in .FailureDomains != nil {
@@ -231,9 +264,7 @@ func Convert_v1beta2_DockerMachineStatus_To_v1alpha3_DockerMachineStatus(in *inf
231
264
clusterv1alpha3 .Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha3_Conditions (& in .Deprecated .V1Beta1 .Conditions , & out .Conditions )
232
265
}
233
266
234
- if in .Initialization .Provisioned != nil {
235
- out .Ready = * in .Initialization .Provisioned
236
- }
267
+ out .Ready = ptr .Deref (in .Initialization .Provisioned , false )
237
268
238
269
return nil
239
270
}
@@ -263,10 +294,6 @@ func Convert_v1alpha3_DockerMachineStatus_To_v1beta2_DockerMachineStatus(in *Doc
263
294
clusterv1alpha3 .Convert_v1alpha3_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions (& in .Conditions , & out .Deprecated .V1Beta1 .Conditions )
264
295
}
265
296
266
- if in .Ready {
267
- out .Initialization .Provisioned = ptr .To (in .Ready )
268
- }
269
-
270
297
return nil
271
298
}
272
299
@@ -285,10 +312,6 @@ func Convert_v1alpha3_DockerClusterStatus_To_v1beta2_DockerClusterStatus(in *Doc
285
312
clusterv1alpha3 .Convert_v1alpha3_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions (& in .Conditions , & out .Deprecated .V1Beta1 .Conditions )
286
313
}
287
314
288
- if in .Ready {
289
- out .Initialization .Provisioned = ptr .To (in .Ready )
290
- }
291
-
292
315
// Move FailureDomains
293
316
if in .FailureDomains != nil {
294
317
out .FailureDomains = []clusterv1.FailureDomain {}
0 commit comments