Skip to content

Commit 46dc4db

Browse files
vishesh92harikrishna-patnala
authored andcommitted
fix conversions
1 parent c93d54b commit 46dc4db

File tree

1 file changed

+31
-2
lines changed

1 file changed

+31
-2
lines changed

api/v1beta2/cloudstackmachine_conversion.go

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,45 @@ limitations under the License.
1717
package v1beta2
1818

1919
import (
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

2426
func (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

2945
func (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

Comments
 (0)