@@ -18,6 +18,7 @@ package v1alpha3
1818
1919import (
2020 "maps"
21+ "reflect"
2122 "slices"
2223 "sort"
2324
@@ -41,26 +42,45 @@ func (src *DockerCluster) ConvertTo(dstRaw conversion.Hub) error {
4142
4243 // Manually restore data.
4344 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 {
4547 return err
4648 }
4749
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
5056 }
5157
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 )
5461 }
5562
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
5870 }
5971
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+ }
6275
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
6484}
6585
6686func (dst * DockerCluster ) ConvertFrom (srcRaw conversion.Hub ) error {
@@ -70,12 +90,7 @@ func (dst *DockerCluster) ConvertFrom(srcRaw conversion.Hub) error {
7090 return err
7191 }
7292
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 )
7994}
8095
8196func (src * DockerMachine ) ConvertTo (dstRaw conversion.Hub ) error {
@@ -87,20 +102,39 @@ func (src *DockerMachine) ConvertTo(dstRaw conversion.Hub) error {
87102
88103 // Manually restore data.
89104 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 {
91107 return err
92108 }
93109
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
96116 }
97117
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+ }
100122
101123 return nil
102124}
103125
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+
104138func (dst * DockerMachine ) ConvertFrom (srcRaw conversion.Hub ) error {
105139 src := srcRaw .(* infrav1.DockerMachine )
106140
@@ -112,11 +146,7 @@ func (dst *DockerMachine) ConvertFrom(srcRaw conversion.Hub) error {
112146 dst .Spec .ProviderID = nil
113147 }
114148
115- if err := utilconversion .MarshalData (src , dst ); err != nil {
116- return err
117- }
118-
119- return nil
149+ return utilconversion .MarshalData (src , dst )
120150}
121151
122152func (src * DockerMachineTemplate ) ConvertTo (dstRaw conversion.Hub ) error {
@@ -128,16 +158,24 @@ func (src *DockerMachineTemplate) ConvertTo(dstRaw conversion.Hub) error {
128158
129159 // Manually restore data.
130160 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 {
132163 return err
133164 }
134165
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+ }
137169
138170 return nil
139171}
140172
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+
141179func (dst * DockerMachineTemplate ) ConvertFrom (srcRaw conversion.Hub ) error {
142180 src := srcRaw .(* infrav1.DockerMachineTemplate )
143181
@@ -149,12 +187,7 @@ func (dst *DockerMachineTemplate) ConvertFrom(srcRaw conversion.Hub) error {
149187 dst .Spec .Template .Spec .ProviderID = nil
150188 }
151189
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 )
158191}
159192
160193// Convert_v1beta2_DockerClusterSpec_To_v1alpha3_DockerClusterSpec is an autogenerated conversion function.
@@ -201,9 +234,7 @@ func Convert_v1beta2_DockerClusterStatus_To_v1alpha3_DockerClusterStatus(in *inf
201234 clusterv1alpha3 .Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha3_Conditions (& in .Deprecated .V1Beta1 .Conditions , & out .Conditions )
202235 }
203236
204- if in .Initialization .Provisioned != nil {
205- out .Ready = * in .Initialization .Provisioned
206- }
237+ out .Ready = ptr .Deref (in .Initialization .Provisioned , false )
207238
208239 // Move FailureDomains
209240 if in .FailureDomains != nil {
@@ -231,9 +262,7 @@ func Convert_v1beta2_DockerMachineStatus_To_v1alpha3_DockerMachineStatus(in *inf
231262 clusterv1alpha3 .Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha3_Conditions (& in .Deprecated .V1Beta1 .Conditions , & out .Conditions )
232263 }
233264
234- if in .Initialization .Provisioned != nil {
235- out .Ready = * in .Initialization .Provisioned
236- }
265+ out .Ready = ptr .Deref (in .Initialization .Provisioned , false )
237266
238267 return nil
239268}
@@ -263,10 +292,6 @@ func Convert_v1alpha3_DockerMachineStatus_To_v1beta2_DockerMachineStatus(in *Doc
263292 clusterv1alpha3 .Convert_v1alpha3_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions (& in .Conditions , & out .Deprecated .V1Beta1 .Conditions )
264293 }
265294
266- if in .Ready {
267- out .Initialization .Provisioned = ptr .To (in .Ready )
268- }
269-
270295 return nil
271296}
272297
@@ -285,10 +310,6 @@ func Convert_v1alpha3_DockerClusterStatus_To_v1beta2_DockerClusterStatus(in *Doc
285310 clusterv1alpha3 .Convert_v1alpha3_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions (& in .Conditions , & out .Deprecated .V1Beta1 .Conditions )
286311 }
287312
288- if in .Ready {
289- out .Initialization .Provisioned = ptr .To (in .Ready )
290- }
291-
292313 // Move FailureDomains
293314 if in .FailureDomains != nil {
294315 out .FailureDomains = []clusterv1.FailureDomain {}
0 commit comments