From b2b67791647f7fb65227a8566c3d6f5764fdb826 Mon Sep 17 00:00:00 2001 From: sivchari Date: Fri, 11 Jul 2025 15:44:53 +0900 Subject: [PATCH] align CAPD conversion to conversion of other providers Signed-off-by: sivchari --- .../docker/api/v1alpha3/conversion.go | 121 +++++++++------- .../docker/api/v1alpha4/conversion.go | 137 +++++++++++------- .../docker/api/v1beta1/conversion.go | 101 ++++++------- 3 files changed, 202 insertions(+), 157 deletions(-) diff --git a/test/infrastructure/docker/api/v1alpha3/conversion.go b/test/infrastructure/docker/api/v1alpha3/conversion.go index 1b87ddebded2..d64cf77c95bc 100644 --- a/test/infrastructure/docker/api/v1alpha3/conversion.go +++ b/test/infrastructure/docker/api/v1alpha3/conversion.go @@ -18,6 +18,7 @@ package v1alpha3 import ( "maps" + "reflect" "slices" "sort" @@ -41,26 +42,46 @@ func (src *DockerCluster) ConvertTo(dstRaw conversion.Hub) error { // Manually restore data. restored := &infrav1.DockerCluster{} - if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok { + ok, err := utilconversion.UnmarshalData(src, restored) + if err != nil { return err } - if restored.Spec.LoadBalancer.ImageRepository != "" { - dst.Spec.LoadBalancer.ImageRepository = restored.Spec.LoadBalancer.ImageRepository + // Recover intent for bool values converted to *bool. + initialization := infrav1.DockerClusterInitializationStatus{} + restoredDockerClusterProvisioned := restored.Status.Initialization.Provisioned + clusterv1.Convert_bool_To_Pointer_bool(src.Status.Ready, ok, restoredDockerClusterProvisioned, &initialization.Provisioned) + if !reflect.DeepEqual(initialization, infrav1.DockerClusterInitializationStatus{}) { + dst.Status.Initialization = initialization } - if restored.Spec.LoadBalancer.ImageTag != "" { - dst.Spec.LoadBalancer.ImageTag = restored.Spec.LoadBalancer.ImageTag + if ok { + RestoreDockerClusterSpec(&restored.Spec, &dst.Spec) } - if restored.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef != nil { - dst.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef = restored.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef + RestoreDockerClusterStatus(&restored.Status, &dst.Status) + + return nil +} + +func RestoreDockerClusterSpec(restored *infrav1.DockerClusterSpec, dst *infrav1.DockerClusterSpec) { + // Restore fields added in v1beta2. + if restored.LoadBalancer.ImageRepository != "" { + dst.LoadBalancer.ImageRepository = restored.LoadBalancer.ImageRepository + } + + if restored.LoadBalancer.ImageTag != "" { + dst.LoadBalancer.ImageTag = restored.LoadBalancer.ImageTag } - dst.Status.Conditions = restored.Status.Conditions - dst.Status.Initialization = restored.Status.Initialization + if restored.LoadBalancer.CustomHAProxyConfigTemplateRef != nil { + dst.LoadBalancer.CustomHAProxyConfigTemplateRef = restored.LoadBalancer.CustomHAProxyConfigTemplateRef + } +} - return nil +func RestoreDockerClusterStatus(restored *infrav1.DockerClusterStatus, dst *infrav1.DockerClusterStatus) { + // Restore fields added in v1beta2. + dst.Conditions = restored.Conditions } func (dst *DockerCluster) ConvertFrom(srcRaw conversion.Hub) error { @@ -70,12 +91,7 @@ func (dst *DockerCluster) ConvertFrom(srcRaw conversion.Hub) error { return err } - // Preserve Hub data on down-conversion except for metadata - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil + return utilconversion.MarshalData(src, dst) } func (src *DockerMachine) ConvertTo(dstRaw conversion.Hub) error { @@ -87,20 +103,40 @@ func (src *DockerMachine) ConvertTo(dstRaw conversion.Hub) error { // Manually restore data. restored := &infrav1.DockerMachine{} - if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok { + ok, err := utilconversion.UnmarshalData(src, restored) + if err != nil { return err } - if restored.Spec.BootstrapTimeout != nil { - dst.Spec.BootstrapTimeout = restored.Spec.BootstrapTimeout + // Recover intent for bool values converted to *bool. + initialization := infrav1.DockerMachineInitializationStatus{} + restoredDockerMachineProvisioned := restored.Status.Initialization.Provisioned + clusterv1.Convert_bool_To_Pointer_bool(src.Status.Ready, ok, restoredDockerMachineProvisioned, &initialization.Provisioned) + if !reflect.DeepEqual(initialization, infrav1.DockerMachineInitializationStatus{}) { + dst.Status.Initialization = initialization + } + + if ok { + RestoreDockerMachineSpec(&restored.Spec, &dst.Spec) } - dst.Status.Conditions = restored.Status.Conditions - dst.Status.Initialization = restored.Status.Initialization + RestoreDockerMachineStatus(&restored.Status, &dst.Status) return nil } +func RestoreDockerMachineSpec(restored *infrav1.DockerMachineSpec, dst *infrav1.DockerMachineSpec) { + // Restore fields added in v1beta2. + if restored.BootstrapTimeout != nil { + dst.BootstrapTimeout = restored.BootstrapTimeout + } +} + +func RestoreDockerMachineStatus(restored *infrav1.DockerMachineStatus, dst *infrav1.DockerMachineStatus) { + // Restore fields added in v1beta2. + dst.Conditions = restored.Conditions +} + func (dst *DockerMachine) ConvertFrom(srcRaw conversion.Hub) error { src := srcRaw.(*infrav1.DockerMachine) @@ -112,11 +148,7 @@ func (dst *DockerMachine) ConvertFrom(srcRaw conversion.Hub) error { dst.Spec.ProviderID = nil } - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil + return utilconversion.MarshalData(src, dst) } func (src *DockerMachineTemplate) ConvertTo(dstRaw conversion.Hub) error { @@ -128,16 +160,24 @@ func (src *DockerMachineTemplate) ConvertTo(dstRaw conversion.Hub) error { // Manually restore data. restored := &infrav1.DockerMachineTemplate{} - if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok { + ok, err := utilconversion.UnmarshalData(src, restored) + if err != nil { return err } - dst.Spec.Template.ObjectMeta = restored.Spec.Template.ObjectMeta - dst.Spec.Template.Spec.BootstrapTimeout = restored.Spec.Template.Spec.BootstrapTimeout + if ok { + RestoreDockerMachineTemplateSpec(&restored.Spec, &dst.Spec) + } return nil } +func RestoreDockerMachineTemplateSpec(restored *infrav1.DockerMachineTemplateSpec, dst *infrav1.DockerMachineTemplateSpec) { + // Restore fields added in v1beta2. + dst.Template.ObjectMeta = restored.Template.ObjectMeta + dst.Template.Spec.BootstrapTimeout = restored.Template.Spec.BootstrapTimeout +} + func (dst *DockerMachineTemplate) ConvertFrom(srcRaw conversion.Hub) error { src := srcRaw.(*infrav1.DockerMachineTemplate) @@ -149,12 +189,7 @@ func (dst *DockerMachineTemplate) ConvertFrom(srcRaw conversion.Hub) error { dst.Spec.Template.Spec.ProviderID = nil } - // Preserve Hub data on down-conversion except for metadata - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil + return utilconversion.MarshalData(src, dst) } // Convert_v1beta2_DockerClusterSpec_To_v1alpha3_DockerClusterSpec is an autogenerated conversion function. @@ -201,9 +236,7 @@ func Convert_v1beta2_DockerClusterStatus_To_v1alpha3_DockerClusterStatus(in *inf clusterv1alpha3.Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha3_Conditions(&in.Deprecated.V1Beta1.Conditions, &out.Conditions) } - if in.Initialization.Provisioned != nil { - out.Ready = *in.Initialization.Provisioned - } + out.Ready = ptr.Deref(in.Initialization.Provisioned, false) // Move FailureDomains if in.FailureDomains != nil { @@ -231,9 +264,7 @@ func Convert_v1beta2_DockerMachineStatus_To_v1alpha3_DockerMachineStatus(in *inf clusterv1alpha3.Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha3_Conditions(&in.Deprecated.V1Beta1.Conditions, &out.Conditions) } - if in.Initialization.Provisioned != nil { - out.Ready = *in.Initialization.Provisioned - } + out.Ready = ptr.Deref(in.Initialization.Provisioned, false) return nil } @@ -263,10 +294,6 @@ func Convert_v1alpha3_DockerMachineStatus_To_v1beta2_DockerMachineStatus(in *Doc clusterv1alpha3.Convert_v1alpha3_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions(&in.Conditions, &out.Deprecated.V1Beta1.Conditions) } - if in.Ready { - out.Initialization.Provisioned = ptr.To(in.Ready) - } - return nil } @@ -285,10 +312,6 @@ func Convert_v1alpha3_DockerClusterStatus_To_v1beta2_DockerClusterStatus(in *Doc clusterv1alpha3.Convert_v1alpha3_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions(&in.Conditions, &out.Deprecated.V1Beta1.Conditions) } - if in.Ready { - out.Initialization.Provisioned = ptr.To(in.Ready) - } - // Move FailureDomains if in.FailureDomains != nil { out.FailureDomains = []clusterv1.FailureDomain{} diff --git a/test/infrastructure/docker/api/v1alpha4/conversion.go b/test/infrastructure/docker/api/v1alpha4/conversion.go index ed90a2fbcd6d..f312d80508c3 100644 --- a/test/infrastructure/docker/api/v1alpha4/conversion.go +++ b/test/infrastructure/docker/api/v1alpha4/conversion.go @@ -18,6 +18,7 @@ package v1alpha4 import ( "maps" + "reflect" "slices" "sort" @@ -41,20 +42,39 @@ func (src *DockerCluster) ConvertTo(dstRaw conversion.Hub) error { // Manually restore data. restored := &infrav1.DockerCluster{} - if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok { + ok, err := utilconversion.UnmarshalData(src, restored) + if err != nil { return err } - if restored.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef != nil { - dst.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef = restored.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef + // Recover intent for bool values converted to *bool. + initialization := infrav1.DockerClusterInitializationStatus{} + restoredDockerClusterProvisioned := restored.Status.Initialization.Provisioned + clusterv1.Convert_bool_To_Pointer_bool(src.Status.Ready, ok, restoredDockerClusterProvisioned, &initialization.Provisioned) + if !reflect.DeepEqual(initialization, infrav1.DockerClusterInitializationStatus{}) { + dst.Status.Initialization = initialization } - dst.Status.Conditions = restored.Status.Conditions - dst.Status.Initialization = restored.Status.Initialization + if ok { + RestoreDockerClusterSpec(&restored.Spec, &dst.Spec) + } + + RestoreDockerClusterStatus(&restored.Status, &dst.Status) return nil } +func RestoreDockerClusterSpec(restored *infrav1.DockerClusterSpec, dst *infrav1.DockerClusterSpec) { + if restored.LoadBalancer.CustomHAProxyConfigTemplateRef != nil { + dst.LoadBalancer.CustomHAProxyConfigTemplateRef = restored.LoadBalancer.CustomHAProxyConfigTemplateRef + } +} + +func RestoreDockerClusterStatus(restored *infrav1.DockerClusterStatus, dst *infrav1.DockerClusterStatus) { + // Restore fields added in v1beta2. + dst.Conditions = restored.Conditions +} + func (dst *DockerCluster) ConvertFrom(srcRaw conversion.Hub) error { src := srcRaw.(*infrav1.DockerCluster) @@ -62,11 +82,7 @@ func (dst *DockerCluster) ConvertFrom(srcRaw conversion.Hub) error { return err } - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil + return utilconversion.MarshalData(src, dst) } func (src *DockerClusterTemplate) ConvertTo(dstRaw conversion.Hub) error { @@ -78,19 +94,27 @@ func (src *DockerClusterTemplate) ConvertTo(dstRaw conversion.Hub) error { // Manually restore data. restored := &infrav1.DockerClusterTemplate{} - if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok { + ok, err := utilconversion.UnmarshalData(src, restored) + if err != nil { return err } - dst.Spec.Template.ObjectMeta = restored.Spec.Template.ObjectMeta - - if restored.Spec.Template.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef != nil { - dst.Spec.Template.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef = restored.Spec.Template.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef + if ok { + RestoreDockerClusterTemplateSpec(&restored.Spec, &dst.Spec) } return nil } +func RestoreDockerClusterTemplateSpec(restored *infrav1.DockerClusterTemplateSpec, dst *infrav1.DockerClusterTemplateSpec) { + // Restore fields added in v1beta2. + dst.Template.ObjectMeta = restored.Template.ObjectMeta + + if restored.Template.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef != nil { + dst.Template.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef = restored.Template.Spec.LoadBalancer.CustomHAProxyConfigTemplateRef + } +} + func (dst *DockerClusterTemplate) ConvertFrom(srcRaw conversion.Hub) error { src := srcRaw.(*infrav1.DockerClusterTemplate) @@ -98,12 +122,7 @@ func (dst *DockerClusterTemplate) ConvertFrom(srcRaw conversion.Hub) error { return err } - // Preserve Hub data on down-conversion except for metadata - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil + return utilconversion.MarshalData(src, dst) } func (src *DockerMachine) ConvertTo(dstRaw conversion.Hub) error { @@ -115,20 +134,40 @@ func (src *DockerMachine) ConvertTo(dstRaw conversion.Hub) error { // Manually restore data. restored := &infrav1.DockerMachine{} - if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok { + ok, err := utilconversion.UnmarshalData(src, restored) + if err != nil { return err } - if restored.Spec.BootstrapTimeout != nil { - dst.Spec.BootstrapTimeout = restored.Spec.BootstrapTimeout + // Recover intent for bool values converted to *bool. + initialization := infrav1.DockerMachineInitializationStatus{} + restoredDockerMachineProvisioned := restored.Status.Initialization.Provisioned + clusterv1.Convert_bool_To_Pointer_bool(src.Status.Ready, ok, restoredDockerMachineProvisioned, &initialization.Provisioned) + if !reflect.DeepEqual(initialization, infrav1.DockerMachineInitializationStatus{}) { + dst.Status.Initialization = initialization } - dst.Status.Conditions = restored.Status.Conditions - dst.Status.Initialization = restored.Status.Initialization + if ok { + RestoreDockerMachineSpec(&restored.Spec, &dst.Spec) + } + + RestoreDockerMachineStatus(&restored.Status, &dst.Status) return nil } +func RestoreDockerMachineSpec(restored *infrav1.DockerMachineSpec, dst *infrav1.DockerMachineSpec) { + // Restore fields added in v1beta2. + if restored.BootstrapTimeout != nil { + dst.BootstrapTimeout = restored.BootstrapTimeout + } +} + +func RestoreDockerMachineStatus(restored *infrav1.DockerMachineStatus, dst *infrav1.DockerMachineStatus) { + // Restore fields added in v1beta2. + dst.Conditions = restored.Conditions +} + func (dst *DockerMachine) ConvertFrom(srcRaw conversion.Hub) error { src := srcRaw.(*infrav1.DockerMachine) @@ -140,11 +179,7 @@ func (dst *DockerMachine) ConvertFrom(srcRaw conversion.Hub) error { dst.Spec.ProviderID = nil } - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil + return utilconversion.MarshalData(src, dst) } func (src *DockerMachineTemplate) ConvertTo(dstRaw conversion.Hub) error { @@ -156,16 +191,27 @@ func (src *DockerMachineTemplate) ConvertTo(dstRaw conversion.Hub) error { // Manually restore data. restored := &infrav1.DockerMachineTemplate{} - if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok { + ok, err := utilconversion.UnmarshalData(src, restored) + if err != nil { return err } - dst.Spec.Template.ObjectMeta = restored.Spec.Template.ObjectMeta - dst.Spec.Template.Spec.BootstrapTimeout = restored.Spec.Template.Spec.BootstrapTimeout + if ok { + RestoreDockerMachineTemplateSpec(&restored.Spec, &dst.Spec) + } return nil } +func RestoreDockerMachineTemplateSpec(restored *infrav1.DockerMachineTemplateSpec, dst *infrav1.DockerMachineTemplateSpec) { + // Restore fields added in v1beta2. + dst.Template.ObjectMeta = restored.Template.ObjectMeta + + if restored.Template.Spec.BootstrapTimeout != nil { + dst.Template.Spec.BootstrapTimeout = restored.Template.Spec.BootstrapTimeout + } +} + func (dst *DockerMachineTemplate) ConvertFrom(srcRaw conversion.Hub) error { src := srcRaw.(*infrav1.DockerMachineTemplate) @@ -177,12 +223,7 @@ func (dst *DockerMachineTemplate) ConvertFrom(srcRaw conversion.Hub) error { dst.Spec.Template.Spec.ProviderID = nil } - // Preserve Hub data on down-conversion except for metadata - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil + return utilconversion.MarshalData(src, dst) } func Convert_v1beta2_DockerClusterTemplateResource_To_v1alpha4_DockerClusterTemplateResource(in *infrav1.DockerClusterTemplateResource, out *DockerClusterTemplateResource, s apiconversion.Scope) error { @@ -215,9 +256,7 @@ func Convert_v1beta2_DockerClusterStatus_To_v1alpha4_DockerClusterStatus(in *inf clusterv1alpha4.Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha4_Conditions(&in.Deprecated.V1Beta1.Conditions, &out.Conditions) } - if in.Initialization.Provisioned != nil { - out.Ready = *in.Initialization.Provisioned - } + out.Ready = ptr.Deref(in.Initialization.Provisioned, false) // Move FailureDomains if in.FailureDomains != nil { @@ -245,9 +284,7 @@ func Convert_v1beta2_DockerMachineStatus_To_v1alpha4_DockerMachineStatus(in *inf clusterv1alpha4.Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha4_Conditions(&in.Deprecated.V1Beta1.Conditions, &out.Conditions) } - if in.Initialization.Provisioned != nil { - out.Ready = *in.Initialization.Provisioned - } + out.Ready = ptr.Deref(in.Initialization.Provisioned, false) return nil } @@ -292,10 +329,6 @@ func Convert_v1alpha4_DockerMachineStatus_To_v1beta2_DockerMachineStatus(in *Doc clusterv1alpha4.Convert_v1alpha4_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions(&in.Conditions, &out.Deprecated.V1Beta1.Conditions) } - if in.Ready { - out.Initialization.Provisioned = ptr.To(in.Ready) - } - return nil } @@ -314,10 +347,6 @@ func Convert_v1alpha4_DockerClusterStatus_To_v1beta2_DockerClusterStatus(in *Doc clusterv1alpha4.Convert_v1alpha4_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions(&in.Conditions, &out.Deprecated.V1Beta1.Conditions) } - if in.Ready { - out.Initialization.Provisioned = ptr.To(in.Ready) - } - // Move FailureDomains if in.FailureDomains != nil { out.FailureDomains = []clusterv1.FailureDomain{} diff --git a/test/infrastructure/docker/api/v1beta1/conversion.go b/test/infrastructure/docker/api/v1beta1/conversion.go index 38eab8a7dc32..bcc7e7bccc5a 100644 --- a/test/infrastructure/docker/api/v1beta1/conversion.go +++ b/test/infrastructure/docker/api/v1beta1/conversion.go @@ -18,6 +18,7 @@ package v1beta1 import ( "maps" + "reflect" "slices" "sort" @@ -40,11 +41,18 @@ func (src *DockerCluster) ConvertTo(dstRaw conversion.Hub) error { } restored := &infrav1.DockerCluster{} - if ok, err := utilconversion.UnmarshalData(dst, restored); err != nil || !ok { + ok, err := utilconversion.UnmarshalData(dst, restored) + if err != nil { return err } - dst.Status.Initialization = restored.Status.Initialization + // Recover intent for bool values converted to *bool. + initialization := infrav1.DockerClusterInitializationStatus{} + restoredDockerClusterProvisioned := restored.Status.Initialization.Provisioned + clusterv1.Convert_bool_To_Pointer_bool(src.Status.Ready, ok, restoredDockerClusterProvisioned, &initialization.Provisioned) + if !reflect.DeepEqual(initialization, infrav1.DockerClusterInitializationStatus{}) { + dst.Status.Initialization = initialization + } return nil } @@ -56,11 +64,7 @@ func (dst *DockerCluster) ConvertFrom(srcRaw conversion.Hub) error { return err } - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil + return utilconversion.MarshalData(src, dst) } func (src *DockerClusterTemplate) ConvertTo(dstRaw conversion.Hub) error { @@ -83,11 +87,18 @@ func (src *DockerMachine) ConvertTo(dstRaw conversion.Hub) error { } restored := &infrav1.DockerMachine{} - if ok, err := utilconversion.UnmarshalData(dst, restored); err != nil || !ok { + ok, err := utilconversion.UnmarshalData(src, restored) + if err != nil { return err } - dst.Status.Initialization = restored.Status.Initialization + // Recover intent for bool values converted to *bool. + initialization := infrav1.DockerMachineInitializationStatus{} + restoredDockerMachineProvisioned := restored.Status.Initialization.Provisioned + clusterv1.Convert_bool_To_Pointer_bool(src.Status.Ready, ok, restoredDockerMachineProvisioned, &initialization.Provisioned) + if !reflect.DeepEqual(initialization, infrav1.DockerMachineInitializationStatus{}) { + dst.Status.Initialization = initialization + } return nil } @@ -103,11 +114,7 @@ func (dst *DockerMachine) ConvertFrom(srcRaw conversion.Hub) error { dst.Spec.ProviderID = nil } - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil + return utilconversion.MarshalData(src, dst) } func (src *DockerMachineTemplate) ConvertTo(dstRaw conversion.Hub) error { @@ -137,12 +144,20 @@ func (src *DevCluster) ConvertTo(dstRaw conversion.Hub) error { return err } + // Manually restore data. restored := &infrav1.DevCluster{} - if ok, err := utilconversion.UnmarshalData(dst, restored); err != nil || !ok { + ok, err := utilconversion.UnmarshalData(src, restored) + if err != nil { return err } - dst.Status.Initialization = restored.Status.Initialization + // Recover intent for bool values converted to *bool. + initialization := infrav1.DevClusterInitializationStatus{} + restoredDockerMachineProvisioned := restored.Status.Initialization.Provisioned + clusterv1.Convert_bool_To_Pointer_bool(src.Status.Ready, ok, restoredDockerMachineProvisioned, &initialization.Provisioned) + if !reflect.DeepEqual(initialization, infrav1.DevClusterInitializationStatus{}) { + dst.Status.Initialization = initialization + } return nil } @@ -154,11 +169,7 @@ func (dst *DevCluster) ConvertFrom(srcRaw conversion.Hub) error { return err } - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil + return utilconversion.MarshalData(src, dst) } func (src *DevClusterTemplate) ConvertTo(dstRaw conversion.Hub) error { @@ -180,12 +191,20 @@ func (src *DevMachine) ConvertTo(dstRaw conversion.Hub) error { return err } + // Manually restore data. restored := &infrav1.DevMachine{} - if ok, err := utilconversion.UnmarshalData(dst, restored); err != nil || !ok { + ok, err := utilconversion.UnmarshalData(src, restored) + if err != nil { return err } - dst.Status.Initialization = restored.Status.Initialization + // Recover intent for bool values converted to *bool. + initialization := infrav1.DevMachineInitializationStatus{} + restoredDevMachineProvisioned := restored.Status.Initialization.Provisioned + clusterv1.Convert_bool_To_Pointer_bool(src.Status.Ready, ok, restoredDevMachineProvisioned, &initialization.Provisioned) + if !reflect.DeepEqual(initialization, infrav1.DevMachineInitializationStatus{}) { + dst.Status.Initialization = initialization + } return nil } @@ -201,11 +220,7 @@ func (dst *DevMachine) ConvertFrom(srcRaw conversion.Hub) error { dst.Spec.ProviderID = nil } - if err := utilconversion.MarshalData(src, dst); err != nil { - return err - } - - return nil + return utilconversion.MarshalData(src, dst) } func (src *DevMachineTemplate) ConvertTo(dstRaw conversion.Hub) error { @@ -241,10 +256,6 @@ func Convert_v1beta1_DevClusterStatus_To_v1beta2_DevClusterStatus(in *DevCluster return err } - if in.Ready { - out.Initialization.Provisioned = ptr.To(in.Ready) - } - if in.FailureDomains != nil { out.FailureDomains = []clusterv1.FailureDomain{} domainNames := slices.Collect(maps.Keys(in.FailureDomains)) @@ -289,9 +300,7 @@ func Convert_v1beta2_DevClusterStatus_To_v1beta1_DevClusterStatus(in *infrav1.De return err } - if in.Initialization.Provisioned != nil { - out.Ready = *in.Initialization.Provisioned - } + out.Ready = ptr.Deref(in.Initialization.Provisioned, false) if in.FailureDomains != nil { out.FailureDomains = clusterv1beta1.FailureDomains{} @@ -327,10 +336,6 @@ func Convert_v1beta1_DevMachineStatus_To_v1beta2_DevMachineStatus(in *DevMachine return err } - if in.Ready { - out.Initialization.Provisioned = ptr.To(in.Ready) - } - // Reset conditions from autogenerated conversions // NOTE: v1beta1 conditions should not be automatically be converted into v1beta2 conditions. out.Conditions = nil @@ -361,9 +366,7 @@ func Convert_v1beta2_DevMachineStatus_To_v1beta1_DevMachineStatus(in *infrav1.De return err } - if in.Initialization.Provisioned != nil { - out.Ready = *in.Initialization.Provisioned - } + out.Ready = ptr.Deref(in.Initialization.Provisioned, false) // Reset conditions from autogenerated conversions // NOTE: v1beta2 conditions should not be automatically be converted into legacy conditions (v1beta1). @@ -390,10 +393,6 @@ func Convert_v1beta1_DockerClusterStatus_To_v1beta2_DockerClusterStatus(in *Dock return err } - if in.Ready { - out.Initialization.Provisioned = ptr.To(in.Ready) - } - if in.FailureDomains != nil { out.FailureDomains = []clusterv1.FailureDomain{} domainNames := slices.Collect(maps.Keys(in.FailureDomains)) @@ -438,9 +437,7 @@ func Convert_v1beta2_DockerClusterStatus_To_v1beta1_DockerClusterStatus(in *infr return err } - if in.Initialization.Provisioned != nil { - out.Ready = *in.Initialization.Provisioned - } + out.Ready = ptr.Deref(in.Initialization.Provisioned, false) if in.FailureDomains != nil { out.FailureDomains = clusterv1beta1.FailureDomains{} @@ -476,10 +473,6 @@ func Convert_v1beta1_DockerMachineStatus_To_v1beta2_DockerMachineStatus(in *Dock return err } - if in.Ready { - out.Initialization.Provisioned = ptr.To(in.Ready) - } - // Reset conditions from autogenerated conversions // NOTE: v1beta1 conditions should not be automatically be converted into v1beta2 conditions. out.Conditions = nil @@ -511,7 +504,7 @@ func Convert_v1beta2_DockerMachineStatus_To_v1beta1_DockerMachineStatus(in *infr } if in.Initialization.Provisioned != nil { - out.Ready = *in.Initialization.Provisioned + out.Ready = ptr.Deref(in.Initialization.Provisioned, false) } // Reset conditions from autogenerated conversions