Skip to content

Commit 57c895a

Browse files
committed
DiskOffering is optional and thus should be a ptr
Signed-off-by: Hans Rakers <[email protected]>
1 parent 7fd4146 commit 57c895a

13 files changed

+139
-71
lines changed

api/v1beta1/cloudstackmachine_conversion.go

+21-5
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/conversion.go

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ package v1beta1
1919
import (
2020
"context"
2121
"fmt"
22+
2223
corev1 "k8s.io/api/core/v1"
2324
conv "k8s.io/apimachinery/pkg/conversion"
2425
"sigs.k8s.io/cluster-api-provider-cloudstack/api/v1beta3"

api/v1beta1/zz_generated.conversion.go

+7-16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1beta2/cloudstackmachine_conversion.go

+44-3
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

+34-28
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

api/v1beta3/cloudstackmachine_types.go

+1-1
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

api/v1beta3/cloudstackmachine_webhook.go

+10-8
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ func (r *CloudStackMachine) ValidateCreate() error {
6060

6161
errorList = webhookutil.EnsureAtLeastOneFieldExists(r.Spec.Offering.ID, r.Spec.Offering.Name, "Offering", errorList)
6262
errorList = webhookutil.EnsureAtLeastOneFieldExists(r.Spec.Template.ID, r.Spec.Template.Name, "Template", errorList)
63-
if len(r.Spec.DiskOffering.ID) > 0 || len(r.Spec.DiskOffering.Name) > 0 {
63+
if r.Spec.DiskOffering != nil && (len(r.Spec.DiskOffering.ID) > 0 || len(r.Spec.DiskOffering.Name) > 0) {
6464
errorList = webhookutil.EnsureIntFieldsAreNotNegative(r.Spec.DiskOffering.CustomSize, "customSizeInGB", errorList)
6565
}
6666

@@ -81,13 +81,15 @@ func (r *CloudStackMachine) ValidateUpdate(old runtime.Object) error {
8181

8282
errorList = webhookutil.EnsureEqualStrings(r.Spec.Offering.ID, oldSpec.Offering.ID, "offering", errorList)
8383
errorList = webhookutil.EnsureEqualStrings(r.Spec.Offering.Name, oldSpec.Offering.Name, "offering", errorList)
84-
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.ID, oldSpec.DiskOffering.ID, "diskOffering", errorList)
85-
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.Name, oldSpec.DiskOffering.Name, "diskOffering", errorList)
86-
errorList = webhookutil.EnsureIntFieldsAreNotNegative(r.Spec.DiskOffering.CustomSize, "customSizeInGB", errorList)
87-
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.MountPath, oldSpec.DiskOffering.MountPath, "mountPath", errorList)
88-
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.Device, oldSpec.DiskOffering.Device, "device", errorList)
89-
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.Filesystem, oldSpec.DiskOffering.Filesystem, "filesystem", errorList)
90-
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.Label, oldSpec.DiskOffering.Label, "label", errorList)
84+
if r.Spec.DiskOffering != nil {
85+
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.ID, oldSpec.DiskOffering.ID, "diskOffering", errorList)
86+
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.Name, oldSpec.DiskOffering.Name, "diskOffering", errorList)
87+
errorList = webhookutil.EnsureIntFieldsAreNotNegative(r.Spec.DiskOffering.CustomSize, "customSizeInGB", errorList)
88+
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.MountPath, oldSpec.DiskOffering.MountPath, "mountPath", errorList)
89+
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.Device, oldSpec.DiskOffering.Device, "device", errorList)
90+
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.Filesystem, oldSpec.DiskOffering.Filesystem, "filesystem", errorList)
91+
errorList = webhookutil.EnsureEqualStrings(r.Spec.DiskOffering.Label, oldSpec.DiskOffering.Label, "label", errorList)
92+
}
9193
errorList = webhookutil.EnsureEqualStrings(r.Spec.SSHKey, oldSpec.SSHKey, "sshkey", errorList)
9294
errorList = webhookutil.EnsureEqualStrings(r.Spec.Template.ID, oldSpec.Template.ID, "template", errorList)
9395
errorList = webhookutil.EnsureEqualStrings(r.Spec.Template.Name, oldSpec.Template.Name, "template", errorList)

0 commit comments

Comments
 (0)