Skip to content

Commit 04fce36

Browse files
committed
align CAPD conversion to conversion of other providers
Signed-off-by: sivchari <shibuuuu5@gmail.com>
1 parent 4e7f5d2 commit 04fce36

File tree

3 files changed

+234
-183
lines changed

3 files changed

+234
-183
lines changed

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

Lines changed: 80 additions & 55 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,41 +42,59 @@ 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+
var restoredDockerClusterProvisioned *bool
53+
if restored.Status.Initialization != nil {
54+
restoredDockerClusterProvisioned = restored.Status.Initialization.Provisioned
5055
}
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
5459
}
5560

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)
5863
}
5964

60-
dst.Status.Conditions = restored.Status.Conditions
61-
dst.Status.Initialization = restored.Status.Initialization
65+
RestoreDockerClusterStatus(&restored.Status, &dst.Status)
6266

6367
return nil
6468
}
6569

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+
6690
func (dst *DockerCluster) ConvertFrom(srcRaw conversion.Hub) error {
6791
src := srcRaw.(*infrav1.DockerCluster)
6892

6993
if err := Convert_v1beta2_DockerCluster_To_v1alpha3_DockerCluster(src, dst, nil); err != nil {
7094
return err
7195
}
7296

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)
7998
}
8099

81100
func (src *DockerMachine) ConvertTo(dstRaw conversion.Hub) error {
@@ -87,32 +106,51 @@ func (src *DockerMachine) ConvertTo(dstRaw conversion.Hub) error {
87106

88107
// Manually restore data.
89108
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 {
91111
return err
92112
}
93113

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)
96127
}
97128

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

101131
return nil
102132
}
103133

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

107149
if err := Convert_v1beta2_DockerMachine_To_v1alpha3_DockerMachine(src, dst, nil); err != nil {
108150
return err
109151
}
110152

111-
if err := utilconversion.MarshalData(src, dst); err != nil {
112-
return err
113-
}
114-
115-
return nil
153+
return utilconversion.MarshalData(src, dst)
116154
}
117155

118156
func (src *DockerMachineTemplate) ConvertTo(dstRaw conversion.Hub) error {
@@ -124,29 +162,32 @@ func (src *DockerMachineTemplate) ConvertTo(dstRaw conversion.Hub) error {
124162

125163
// Manually restore data.
126164
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 {
128167
return err
129168
}
130169

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

134174
return nil
135175
}
136176

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

140186
if err := Convert_v1beta2_DockerMachineTemplate_To_v1alpha3_DockerMachineTemplate(src, dst, nil); err != nil {
141187
return err
142188
}
143189

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)
150191
}
151192

152193
// Convert_v1beta2_DockerClusterSpec_To_v1alpha3_DockerClusterSpec is an autogenerated conversion function.
@@ -193,8 +234,8 @@ func Convert_v1beta2_DockerClusterStatus_To_v1alpha3_DockerClusterStatus(in *inf
193234
clusterv1alpha3.Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha3_Conditions(&in.Deprecated.V1Beta1.Conditions, &out.Conditions)
194235
}
195236

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)
198239
}
199240

200241
// Move FailureDomains
@@ -223,8 +264,8 @@ func Convert_v1beta2_DockerMachineStatus_To_v1alpha3_DockerMachineStatus(in *inf
223264
clusterv1alpha3.Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha3_Conditions(&in.Deprecated.V1Beta1.Conditions, &out.Conditions)
224265
}
225266

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)
228269
}
229270

230271
return nil
@@ -255,14 +296,6 @@ func Convert_v1alpha3_DockerMachineStatus_To_v1beta2_DockerMachineStatus(in *Doc
255296
clusterv1alpha3.Convert_v1alpha3_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions(&in.Conditions, &out.Deprecated.V1Beta1.Conditions)
256297
}
257298

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-
266299
return nil
267300
}
268301

@@ -281,14 +314,6 @@ func Convert_v1alpha3_DockerClusterStatus_To_v1beta2_DockerClusterStatus(in *Doc
281314
clusterv1alpha3.Convert_v1alpha3_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions(&in.Conditions, &out.Deprecated.V1Beta1.Conditions)
282315
}
283316

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-
292317
// Move FailureDomains
293318
if in.FailureDomains != nil {
294319
out.FailureDomains = []clusterv1.FailureDomain{}

0 commit comments

Comments
 (0)