@@ -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,41 +42,59 @@ 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
+ var restoredDockerClusterProvisioned * bool
53
+ if restored .Status .Initialization != nil {
54
+ restoredDockerClusterProvisioned = restored .Status .Initialization .Provisioned
50
55
}
51
-
52
- if restored . Spec . LoadBalancer . ImageTag != "" {
53
- dst .Spec . LoadBalancer . ImageTag = restored . Spec . LoadBalancer . ImageTag
56
+ clusterv1 . Convert_bool_To_Pointer_bool ( src . Status . Ready , ok , restoredDockerClusterProvisioned , & initialization . Provisioned )
57
+ if ! reflect . DeepEqual ( initialization , infrav1. DockerClusterInitializationStatus {}) {
58
+ dst .Status . Initialization = & initialization
54
59
}
55
60
56
- if restored . Spec . LoadBalancer . CustomHAProxyConfigTemplateRef != nil {
57
- dst .Spec . LoadBalancer . CustomHAProxyConfigTemplateRef = restored .Spec . LoadBalancer . CustomHAProxyConfigTemplateRef
61
+ if ok {
62
+ RestoreDockerClusterSpec ( & restored .Spec , & dst .Spec )
58
63
}
59
64
60
- dst .Status .Conditions = restored .Status .Conditions
61
- dst .Status .Initialization = restored .Status .Initialization
65
+ RestoreDockerClusterStatus (& restored .Status , & dst .Status )
62
66
63
67
return nil
64
68
}
65
69
70
+ func RestoreDockerClusterSpec (restored * infrav1.DockerClusterSpec , dst * infrav1.DockerClusterSpec ) {
71
+ // Restore fields added in v1beta2.
72
+ if restored .LoadBalancer .ImageRepository != "" {
73
+ dst .LoadBalancer .ImageRepository = restored .LoadBalancer .ImageRepository
74
+ }
75
+
76
+ if restored .LoadBalancer .ImageTag != "" {
77
+ dst .LoadBalancer .ImageTag = restored .LoadBalancer .ImageTag
78
+ }
79
+
80
+ if restored .LoadBalancer .CustomHAProxyConfigTemplateRef != nil {
81
+ dst .LoadBalancer .CustomHAProxyConfigTemplateRef = restored .LoadBalancer .CustomHAProxyConfigTemplateRef
82
+ }
83
+ }
84
+
85
+ func RestoreDockerClusterStatus (restored * infrav1.DockerClusterStatus , dst * infrav1.DockerClusterStatus ) {
86
+ // Restore fields added in v1beta2.
87
+ dst .Conditions = restored .Conditions
88
+ }
89
+
66
90
func (dst * DockerCluster ) ConvertFrom (srcRaw conversion.Hub ) error {
67
91
src := srcRaw .(* infrav1.DockerCluster )
68
92
69
93
if err := Convert_v1beta2_DockerCluster_To_v1alpha3_DockerCluster (src , dst , nil ); err != nil {
70
94
return err
71
95
}
72
96
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
97
+ return utilconversion .MarshalData (src , dst )
79
98
}
80
99
81
100
func (src * DockerMachine ) ConvertTo (dstRaw conversion.Hub ) error {
@@ -87,32 +106,51 @@ func (src *DockerMachine) ConvertTo(dstRaw conversion.Hub) error {
87
106
88
107
// Manually restore data.
89
108
restored := & infrav1.DockerMachine {}
90
- if ok , err := utilconversion .UnmarshalData (src , restored ); err != nil || ! ok {
109
+ ok , err := utilconversion .UnmarshalData (src , restored )
110
+ if err != nil {
91
111
return err
92
112
}
93
113
94
- if restored .Spec .BootstrapTimeout != nil {
95
- dst .Spec .BootstrapTimeout = restored .Spec .BootstrapTimeout
114
+ // Recover intent for bool values converted to *bool.
115
+ initialization := infrav1.DockerMachineInitializationStatus {}
116
+ var restoredDockerMachineProvisioned * bool
117
+ if restored .Status .Initialization != nil {
118
+ restoredDockerMachineProvisioned = restored .Status .Initialization .Provisioned
119
+ }
120
+ clusterv1 .Convert_bool_To_Pointer_bool (src .Status .Ready , ok , restoredDockerMachineProvisioned , & initialization .Provisioned )
121
+ if ! reflect .DeepEqual (initialization , infrav1.DockerMachineInitializationStatus {}) {
122
+ dst .Status .Initialization = & initialization
123
+ }
124
+
125
+ if ok {
126
+ RestoreDockerMachineSpec (& restored .Spec , & dst .Spec )
96
127
}
97
128
98
- dst .Status .Conditions = restored .Status .Conditions
99
- dst .Status .Initialization = restored .Status .Initialization
129
+ RestoreDockerMachineStatus (& restored .Status , & dst .Status )
100
130
101
131
return nil
102
132
}
103
133
134
+ func RestoreDockerMachineSpec (restored * infrav1.DockerMachineSpec , dst * infrav1.DockerMachineSpec ) {
135
+ // Restore fields added in v1beta2.
136
+ if restored .BootstrapTimeout != nil {
137
+ dst .BootstrapTimeout = restored .BootstrapTimeout
138
+ }
139
+ }
140
+
141
+ func RestoreDockerMachineStatus (restored * infrav1.DockerMachineStatus , dst * infrav1.DockerMachineStatus ) {
142
+ // Restore fields added in v1beta2.
143
+ dst .Conditions = restored .Conditions
144
+ }
145
+
104
146
func (dst * DockerMachine ) ConvertFrom (srcRaw conversion.Hub ) error {
105
147
src := srcRaw .(* infrav1.DockerMachine )
106
148
107
149
if err := Convert_v1beta2_DockerMachine_To_v1alpha3_DockerMachine (src , dst , nil ); err != nil {
108
150
return err
109
151
}
110
152
111
- if err := utilconversion .MarshalData (src , dst ); err != nil {
112
- return err
113
- }
114
-
115
- return nil
153
+ return utilconversion .MarshalData (src , dst )
116
154
}
117
155
118
156
func (src * DockerMachineTemplate ) ConvertTo (dstRaw conversion.Hub ) error {
@@ -124,29 +162,32 @@ func (src *DockerMachineTemplate) ConvertTo(dstRaw conversion.Hub) error {
124
162
125
163
// Manually restore data.
126
164
restored := & infrav1.DockerMachineTemplate {}
127
- if ok , err := utilconversion .UnmarshalData (src , restored ); err != nil || ! ok {
165
+ ok , err := utilconversion .UnmarshalData (src , restored )
166
+ if err != nil {
128
167
return err
129
168
}
130
169
131
- dst .Spec .Template .ObjectMeta = restored .Spec .Template .ObjectMeta
132
- dst .Spec .Template .Spec .BootstrapTimeout = restored .Spec .Template .Spec .BootstrapTimeout
170
+ if ok {
171
+ RestoreDockerMachineTemplateSpec (& restored .Spec , & dst .Spec )
172
+ }
133
173
134
174
return nil
135
175
}
136
176
177
+ func RestoreDockerMachineTemplateSpec (restored * infrav1.DockerMachineTemplateSpec , dst * infrav1.DockerMachineTemplateSpec ) {
178
+ // Restore fields added in v1beta2.
179
+ dst .Template .ObjectMeta = restored .Template .ObjectMeta
180
+ dst .Template .Spec .BootstrapTimeout = restored .Template .Spec .BootstrapTimeout
181
+ }
182
+
137
183
func (dst * DockerMachineTemplate ) ConvertFrom (srcRaw conversion.Hub ) error {
138
184
src := srcRaw .(* infrav1.DockerMachineTemplate )
139
185
140
186
if err := Convert_v1beta2_DockerMachineTemplate_To_v1alpha3_DockerMachineTemplate (src , dst , nil ); err != nil {
141
187
return err
142
188
}
143
189
144
- // Preserve Hub data on down-conversion except for metadata
145
- if err := utilconversion .MarshalData (src , dst ); err != nil {
146
- return err
147
- }
148
-
149
- return nil
190
+ return utilconversion .MarshalData (src , dst )
150
191
}
151
192
152
193
// Convert_v1beta2_DockerClusterSpec_To_v1alpha3_DockerClusterSpec is an autogenerated conversion function.
@@ -193,8 +234,8 @@ func Convert_v1beta2_DockerClusterStatus_To_v1alpha3_DockerClusterStatus(in *inf
193
234
clusterv1alpha3 .Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha3_Conditions (& in .Deprecated .V1Beta1 .Conditions , & out .Conditions )
194
235
}
195
236
196
- if in .Initialization != nil && in . Initialization . Provisioned != nil {
197
- out .Ready = * in .Initialization .Provisioned
237
+ if in .Initialization != nil {
238
+ out .Ready = ptr . Deref ( in .Initialization .Provisioned , false )
198
239
}
199
240
200
241
// Move FailureDomains
@@ -223,8 +264,8 @@ func Convert_v1beta2_DockerMachineStatus_To_v1alpha3_DockerMachineStatus(in *inf
223
264
clusterv1alpha3 .Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha3_Conditions (& in .Deprecated .V1Beta1 .Conditions , & out .Conditions )
224
265
}
225
266
226
- if in .Initialization != nil && in . Initialization . Provisioned != nil {
227
- out .Ready = * in .Initialization .Provisioned
267
+ if in .Initialization != nil {
268
+ out .Ready = ptr . Deref ( in .Initialization .Provisioned , false )
228
269
}
229
270
230
271
return nil
@@ -255,14 +296,6 @@ func Convert_v1alpha3_DockerMachineStatus_To_v1beta2_DockerMachineStatus(in *Doc
255
296
clusterv1alpha3 .Convert_v1alpha3_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions (& in .Conditions , & out .Deprecated .V1Beta1 .Conditions )
256
297
}
257
298
258
- if out .Initialization == nil {
259
- out .Initialization = & infrav1.DockerMachineInitializationStatus {}
260
- }
261
-
262
- if in .Ready {
263
- out .Initialization .Provisioned = ptr .To (in .Ready )
264
- }
265
-
266
299
return nil
267
300
}
268
301
@@ -281,14 +314,6 @@ func Convert_v1alpha3_DockerClusterStatus_To_v1beta2_DockerClusterStatus(in *Doc
281
314
clusterv1alpha3 .Convert_v1alpha3_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions (& in .Conditions , & out .Deprecated .V1Beta1 .Conditions )
282
315
}
283
316
284
- if out .Initialization == nil {
285
- out .Initialization = & infrav1.DockerClusterInitializationStatus {}
286
- }
287
-
288
- if in .Ready {
289
- out .Initialization .Provisioned = ptr .To (in .Ready )
290
- }
291
-
292
317
// Move FailureDomains
293
318
if in .FailureDomains != nil {
294
319
out .FailureDomains = []clusterv1.FailureDomain {}
0 commit comments