@@ -17,16 +17,45 @@ limitations under the License.
1717package v1beta2
1818
1919import (
20+ machineryconversion "k8s.io/apimachinery/pkg/conversion"
2021 "sigs.k8s.io/cluster-api-provider-cloudstack/api/v1beta3"
22+ utilconversion "sigs.k8s.io/cluster-api/util/conversion"
2123 "sigs.k8s.io/controller-runtime/pkg/conversion"
2224)
2325
2426func (src * CloudStackMachine ) ConvertTo (dstRaw conversion.Hub ) error { // nolint
2527 dst := dstRaw .(* v1beta3.CloudStackMachine )
26- return Convert_v1beta2_CloudStackMachine_To_v1beta3_CloudStackMachine (src , dst , nil )
28+ if err := Convert_v1beta2_CloudStackMachine_To_v1beta3_CloudStackMachine (src , dst , nil ); err != nil {
29+ return err
30+ }
31+
32+ // Manually restore data
33+ restored := & v1beta3.CloudStackMachine {}
34+ if ok , err := utilconversion .UnmarshalData (src , restored ); err != nil || ! ok {
35+ return err
36+ }
37+
38+ if len (restored .Spec .Networks ) > 0 {
39+ dst .Spec .Networks = restored .Spec .Networks
40+ }
41+
42+ return nil
2743}
2844
2945func (dst * CloudStackMachine ) ConvertFrom (srcRaw conversion.Hub ) error { // nolint
3046 src := srcRaw .(* v1beta3.CloudStackMachine )
31- return Convert_v1beta3_CloudStackMachine_To_v1beta2_CloudStackMachine (src , dst , nil )
47+ if err := Convert_v1beta3_CloudStackMachine_To_v1beta2_CloudStackMachine (src , dst , nil ); err != nil {
48+ return err
49+ }
50+
51+ // Preserve Hub data on down-conversion, including Networks field
52+ err := utilconversion .MarshalData (src , dst )
53+ return err
54+ }
55+
56+ // Convert_v1beta3_CloudStackMachineSpec_To_v1beta2_CloudStackMachineSpec handles the conversion from v1beta3 to v1beta2,
57+ // ignoring the Networks field that doesn't exist in v1beta2
58+ func Convert_v1beta3_CloudStackMachineSpec_To_v1beta2_CloudStackMachineSpec (in * v1beta3.CloudStackMachineSpec , out * CloudStackMachineSpec , s machineryconversion.Scope ) error { // nolint
59+ // Use the auto-generated conversion function, which will handle all fields except Networks
60+ return autoConvert_v1beta3_CloudStackMachineSpec_To_v1beta2_CloudStackMachineSpec (in , out , s )
3261}
0 commit comments