sigs.k8s.io/cluster-api@v1.7.1/internal/apis/controlplane/kubeadm/v1alpha3/conversion.go (about)

     1  /*
     2  Copyright 2020 The Kubernetes Authors.
     3  
     4  Licensed under the Apache License, Version 2.0 (the "License");
     5  you may not use this file except in compliance with the License.
     6  You may obtain a copy of the License at
     7  
     8      http://www.apache.org/licenses/LICENSE-2.0
     9  
    10  Unless required by applicable law or agreed to in writing, software
    11  distributed under the License is distributed on an "AS IS" BASIS,
    12  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    13  See the License for the specific language governing permissions and
    14  limitations under the License.
    15  */
    16  
    17  package v1alpha3
    18  
    19  import (
    20  	apiconversion "k8s.io/apimachinery/pkg/conversion"
    21  	"sigs.k8s.io/controller-runtime/pkg/conversion"
    22  
    23  	bootstrapv1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1"
    24  	controlplanev1 "sigs.k8s.io/cluster-api/controlplane/kubeadm/api/v1beta1"
    25  	utilconversion "sigs.k8s.io/cluster-api/util/conversion"
    26  )
    27  
    28  func (src *KubeadmControlPlane) ConvertTo(dstRaw conversion.Hub) error {
    29  	dst := dstRaw.(*controlplanev1.KubeadmControlPlane)
    30  
    31  	if err := Convert_v1alpha3_KubeadmControlPlane_To_v1beta1_KubeadmControlPlane(src, dst, nil); err != nil {
    32  		return err
    33  	}
    34  
    35  	// Manually restore data.
    36  	restored := &controlplanev1.KubeadmControlPlane{}
    37  	if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
    38  		return err
    39  	}
    40  
    41  	dst.Spec.MachineTemplate.ObjectMeta = restored.Spec.MachineTemplate.ObjectMeta
    42  	dst.Spec.MachineTemplate.NodeDeletionTimeout = restored.Spec.MachineTemplate.NodeDeletionTimeout
    43  	dst.Spec.KubeadmConfigSpec.Files = restored.Spec.KubeadmConfigSpec.Files
    44  	dst.Spec.KubeadmConfigSpec.Users = restored.Spec.KubeadmConfigSpec.Users
    45  	dst.Spec.MachineTemplate.NodeVolumeDetachTimeout = restored.Spec.MachineTemplate.NodeVolumeDetachTimeout
    46  	dst.Status.Version = restored.Status.Version
    47  
    48  	if restored.Spec.KubeadmConfigSpec.Users != nil {
    49  		for i := range restored.Spec.KubeadmConfigSpec.Users {
    50  			if restored.Spec.KubeadmConfigSpec.Users[i].PasswdFrom != nil {
    51  				dst.Spec.KubeadmConfigSpec.Users[i].PasswdFrom = restored.Spec.KubeadmConfigSpec.Users[i].PasswdFrom
    52  			}
    53  		}
    54  	}
    55  
    56  	if restored.Spec.KubeadmConfigSpec.JoinConfiguration != nil && restored.Spec.KubeadmConfigSpec.JoinConfiguration.NodeRegistration.IgnorePreflightErrors != nil {
    57  		if dst.Spec.KubeadmConfigSpec.JoinConfiguration == nil {
    58  			dst.Spec.KubeadmConfigSpec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
    59  		}
    60  		dst.Spec.KubeadmConfigSpec.JoinConfiguration.NodeRegistration.IgnorePreflightErrors = restored.Spec.KubeadmConfigSpec.JoinConfiguration.NodeRegistration.IgnorePreflightErrors
    61  	}
    62  
    63  	if restored.Spec.KubeadmConfigSpec.InitConfiguration != nil && restored.Spec.KubeadmConfigSpec.InitConfiguration.NodeRegistration.IgnorePreflightErrors != nil {
    64  		if dst.Spec.KubeadmConfigSpec.InitConfiguration == nil {
    65  			dst.Spec.KubeadmConfigSpec.InitConfiguration = &bootstrapv1.InitConfiguration{}
    66  		}
    67  		dst.Spec.KubeadmConfigSpec.InitConfiguration.NodeRegistration.IgnorePreflightErrors = restored.Spec.KubeadmConfigSpec.InitConfiguration.NodeRegistration.IgnorePreflightErrors
    68  	}
    69  
    70  	dst.Spec.KubeadmConfigSpec.Ignition = restored.Spec.KubeadmConfigSpec.Ignition
    71  	if restored.Spec.KubeadmConfigSpec.InitConfiguration != nil {
    72  		if dst.Spec.KubeadmConfigSpec.InitConfiguration == nil {
    73  			dst.Spec.KubeadmConfigSpec.InitConfiguration = &bootstrapv1.InitConfiguration{}
    74  		}
    75  		dst.Spec.KubeadmConfigSpec.InitConfiguration.Patches = restored.Spec.KubeadmConfigSpec.InitConfiguration.Patches
    76  		dst.Spec.KubeadmConfigSpec.InitConfiguration.SkipPhases = restored.Spec.KubeadmConfigSpec.InitConfiguration.SkipPhases
    77  	}
    78  	if restored.Spec.KubeadmConfigSpec.JoinConfiguration != nil {
    79  		if dst.Spec.KubeadmConfigSpec.JoinConfiguration == nil {
    80  			dst.Spec.KubeadmConfigSpec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
    81  		}
    82  		dst.Spec.KubeadmConfigSpec.JoinConfiguration.Patches = restored.Spec.KubeadmConfigSpec.JoinConfiguration.Patches
    83  		dst.Spec.KubeadmConfigSpec.JoinConfiguration.SkipPhases = restored.Spec.KubeadmConfigSpec.JoinConfiguration.SkipPhases
    84  	}
    85  
    86  	dst.Spec.RolloutBefore = restored.Spec.RolloutBefore
    87  
    88  	if restored.Spec.KubeadmConfigSpec.JoinConfiguration != nil && restored.Spec.KubeadmConfigSpec.JoinConfiguration.NodeRegistration.ImagePullPolicy != "" {
    89  		if dst.Spec.KubeadmConfigSpec.JoinConfiguration == nil {
    90  			dst.Spec.KubeadmConfigSpec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
    91  		}
    92  		dst.Spec.KubeadmConfigSpec.JoinConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.KubeadmConfigSpec.JoinConfiguration.NodeRegistration.ImagePullPolicy
    93  	}
    94  
    95  	if restored.Spec.KubeadmConfigSpec.InitConfiguration != nil && restored.Spec.KubeadmConfigSpec.InitConfiguration.NodeRegistration.ImagePullPolicy != "" {
    96  		if dst.Spec.KubeadmConfigSpec.InitConfiguration == nil {
    97  			dst.Spec.KubeadmConfigSpec.InitConfiguration = &bootstrapv1.InitConfiguration{}
    98  		}
    99  		dst.Spec.KubeadmConfigSpec.InitConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.KubeadmConfigSpec.InitConfiguration.NodeRegistration.ImagePullPolicy
   100  	}
   101  
   102  	if restored.Spec.RemediationStrategy != nil {
   103  		dst.Spec.RemediationStrategy = restored.Spec.RemediationStrategy
   104  	}
   105  	if restored.Status.LastRemediation != nil {
   106  		dst.Status.LastRemediation = restored.Status.LastRemediation
   107  	}
   108  
   109  	return nil
   110  }
   111  
   112  func (dst *KubeadmControlPlane) ConvertFrom(srcRaw conversion.Hub) error {
   113  	src := srcRaw.(*controlplanev1.KubeadmControlPlane)
   114  
   115  	if err := Convert_v1beta1_KubeadmControlPlane_To_v1alpha3_KubeadmControlPlane(src, dst, nil); err != nil {
   116  		return err
   117  	}
   118  
   119  	// Preserve Hub data on down-conversion except for metadata
   120  	if err := utilconversion.MarshalData(src, dst); err != nil {
   121  		return err
   122  	}
   123  
   124  	return nil
   125  }
   126  
   127  func (src *KubeadmControlPlaneList) ConvertTo(dstRaw conversion.Hub) error {
   128  	dst := dstRaw.(*controlplanev1.KubeadmControlPlaneList)
   129  
   130  	return Convert_v1alpha3_KubeadmControlPlaneList_To_v1beta1_KubeadmControlPlaneList(src, dst, nil)
   131  }
   132  
   133  func (dst *KubeadmControlPlaneList) ConvertFrom(srcRaw conversion.Hub) error {
   134  	src := srcRaw.(*controlplanev1.KubeadmControlPlaneList)
   135  
   136  	return Convert_v1beta1_KubeadmControlPlaneList_To_v1alpha3_KubeadmControlPlaneList(src, dst, nil)
   137  }
   138  
   139  func Convert_v1beta1_KubeadmControlPlaneSpec_To_v1alpha3_KubeadmControlPlaneSpec(in *controlplanev1.KubeadmControlPlaneSpec, out *KubeadmControlPlaneSpec, s apiconversion.Scope) error {
   140  	out.UpgradeAfter = in.RolloutAfter
   141  	out.InfrastructureTemplate = in.MachineTemplate.InfrastructureRef
   142  	out.NodeDrainTimeout = in.MachineTemplate.NodeDrainTimeout
   143  	return autoConvert_v1beta1_KubeadmControlPlaneSpec_To_v1alpha3_KubeadmControlPlaneSpec(in, out, s)
   144  }
   145  
   146  func Convert_v1beta1_KubeadmControlPlaneStatus_To_v1alpha3_KubeadmControlPlaneStatus(in *controlplanev1.KubeadmControlPlaneStatus, out *KubeadmControlPlaneStatus, s apiconversion.Scope) error {
   147  	// NOTE: custom conversion func is required because status.Version does not exist in v1alpha3.
   148  	return autoConvert_v1beta1_KubeadmControlPlaneStatus_To_v1alpha3_KubeadmControlPlaneStatus(in, out, s)
   149  }
   150  
   151  func Convert_v1alpha3_KubeadmControlPlaneSpec_To_v1beta1_KubeadmControlPlaneSpec(in *KubeadmControlPlaneSpec, out *controlplanev1.KubeadmControlPlaneSpec, s apiconversion.Scope) error {
   152  	out.RolloutAfter = in.UpgradeAfter
   153  	out.MachineTemplate.InfrastructureRef = in.InfrastructureTemplate
   154  	out.MachineTemplate.NodeDrainTimeout = in.NodeDrainTimeout
   155  	return autoConvert_v1alpha3_KubeadmControlPlaneSpec_To_v1beta1_KubeadmControlPlaneSpec(in, out, s)
   156  }