Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 0 additions & 88 deletions api/core/v1beta1/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -44,94 +44,6 @@ func SetAPIVersionGetter(f func(gk schema.GroupKind) (string, error)) {
apiVersionGetter = f
}

func (src *Cluster) ConvertTo(dstRaw conversion.Hub) error {
dst := dstRaw.(*clusterv1.Cluster)

if err := Convert_v1beta1_Cluster_To_v1beta2_Cluster(src, dst, nil); err != nil {
return err
}

if src.Spec.InfrastructureRef != nil {
infraRef, err := convertToContractVersionedObjectReference(src.Spec.InfrastructureRef)
if err != nil {
return err
}
dst.Spec.InfrastructureRef = infraRef
}

if src.Spec.ControlPlaneRef != nil {
controlPlaneRef, err := convertToContractVersionedObjectReference(src.Spec.ControlPlaneRef)
if err != nil {
return err
}
dst.Spec.ControlPlaneRef = controlPlaneRef
}

restored := &clusterv1.Cluster{}
ok, err := utilconversion.UnmarshalData(src, restored)
if err != nil {
return err
}

// Recover intent for bool values converted to *bool.
clusterv1.Convert_bool_To_Pointer_bool(src.Spec.Paused, ok, restored.Spec.Paused, &dst.Spec.Paused)

initialization := clusterv1.ClusterInitializationStatus{}
restoredControlPlaneInitialized := restored.Status.Initialization.ControlPlaneInitialized
restoredInfrastructureProvisioned := restored.Status.Initialization.InfrastructureProvisioned
clusterv1.Convert_bool_To_Pointer_bool(src.Status.ControlPlaneReady, ok, restoredControlPlaneInitialized, &initialization.ControlPlaneInitialized)
clusterv1.Convert_bool_To_Pointer_bool(src.Status.InfrastructureReady, ok, restoredInfrastructureProvisioned, &initialization.InfrastructureProvisioned)
if !reflect.DeepEqual(initialization, clusterv1.ClusterInitializationStatus{}) {
dst.Status.Initialization = initialization
}
return nil
}

func (dst *Cluster) ConvertFrom(srcRaw conversion.Hub) error {
src := srcRaw.(*clusterv1.Cluster)
if err := Convert_v1beta2_Cluster_To_v1beta1_Cluster(src, dst, nil); err != nil {
return err
}

if src.Spec.InfrastructureRef.IsDefined() {
infraRef, err := convertToObjectReference(src.Spec.InfrastructureRef, src.Namespace)
if err != nil {
return err
}
dst.Spec.InfrastructureRef = infraRef
}

if src.Spec.ControlPlaneRef.IsDefined() {
controlPlaneRef, err := convertToObjectReference(src.Spec.ControlPlaneRef, src.Namespace)
if err != nil {
return err
}
dst.Spec.ControlPlaneRef = controlPlaneRef
}

if dst.Spec.ClusterNetwork != nil && dst.Spec.ClusterNetwork.APIServerPort != nil &&
*dst.Spec.ClusterNetwork.APIServerPort == 0 {
dst.Spec.ClusterNetwork.APIServerPort = nil
}

if dst.Spec.Topology != nil {
if dst.Spec.Topology.ControlPlane.MachineHealthCheck != nil && dst.Spec.Topology.ControlPlane.MachineHealthCheck.RemediationTemplate != nil {
dst.Spec.Topology.ControlPlane.MachineHealthCheck.RemediationTemplate.Namespace = dst.Namespace
}
if dst.Spec.Topology.Workers != nil {
for _, md := range dst.Spec.Topology.Workers.MachineDeployments {
if md.MachineHealthCheck != nil && md.MachineHealthCheck.RemediationTemplate != nil {
md.MachineHealthCheck.RemediationTemplate.Namespace = dst.Namespace
}
}
}
}

dropEmptyStringsCluster(dst)

return utilconversion.MarshalData(src, dst)
}

func (src *ClusterClass) ConvertTo(dstRaw conversion.Hub) error {
dst := dstRaw.(*clusterv1.ClusterClass)

Expand Down
1 change: 1 addition & 0 deletions api/core/v1beta1/conversion_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ func TestFuzzyConversion(t *testing.T) {
return "", fmt.Errorf("failed to map GroupKind %s to version", gk.String())
})

