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