Skip to content

Commit 4e1629b

Browse files
hrakvishesh92
authored andcommitted
DiskOffering is optional and thus should be a ptr
Signed-off-by: Hans Rakers <[email protected]>
1 parent 514e4c3 commit 4e1629b

12 files changed

+139
-77
lines changed

api/v1beta1/cloudstackmachine_conversion.go

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import (
2525

2626
func (src *CloudStackMachine) ConvertTo(dstRaw conversion.Hub) error { // nolint
2727
dst := dstRaw.(*v1beta3.CloudStackMachine)
28+
2829
if err := Convert_v1beta1_CloudStackMachine_To_v1beta3_CloudStackMachine(src, dst, nil); err != nil {
2930
return err
3031
}
@@ -34,12 +35,22 @@ func (src *CloudStackMachine) ConvertTo(dstRaw conversion.Hub) error { // nolint
3435
if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
3536
return err
3637
}
37-
if restored.Spec.FailureDomainName != "" {
38-
dst.Spec.FailureDomainName = restored.Spec.FailureDomainName
39-
}
40-
if restored.Spec.UncompressedUserData != nil {
41-
dst.Spec.UncompressedUserData = restored.Spec.UncompressedUserData
38+
dst.Spec.FailureDomainName = restored.Spec.FailureDomainName
39+
dst.Spec.UncompressedUserData = restored.Spec.UncompressedUserData
40+
41+
// Don't bother converting empty disk offering objects
42+
if restored.Spec.DiskOffering.MountPath != "" {
43+
dst.Spec.DiskOffering = &v1beta3.CloudStackResourceDiskOffering{
44+
CustomSize: restored.Spec.DiskOffering.CustomSize,
45+
MountPath: restored.Spec.DiskOffering.MountPath,
46+
Device: restored.Spec.DiskOffering.Device,
47+
Filesystem: restored.Spec.DiskOffering.Filesystem,
48+
Label: restored.Spec.DiskOffering.Label,
49+
}
50+
dst.Spec.DiskOffering.ID = restored.Spec.DiskOffering.ID
51+
dst.Spec.DiskOffering.Name = restored.Spec.DiskOffering.Name
4252
}
53+
4354
if restored.Status.Status != nil {
4455
dst.Status.Status = restored.Status.Status
4556
}
@@ -51,6 +62,7 @@ func (src *CloudStackMachine) ConvertTo(dstRaw conversion.Hub) error { // nolint
5162

5263
func (dst *CloudStackMachine) ConvertFrom(srcRaw conversion.Hub) error { // nolint
5364
src := srcRaw.(*v1beta3.CloudStackMachine)
65+
5466
if err := Convert_v1beta3_CloudStackMachine_To_v1beta1_CloudStackMachine(src, dst, nil); err != nil {
5567
return err
5668
}
@@ -62,6 +74,10 @@ func (dst *CloudStackMachine) ConvertFrom(srcRaw conversion.Hub) error { // noli
6274
return nil
6375
}
6476

77+
func Convert_v1beta1_CloudStackMachineSpec_To_v1beta3_CloudStackMachineSpec(in *CloudStackMachineSpec, out *v1beta3.CloudStackMachineSpec, scope machineryconversion.Scope) error { // nolint
78+
return autoConvert_v1beta1_CloudStackMachineSpec_To_v1beta3_CloudStackMachineSpec(in, out, scope)
79+
}
80+
6581
func Convert_v1beta3_CloudStackMachineSpec_To_v1beta1_CloudStackMachineSpec(in *v1beta3.CloudStackMachineSpec, out *CloudStackMachineSpec, s machineryconversion.Scope) error { // nolint
6682
return autoConvert_v1beta3_CloudStackMachineSpec_To_v1beta1_CloudStackMachineSpec(in, out, s)
6783
}

api/v1beta1/zz_generated.conversion.go

Lines changed: 9 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1beta2/cloudstackmachine_conversion.go

Lines changed: 44 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,16 +17,57 @@ 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

24-
func (src *CloudStackMachine) ConvertTo(dstRaw conversion.Hub) error { // nolint
26+
func (src *CloudStackMachine) ConvertTo(dstRaw conversion.Hub) error {
2527
dst := dstRaw.(*v1beta3.CloudStackMachine)
26-
return Convert_v1beta2_CloudStackMachine_To_v1beta3_CloudStackMachine(src, dst, nil)
28+
29+
if err := Convert_v1beta2_CloudStackMachine_To_v1beta3_CloudStackMachine(src, dst, nil); err != nil {
30+
return err
31+
}
32+
33+
// Manually restore data
34+
restored := &v1beta3.CloudStackMachine{}
35+
if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
36+
return err
37+
}
38+
// Don't bother converting empty disk offering objects
39+
if restored.Spec.DiskOffering.MountPath != "" {
40+
dst.Spec.DiskOffering = &v1beta3.CloudStackResourceDiskOffering{
41+
CustomSize: restored.Spec.DiskOffering.CustomSize,
42+
MountPath: restored.Spec.DiskOffering.MountPath,
43+
Device: restored.Spec.DiskOffering.Device,
44+
Filesystem: restored.Spec.DiskOffering.Filesystem,
45+
Label: restored.Spec.DiskOffering.Label,
46+
}
47+
dst.Spec.DiskOffering.ID = restored.Spec.DiskOffering.ID
48+
dst.Spec.DiskOffering.Name = restored.Spec.DiskOffering.Name
49+
}
50+
return nil
2751
}
2852

2953
func (dst *CloudStackMachine) ConvertFrom(srcRaw conversion.Hub) error { // nolint
3054
src := srcRaw.(*v1beta3.CloudStackMachine)
31-
return Convert_v1beta3_CloudStackMachine_To_v1beta2_CloudStackMachine(src, dst, nil)
55+
56+
if err := Convert_v1beta3_CloudStackMachine_To_v1beta2_CloudStackMachine(src, dst, nil); err != nil {
57+
return err
58+
}
59+
60+
// Preserve Hub data on down-conversion
61+
if err := utilconversion.MarshalData(src, dst); err != nil {
62+
return err
63+
}
64+
return nil
65+
}
66+
67+
func Convert_v1beta3_CloudStackMachineSpec_To_v1beta2_CloudStackMachineSpec(in *v1beta3.CloudStackMachineSpec, out *CloudStackMachineSpec, s machineryconversion.Scope) error { // nolint
68+
return autoConvert_v1beta3_CloudStackMachineSpec_To_v1beta2_CloudStackMachineSpec(in, out, s)
69+
}
70+
71+
func Convert_v1beta2_CloudStackMachineSpec_To_v1beta3_CloudStackMachineSpec(in *CloudStackMachineSpec, out *v1beta3.CloudStackMachineSpec, s machineryconversion.Scope) error { // nolint
72+
return autoConvert_v1beta2_CloudStackMachineSpec_To_v1beta3_CloudStackMachineSpec(in, out, s)
3273
}

api/v1beta2/zz_generated.conversion.go

Lines changed: 33 additions & 32 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1beta3/cloudstackmachine_types.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ type CloudStackMachineSpec struct {
5353

5454
// CloudStack disk offering to use.
5555
// +optional
56-
DiskOffering CloudStackResourceDiskOffering `json:"diskOffering,omitempty"`
56+
DiskOffering *CloudStackResourceDiskOffering `json:"diskOffering,omitempty"`
5757

5858
// CloudStack ssh key to use.
5959
// +optional

0 commit comments

Comments
 (0)