// FIXME: implement a new test util for the new conversion.
t.Run("for Cluster", utilconversion.FuzzTestFunc(utilconversion.FuzzTestFuncInput{
Hub: &clusterv1.Cluster{},
Spoke: &Cluster{},
Expand Down
1 change: 0 additions & 1 deletion api/core/v1beta2/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import (
"k8s.io/utils/ptr"
)

func (*Cluster) Hub() {}
func (*ClusterClass) Hub() {}
func (*Machine) Hub() {}
func (*MachineSet) Hub() {}
Expand Down
5 changes: 0 additions & 5 deletions api/runtime/v1alpha1/.import-restrictions

This file was deleted.

24 changes: 0 additions & 24 deletions api/runtime/v1alpha1/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,35 +22,11 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
apimachineryconversion "k8s.io/apimachinery/pkg/conversion"
"k8s.io/utils/ptr"
"sigs.k8s.io/controller-runtime/pkg/conversion"

clusterv1beta1 "sigs.k8s.io/cluster-api/api/core/v1beta1"
runtimev1 "sigs.k8s.io/cluster-api/api/runtime/v1beta2"
)

func (src *ExtensionConfig) ConvertTo(dstRaw conversion.Hub) error {
dst := dstRaw.(*runtimev1.ExtensionConfig)

return Convert_v1alpha1_ExtensionConfig_To_v1beta2_ExtensionConfig(src, dst, nil)
}

func (dst *ExtensionConfig) ConvertFrom(srcRaw conversion.Hub) error {
src := srcRaw.(*runtimev1.ExtensionConfig)

if err := Convert_v1beta2_ExtensionConfig_To_v1alpha1_ExtensionConfig(src, dst, nil); err != nil {
return err
}

dropEmptyStringsExtensionConfig(dst)
for i, h := range dst.Status.Handlers {
if h.TimeoutSeconds != nil && *h.TimeoutSeconds == 0 {
h.TimeoutSeconds = nil
}
dst.Status.Handlers[i] = h
}
return nil
}

func Convert_v1beta2_ExtensionConfigStatus_To_v1alpha1_ExtensionConfigStatus(in *runtimev1.ExtensionConfigStatus, out *ExtensionConfigStatus, s apimachineryconversion.Scope) error {
if err := autoConvert_v1beta2_ExtensionConfigStatus_To_v1alpha1_ExtensionConfigStatus(in, out, s); err != nil {
return err
Expand Down
19 changes: 0 additions & 19 deletions api/runtime/v1beta2/conversion.go

This file was deleted.

2 changes: 2 additions & 0 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ module sigs.k8s.io/cluster-api

go 1.24.0

replace sigs.k8s.io/controller-runtime => ../controller-runtime

require (
github.com/MakeNowJust/heredoc v1.0.0
github.com/Masterminds/sprig/v3 v3.3.0
Expand Down
2 changes: 0 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -606,8 +606,6 @@ rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA=
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 h1:jpcvIRr3GLoUoEKRkHKSmGjxb6lWwrBlJsXc+eUYQHM=
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw=
sigs.k8s.io/controller-runtime v0.22.1 h1:Ah1T7I+0A7ize291nJZdS1CabF/lB4E++WizgV24Eqg=
sigs.k8s.io/controller-runtime v0.22.1/go.mod h1:FwiwRjkRPbiN+zp2QRp7wlTCzbUXxZ/D4OzuQUDwBHY=
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
Expand Down
2 changes: 2 additions & 0 deletions hack/tools/go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@ replace sigs.k8s.io/cluster-api => ../../

replace sigs.k8s.io/cluster-api/test => ../../test

replace sigs.k8s.io/controller-runtime => ../../../controller-runtime

require (
cloud.google.com/go/storage v1.57.0
github.com/blang/semver/v4 v4.0.0
Expand Down
2 changes: 0 additions & 2 deletions hack/tools/go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -544,8 +544,6 @@ k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 h1:jpcvIRr3GLoUoEKRkHKSmGjxb6lWwrBlJsXc+eUYQHM=
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2/go.mod h1:Ve9uj1L+deCXFrPOk1LpFXqTg7LCFzFso6PA48q/XZw=
sigs.k8s.io/controller-runtime v0.22.1 h1:Ah1T7I+0A7ize291nJZdS1CabF/lB4E++WizgV24Eqg=
sigs.k8s.io/controller-runtime v0.22.1/go.mod h1:FwiwRjkRPbiN+zp2QRp7wlTCzbUXxZ/D4OzuQUDwBHY=
sigs.k8s.io/controller-tools v0.19.0 h1:OU7jrPPiZusryu6YK0jYSjPqg8Vhf8cAzluP9XGI5uk=
sigs.k8s.io/controller-tools v0.19.0/go.mod h1:y5HY/iNDFkmFla2CfQoVb2AQXMsBk4ad84iR1PLANB0=
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
Expand Down
153 changes: 0 additions & 153 deletions internal/api/core/v1alpha3/conversion.go
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,6 @@ import (

clusterv1beta1 "sigs.k8s.io/cluster-api/api/core/v1beta1"
clusterv1 "sigs.k8s.io/cluster-api/api/core/v1beta2"
v1beta1conditions "sigs.k8s.io/cluster-api/util/conditions/deprecated/v1beta1"
utilconversion "sigs.k8s.io/cluster-api/util/conversion"
)

Expand All @@ -47,158 +46,6 @@ func SetAPIVersionGetter(f func(gk schema.GroupKind) (string, error)) {
apiVersionGetter = f
}

func (src *Cluster) ConvertTo(dstRaw conversion.Hub) error {
dst := dstRaw.(*clusterv1.Cluster)

if err := Convert_v1alpha3_Cluster_To_v1beta2_Cluster(src, dst, nil); err != nil {
return err
}

if src.Spec.InfrastructureRef != nil {
infraRef, err := convertToContractVersionedObjectReference(src.Spec.InfrastructureRef)
if err != nil {
return err
}
dst.Spec.InfrastructureRef = infraRef
}

if src.Spec.ControlPlaneRef != nil {
controlPlaneRef, err := convertToContractVersionedObjectReference(src.Spec.ControlPlaneRef)
if err != nil {
return err
}
dst.Spec.ControlPlaneRef = controlPlaneRef
}

// Reset conditions from autogenerated conversions
// NOTE: v1alpha3 conditions should not be automatically be converted into v1beta2 conditions.
dst.Status.Conditions = nil

// Move legacy conditions (v1alpha3), failureReason and failureMessage to the deprecated field.
if src.Status.Conditions != nil || src.Status.FailureReason != nil || src.Status.FailureMessage != nil {
dst.Status.Deprecated = &clusterv1.ClusterDeprecatedStatus{}
dst.Status.Deprecated.V1Beta1 = &clusterv1.ClusterV1Beta1DeprecatedStatus{}
if src.Status.Conditions != nil {
Convert_v1alpha3_Conditions_To_v1beta2_Deprecated_V1Beta1_Conditions(&src.Status.Conditions, &dst.Status.Deprecated.V1Beta1.Conditions)
}
dst.Status.Deprecated.V1Beta1.FailureReason = src.Status.FailureReason
dst.Status.Deprecated.V1Beta1.FailureMessage = src.Status.FailureMessage
}

// Given this is a bool and there is no timestamp associated with it, when this condition is set, its timestamp
// will be "now". See https://github.com/kubernetes-sigs/cluster-api/issues/3798#issuecomment-708619826 for more
// discussion.
if src.Status.ControlPlaneInitialized {
v1beta1conditions.MarkTrue(dst, clusterv1.ControlPlaneInitializedV1Beta1Condition)
}

// Manually restore data.
restored := &clusterv1.Cluster{}
ok, err := utilconversion.UnmarshalData(src, restored)
if err != nil {
return err
}

// Recover intent for bool values converted to *bool.
clusterv1.Convert_bool_To_Pointer_bool(src.Spec.Paused, ok, restored.Spec.Paused, &dst.Spec.Paused)

initialization := clusterv1.ClusterInitializationStatus{}
restoredControlPlaneInitialized := restored.Status.Initialization.ControlPlaneInitialized
restoredInfrastructureProvisioned := restored.Status.Initialization.InfrastructureProvisioned
clusterv1.Convert_bool_To_Pointer_bool(src.Status.ControlPlaneReady, ok, restoredControlPlaneInitialized, &initialization.ControlPlaneInitialized)
clusterv1.Convert_bool_To_Pointer_bool(src.Status.InfrastructureReady, ok, restoredInfrastructureProvisioned, &initialization.InfrastructureProvisioned)
if !reflect.DeepEqual(initialization, clusterv1.ClusterInitializationStatus{}) {
dst.Status.Initialization = initialization
}

for i, fd := range dst.Status.FailureDomains {
srcFD, ok := src.Status.FailureDomains[fd.Name]
if !ok {
return fmt.Errorf("failure domain %q not found in source data", fd.Name)
}
var restoredFDControlPlane *bool
for _, restoredFD := range restored.Status.FailureDomains {
if restoredFD.Name == fd.Name {
restoredFDControlPlane = restoredFD.ControlPlane
break
}
}
clusterv1.Convert_bool_To_Pointer_bool(srcFD.ControlPlane, ok, restoredFDControlPlane, &fd.ControlPlane)
dst.Status.FailureDomains[i] = fd
}

// Recover other values
if ok {
dst.Spec.AvailabilityGates = restored.Spec.AvailabilityGates
dst.Spec.Topology = restored.Spec.Topology
dst.Status.Conditions = restored.Status.Conditions
dst.Status.ControlPlane = restored.Status.ControlPlane
dst.Status.Workers = restored.Status.Workers
}

return nil
}

func (dst *Cluster) ConvertFrom(srcRaw conversion.Hub) error {
src := srcRaw.(*clusterv1.Cluster)

if err := Convert_v1beta2_Cluster_To_v1alpha3_Cluster(src, dst, nil); err != nil {
return err
}

if src.Spec.InfrastructureRef.IsDefined() {
infraRef, err := convertToObjectReference(src.Spec.InfrastructureRef, src.Namespace)
if err != nil {
return err
}
dst.Spec.InfrastructureRef = infraRef
}

if src.Spec.ControlPlaneRef.IsDefined() {
controlPlaneRef, err := convertToObjectReference(src.Spec.ControlPlaneRef, src.Namespace)
if err != nil {
return err
}
dst.Spec.ControlPlaneRef = controlPlaneRef
}

if dst.Spec.ClusterNetwork != nil && dst.Spec.ClusterNetwork.APIServerPort != nil &&
*dst.Spec.ClusterNetwork.APIServerPort == 0 {
dst.Spec.ClusterNetwork.APIServerPort = nil
}

// Reset conditions from autogenerated conversions
// NOTE: v1beta2 conditions should not be automatically be converted into legacy conditions (v1alpha3).
dst.Status.Conditions = nil

// Retrieve legacy conditions (v1alpha3), failureReason and failureMessage from the deprecated field.
if src.Status.Deprecated != nil {
if src.Status.Deprecated.V1Beta1 != nil {
if src.Status.Deprecated.V1Beta1.Conditions != nil {
Convert_v1beta2_Deprecated_V1Beta1_Conditions_To_v1alpha3_Conditions(&src.Status.Deprecated.V1Beta1.Conditions, &dst.Status.Conditions)
}
dst.Status.FailureReason = src.Status.Deprecated.V1Beta1.FailureReason
dst.Status.FailureMessage = src.Status.Deprecated.V1Beta1.FailureMessage
}
}

// Set the v1alpha3 boolean status field if the v1alpha4 condition was true
if v1beta1conditions.IsTrue(src, clusterv1.ControlPlaneInitializedV1Beta1Condition) {
dst.Status.ControlPlaneInitialized = true
}

// Move initialization to old fields
dst.Status.ControlPlaneReady = ptr.Deref(src.Status.Initialization.ControlPlaneInitialized, false)
dst.Status.InfrastructureReady = ptr.Deref(src.Status.Initialization.InfrastructureProvisioned, false)

// Preserve Hub data on down-conversion except for metadata
if err := utilconversion.MarshalData(src, dst); err != nil {
return err
}

return nil
}

func (src *Machine) ConvertTo(dstRaw conversion.Hub) error {
dst := dstRaw.(*clusterv1.Machine)

Expand Down
Loading
Loading