Skip to content

Commit b2b6779

Browse files
committed
align CAPD conversion to conversion of other providers
Signed-off-by: sivchari <shibuuuu5@gmail.com>
1 parent 5be50da commit b2b6779

File tree

3 files changed

+202
-157
lines changed

3 files changed

+202
-157
lines changed

test/infrastructure/docker/api/v1alpha3/conversion.go

Lines changed: 72 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package v1alpha3
1818

1919
import (
2020
"maps"
21+
"reflect"
2122
"slices"
2223
"sort"
2324

@@ -41,26 +42,46 @@ 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)
5460
}
5561

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
5875
}
5976

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+
}
6281

63-
return nil
82+
func RestoreDockerClusterStatus(restored *infrav1.DockerClusterStatus, dst *infrav1.DockerClusterStatus) {
83+
// Restore fields added in v1beta2.
84+
dst.Conditions = restored.Conditions
6485
}
6586

6687
func (dst *DockerCluster) ConvertFrom(srcRaw conversion.Hub) error {
@@ -70,12 +91,7 @@ func (dst *DockerCluster) ConvertFrom(srcRaw conversion.Hub) error {
7091
return err
7192
}
7293

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)
7995
}
8096

8197
func (src *DockerMachine) ConvertTo(dstRaw conversion.Hub) error {
@@ -87,20 +103,40 @@ func (src *DockerMachine) ConvertTo(dstRaw conversion.Hub) error {
87103

88104
// Manually restore data.
89105
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 {
91108
return err
92109
}
93110

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)
96121
}
97122

98-
dst.Status.Conditions = restored.Status.Conditions
99-
dst.Status.Initialization = restored.Status.Initialization
123+
RestoreDockerMachineStatus(&restored.Status, &dst.Status)
100124

101125
return nil
102126
}
103127

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+
104140
func (dst *DockerMachine) ConvertFrom(srcRaw conversion.Hub) error {
105141
src := srcRaw.(*infrav1.DockerMachine)
106142

@@ -112,11 +148,7 @@ func (dst *DockerMachine) ConvertFrom(srcRaw conversion.Hub) error {
112148
dst.Spec.ProviderID = nil
113149
}
114150

115-
if err := utilconversion.MarshalData(src, dst); err != nil {
116-
return err
117-
}
118-
119-
return nil
151+
return utilconversion.MarshalData(src, dst)
120152
}
121153

122154
func (src *DockerMachineTemplate) ConvertTo(dstRaw conversion.Hub) error {
@@ -128,16 +160,24 @@ func (src *DockerMachineTemplate) ConvertTo(dstRaw conversion.Hub) error {
128160

129161
// Manually restore data.
130162
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 {
132165
return err
133166
}
134167

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+
}
137171

138172
return nil
139173
}
140174

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+
141181
func (dst *DockerMachineTemplate) ConvertFrom(srcRaw conversion.Hub) error {
142182
src := srcRaw.(*infrav1.DockerMachineTemplate)
143183

@@ -149,12 +189,7 @@ func (dst *DockerMachineTemplate) ConvertFrom(srcRaw conversion.Hub) error {
149189
dst.Spec.Template.Spec.ProviderID = nil
150190
}
151191

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)
158193
}
159194

160195
// Convert_v1beta2_DockerClusterSpec_To_v1alpha3_DockerClusterSpec is an autogenerated conversion function.
@@ -201,9 +236,7 @@ func Convert_v1beta2_DockerClusterStatus_To_v1alpha3_DockerClusterStatus(in *inf
201236
clusterv1alpha3.Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha3_Conditions(&in.Deprecated.V1Beta1.Conditions, &out.Conditions)
202237
}
203238

204-
if in.Initialization.Provisioned != nil {
205-
out.Ready = *in.Initialization.Provisioned
206-
}
239+
out.Ready = ptr.Deref(in.Initialization.Provisioned, false)
207240

208241
// Move FailureDomains
209242
if in.FailureDomains != nil {
@@ -231,9 +264,7 @@ func Convert_v1beta2_DockerMachineStatus_To_v1alpha3_DockerMachineStatus(in *inf
231264
clusterv1alpha3.Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha3_Conditions(&in.Deprecated.V1Beta1.Conditions, &out.Conditions)
232265
}
233266

234-
if in.Initialization.Provisioned != nil {
235-
out.Ready = *in.Initialization.Provisioned
236-
}
267+
out.Ready = ptr.Deref(in.Initialization.Provisioned, false)
237268

238269
return nil
239270
}
@@ -263,10 +294,6 @@ func Convert_v1alpha3_DockerMachineStatus_To_v1beta2_DockerMachineStatus(in *Doc
263294
clusterv1alpha3.Convert_v1alpha3_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions(&in.Conditions, &out.Deprecated.V1Beta1.Conditions)
264295
}
265296

266-
if in.Ready {
267-
out.Initialization.Provisioned = ptr.To(in.Ready)
268-
}
269-
270297
return nil
271298
}
272299

@@ -285,10 +312,6 @@ func Convert_v1alpha3_DockerClusterStatus_To_v1beta2_DockerClusterStatus(in *Doc
285312
clusterv1alpha3.Convert_v1alpha3_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions(&in.Conditions, &out.Deprecated.V1Beta1.Conditions)
286313
}
287314

288-
if in.Ready {
289-
out.Initialization.Provisioned = ptr.To(in.Ready)
290-
}
291-
292315
// Move FailureDomains
293316
if in.FailureDomains != nil {
294317
out.FailureDomains = []clusterv1.FailureDomain{}

0 commit comments

Comments
 (0)