sigs.k8s.io/cluster-api@v1.7.1/internal/apis/core/v1alpha4/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 v1alpha4
    18  
    19  import (
    20  	apiconversion "k8s.io/apimachinery/pkg/conversion"
    21  	"sigs.k8s.io/controller-runtime/pkg/conversion"
    22  
    23  	clusterv1 "sigs.k8s.io/cluster-api/api/v1beta1"
    24  	utilconversion "sigs.k8s.io/cluster-api/util/conversion"
    25  )
    26  
    27  func (src *Cluster) ConvertTo(dstRaw conversion.Hub) error {
    28  	dst := dstRaw.(*clusterv1.Cluster)
    29  
    30  	if err := Convert_v1alpha4_Cluster_To_v1beta1_Cluster(src, dst, nil); err != nil {
    31  		return err
    32  	}
    33  
    34  	// Manually restore data.
    35  	restored := &clusterv1.Cluster{}
    36  	if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
    37  		return err
    38  	}
    39  
    40  	if restored.Spec.Topology != nil {
    41  		if dst.Spec.Topology == nil {
    42  			dst.Spec.Topology = &clusterv1.Topology{}
    43  		}
    44  		dst.Spec.Topology.Variables = restored.Spec.Topology.Variables
    45  
    46  		if restored.Spec.Topology.ControlPlane.MachineHealthCheck != nil {
    47  			dst.Spec.Topology.ControlPlane.MachineHealthCheck = restored.Spec.Topology.ControlPlane.MachineHealthCheck
    48  		}
    49  
    50  		if restored.Spec.Topology.ControlPlane.NodeDrainTimeout != nil {
    51  			dst.Spec.Topology.ControlPlane.NodeDrainTimeout = restored.Spec.Topology.ControlPlane.NodeDrainTimeout
    52  		}
    53  
    54  		if restored.Spec.Topology.ControlPlane.NodeVolumeDetachTimeout != nil {
    55  			dst.Spec.Topology.ControlPlane.NodeVolumeDetachTimeout = restored.Spec.Topology.ControlPlane.NodeVolumeDetachTimeout
    56  		}
    57  
    58  		if restored.Spec.Topology.ControlPlane.NodeDeletionTimeout != nil {
    59  			dst.Spec.Topology.ControlPlane.NodeDeletionTimeout = restored.Spec.Topology.ControlPlane.NodeDeletionTimeout
    60  		}
    61  
    62  		if restored.Spec.Topology.Workers != nil {
    63  			if dst.Spec.Topology.Workers == nil {
    64  				dst.Spec.Topology.Workers = &clusterv1.WorkersTopology{}
    65  			}
    66  			for i := range restored.Spec.Topology.Workers.MachineDeployments {
    67  				dst.Spec.Topology.Workers.MachineDeployments[i].FailureDomain = restored.Spec.Topology.Workers.MachineDeployments[i].FailureDomain
    68  				dst.Spec.Topology.Workers.MachineDeployments[i].Variables = restored.Spec.Topology.Workers.MachineDeployments[i].Variables
    69  				dst.Spec.Topology.Workers.MachineDeployments[i].NodeDrainTimeout = restored.Spec.Topology.Workers.MachineDeployments[i].NodeDrainTimeout
    70  				dst.Spec.Topology.Workers.MachineDeployments[i].NodeVolumeDetachTimeout = restored.Spec.Topology.Workers.MachineDeployments[i].NodeVolumeDetachTimeout
    71  				dst.Spec.Topology.Workers.MachineDeployments[i].NodeDeletionTimeout = restored.Spec.Topology.Workers.MachineDeployments[i].NodeDeletionTimeout
    72  				dst.Spec.Topology.Workers.MachineDeployments[i].MinReadySeconds = restored.Spec.Topology.Workers.MachineDeployments[i].MinReadySeconds
    73  				dst.Spec.Topology.Workers.MachineDeployments[i].Strategy = restored.Spec.Topology.Workers.MachineDeployments[i].Strategy
    74  				dst.Spec.Topology.Workers.MachineDeployments[i].MachineHealthCheck = restored.Spec.Topology.Workers.MachineDeployments[i].MachineHealthCheck
    75  			}
    76  
    77  			dst.Spec.Topology.Workers.MachinePools = restored.Spec.Topology.Workers.MachinePools
    78  		}
    79  	}
    80  
    81  	return nil
    82  }
    83  
    84  func (dst *Cluster) ConvertFrom(srcRaw conversion.Hub) error {
    85  	src := srcRaw.(*clusterv1.Cluster)
    86  
    87  	if err := Convert_v1beta1_Cluster_To_v1alpha4_Cluster(src, dst, nil); err != nil {
    88  		return err
    89  	}
    90  
    91  	// Preserve Hub data on down-conversion except for metadata
    92  	if err := utilconversion.MarshalData(src, dst); err != nil {
    93  		return err
    94  	}
    95  
    96  	return nil
    97  }
    98  
    99  func (src *ClusterList) ConvertTo(dstRaw conversion.Hub) error {
   100  	dst := dstRaw.(*clusterv1.ClusterList)
   101  
   102  	return Convert_v1alpha4_ClusterList_To_v1beta1_ClusterList(src, dst, nil)
   103  }
   104  
   105  func (dst *ClusterList) ConvertFrom(srcRaw conversion.Hub) error {
   106  	src := srcRaw.(*clusterv1.ClusterList)
   107  
   108  	return Convert_v1beta1_ClusterList_To_v1alpha4_ClusterList(src, dst, nil)
   109  }
   110  
   111  func (src *ClusterClass) ConvertTo(dstRaw conversion.Hub) error {
   112  	dst := dstRaw.(*clusterv1.ClusterClass)
   113  
   114  	if err := Convert_v1alpha4_ClusterClass_To_v1beta1_ClusterClass(src, dst, nil); err != nil {
   115  		return err
   116  	}
   117  
   118  	// Manually restore data.
   119  	restored := &clusterv1.ClusterClass{}
   120  	if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
   121  		return err
   122  	}
   123  
   124  	dst.Spec.Patches = restored.Spec.Patches
   125  	dst.Spec.Variables = restored.Spec.Variables
   126  	dst.Spec.ControlPlane.MachineHealthCheck = restored.Spec.ControlPlane.MachineHealthCheck
   127  	dst.Spec.ControlPlane.NamingStrategy = restored.Spec.ControlPlane.NamingStrategy
   128  	dst.Spec.ControlPlane.NodeDrainTimeout = restored.Spec.ControlPlane.NodeDrainTimeout
   129  	dst.Spec.ControlPlane.NodeVolumeDetachTimeout = restored.Spec.ControlPlane.NodeVolumeDetachTimeout
   130  	dst.Spec.ControlPlane.NodeDeletionTimeout = restored.Spec.ControlPlane.NodeDeletionTimeout
   131  	dst.Spec.Workers.MachinePools = restored.Spec.Workers.MachinePools
   132  
   133  	for i := range restored.Spec.Workers.MachineDeployments {
   134  		dst.Spec.Workers.MachineDeployments[i].MachineHealthCheck = restored.Spec.Workers.MachineDeployments[i].MachineHealthCheck
   135  		dst.Spec.Workers.MachineDeployments[i].FailureDomain = restored.Spec.Workers.MachineDeployments[i].FailureDomain
   136  		dst.Spec.Workers.MachineDeployments[i].NamingStrategy = restored.Spec.Workers.MachineDeployments[i].NamingStrategy
   137  		dst.Spec.Workers.MachineDeployments[i].NodeDrainTimeout = restored.Spec.Workers.MachineDeployments[i].NodeDrainTimeout
   138  		dst.Spec.Workers.MachineDeployments[i].NodeVolumeDetachTimeout = restored.Spec.Workers.MachineDeployments[i].NodeVolumeDetachTimeout
   139  		dst.Spec.Workers.MachineDeployments[i].NodeDeletionTimeout = restored.Spec.Workers.MachineDeployments[i].NodeDeletionTimeout
   140  		dst.Spec.Workers.MachineDeployments[i].MinReadySeconds = restored.Spec.Workers.MachineDeployments[i].MinReadySeconds
   141  		dst.Spec.Workers.MachineDeployments[i].Strategy = restored.Spec.Workers.MachineDeployments[i].Strategy
   142  	}
   143  
   144  	dst.Status = restored.Status
   145  
   146  	return nil
   147  }
   148  
   149  func (dst *ClusterClass) ConvertFrom(srcRaw conversion.Hub) error {
   150  	src := srcRaw.(*clusterv1.ClusterClass)
   151  
   152  	if err := Convert_v1beta1_ClusterClass_To_v1alpha4_ClusterClass(src, dst, nil); err != nil {
   153  		return err
   154  	}
   155  
   156  	// Preserve Hub data on down-conversion except for metadata
   157  	if err := utilconversion.MarshalData(src, dst); err != nil {
   158  		return err
   159  	}
   160  
   161  	return nil
   162  }
   163  
   164  func (src *ClusterClassList) ConvertTo(dstRaw conversion.Hub) error {
   165  	dst := dstRaw.(*clusterv1.ClusterClassList)
   166  
   167  	return Convert_v1alpha4_ClusterClassList_To_v1beta1_ClusterClassList(src, dst, nil)
   168  }
   169  
   170  func (dst *ClusterClassList) ConvertFrom(srcRaw conversion.Hub) error {
   171  	src := srcRaw.(*clusterv1.ClusterClassList)
   172  
   173  	return Convert_v1beta1_ClusterClassList_To_v1alpha4_ClusterClassList(src, dst, nil)
   174  }
   175  
   176  func (src *Machine) ConvertTo(dstRaw conversion.Hub) error {
   177  	dst := dstRaw.(*clusterv1.Machine)
   178  
   179  	if err := Convert_v1alpha4_Machine_To_v1beta1_Machine(src, dst, nil); err != nil {
   180  		return err
   181  	}
   182  
   183  	// Manually restore data.
   184  	restored := &clusterv1.Machine{}
   185  	if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
   186  		return err
   187  	}
   188  
   189  	dst.Spec.NodeDeletionTimeout = restored.Spec.NodeDeletionTimeout
   190  	dst.Status.CertificatesExpiryDate = restored.Status.CertificatesExpiryDate
   191  	dst.Spec.NodeVolumeDetachTimeout = restored.Spec.NodeVolumeDetachTimeout
   192  	return nil
   193  }
   194  
   195  func (dst *Machine) ConvertFrom(srcRaw conversion.Hub) error {
   196  	src := srcRaw.(*clusterv1.Machine)
   197  
   198  	if err := Convert_v1beta1_Machine_To_v1alpha4_Machine(src, dst, nil); err != nil {
   199  		return err
   200  	}
   201  
   202  	// Preserve Hub data on down-conversion except for metadata
   203  	if err := utilconversion.MarshalData(src, dst); err != nil {
   204  		return err
   205  	}
   206  
   207  	return nil
   208  }
   209  
   210  func (src *MachineList) ConvertTo(dstRaw conversion.Hub) error {
   211  	dst := dstRaw.(*clusterv1.MachineList)
   212  
   213  	return Convert_v1alpha4_MachineList_To_v1beta1_MachineList(src, dst, nil)
   214  }
   215  
   216  func (dst *MachineList) ConvertFrom(srcRaw conversion.Hub) error {
   217  	src := srcRaw.(*clusterv1.MachineList)
   218  
   219  	return Convert_v1beta1_MachineList_To_v1alpha4_MachineList(src, dst, nil)
   220  }
   221  
   222  func (src *MachineSet) ConvertTo(dstRaw conversion.Hub) error {
   223  	dst := dstRaw.(*clusterv1.MachineSet)
   224  
   225  	if err := Convert_v1alpha4_MachineSet_To_v1beta1_MachineSet(src, dst, nil); err != nil {
   226  		return err
   227  	}
   228  
   229  	// Manually restore data.
   230  	restored := &clusterv1.MachineSet{}
   231  	if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
   232  		return err
   233  	}
   234  
   235  	dst.Spec.Template.Spec.NodeDeletionTimeout = restored.Spec.Template.Spec.NodeDeletionTimeout
   236  	dst.Spec.Template.Spec.NodeVolumeDetachTimeout = restored.Spec.Template.Spec.NodeVolumeDetachTimeout
   237  	return nil
   238  }
   239  
   240  func (dst *MachineSet) ConvertFrom(srcRaw conversion.Hub) error {
   241  	src := srcRaw.(*clusterv1.MachineSet)
   242  
   243  	if err := Convert_v1beta1_MachineSet_To_v1alpha4_MachineSet(src, dst, nil); err != nil {
   244  		return err
   245  	}
   246  
   247  	// Preserve Hub data on down-conversion except for metadata
   248  	return utilconversion.MarshalData(src, dst)
   249  }
   250  
   251  func (src *MachineSetList) ConvertTo(dstRaw conversion.Hub) error {
   252  	dst := dstRaw.(*clusterv1.MachineSetList)
   253  
   254  	return Convert_v1alpha4_MachineSetList_To_v1beta1_MachineSetList(src, dst, nil)
   255  }
   256  
   257  func (dst *MachineSetList) ConvertFrom(srcRaw conversion.Hub) error {
   258  	src := srcRaw.(*clusterv1.MachineSetList)
   259  
   260  	return Convert_v1beta1_MachineSetList_To_v1alpha4_MachineSetList(src, dst, nil)
   261  }
   262  
   263  func (src *MachineDeployment) ConvertTo(dstRaw conversion.Hub) error {
   264  	dst := dstRaw.(*clusterv1.MachineDeployment)
   265  
   266  	if err := Convert_v1alpha4_MachineDeployment_To_v1beta1_MachineDeployment(src, dst, nil); err != nil {
   267  		return err
   268  	}
   269  
   270  	// Manually restore data.
   271  	restored := &clusterv1.MachineDeployment{}
   272  	if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
   273  		return err
   274  	}
   275  
   276  	dst.Spec.Template.Spec.NodeDeletionTimeout = restored.Spec.Template.Spec.NodeDeletionTimeout
   277  	dst.Spec.Template.Spec.NodeVolumeDetachTimeout = restored.Spec.Template.Spec.NodeVolumeDetachTimeout
   278  	dst.Spec.RolloutAfter = restored.Spec.RolloutAfter
   279  	return nil
   280  }
   281  
   282  func (dst *MachineDeployment) ConvertFrom(srcRaw conversion.Hub) error {
   283  	src := srcRaw.(*clusterv1.MachineDeployment)
   284  
   285  	if err := Convert_v1beta1_MachineDeployment_To_v1alpha4_MachineDeployment(src, dst, nil); err != nil {
   286  		return err
   287  	}
   288  
   289  	// Preserve Hub data on down-conversion except for metadata
   290  	return utilconversion.MarshalData(src, dst)
   291  }
   292  
   293  func (src *MachineDeploymentList) ConvertTo(dstRaw conversion.Hub) error {
   294  	dst := dstRaw.(*clusterv1.MachineDeploymentList)
   295  
   296  	return Convert_v1alpha4_MachineDeploymentList_To_v1beta1_MachineDeploymentList(src, dst, nil)
   297  }
   298  
   299  func (dst *MachineDeploymentList) ConvertFrom(srcRaw conversion.Hub) error {
   300  	src := srcRaw.(*clusterv1.MachineDeploymentList)
   301  
   302  	return Convert_v1beta1_MachineDeploymentList_To_v1alpha4_MachineDeploymentList(src, dst, nil)
   303  }
   304  
   305  func (src *MachineHealthCheck) ConvertTo(dstRaw conversion.Hub) error {
   306  	dst := dstRaw.(*clusterv1.MachineHealthCheck)
   307  
   308  	return Convert_v1alpha4_MachineHealthCheck_To_v1beta1_MachineHealthCheck(src, dst, nil)
   309  }
   310  
   311  func (dst *MachineHealthCheck) ConvertFrom(srcRaw conversion.Hub) error {
   312  	src := srcRaw.(*clusterv1.MachineHealthCheck)
   313  
   314  	return Convert_v1beta1_MachineHealthCheck_To_v1alpha4_MachineHealthCheck(src, dst, nil)
   315  }
   316  
   317  func (src *MachineHealthCheckList) ConvertTo(dstRaw conversion.Hub) error {
   318  	dst := dstRaw.(*clusterv1.MachineHealthCheckList)
   319  
   320  	return Convert_v1alpha4_MachineHealthCheckList_To_v1beta1_MachineHealthCheckList(src, dst, nil)
   321  }
   322  
   323  func (dst *MachineHealthCheckList) ConvertFrom(srcRaw conversion.Hub) error {
   324  	src := srcRaw.(*clusterv1.MachineHealthCheckList)
   325  
   326  	return Convert_v1beta1_MachineHealthCheckList_To_v1alpha4_MachineHealthCheckList(src, dst, nil)
   327  }
   328  
   329  func Convert_v1alpha4_MachineStatus_To_v1beta1_MachineStatus(in *MachineStatus, out *clusterv1.MachineStatus, s apiconversion.Scope) error {
   330  	// Status.version has been removed in v1beta1, thus requiring custom conversion function. the information will be dropped.
   331  	return autoConvert_v1alpha4_MachineStatus_To_v1beta1_MachineStatus(in, out, s)
   332  }
   333  
   334  func Convert_v1beta1_ClusterClassSpec_To_v1alpha4_ClusterClassSpec(in *clusterv1.ClusterClassSpec, out *ClusterClassSpec, s apiconversion.Scope) error {
   335  	// spec.{variables,patches} has been added with v1beta1.
   336  	return autoConvert_v1beta1_ClusterClassSpec_To_v1alpha4_ClusterClassSpec(in, out, s)
   337  }
   338  
   339  func Convert_v1beta1_MachineSpec_To_v1alpha4_MachineSpec(in *clusterv1.MachineSpec, out *MachineSpec, s apiconversion.Scope) error {
   340  	// spec.nodeDeletionTimeout has been added with v1beta1.
   341  	return autoConvert_v1beta1_MachineSpec_To_v1alpha4_MachineSpec(in, out, s)
   342  }
   343  
   344  func Convert_v1beta1_MachineDeploymentSpec_To_v1alpha4_MachineDeploymentSpec(in *clusterv1.MachineDeploymentSpec, out *MachineDeploymentSpec, s apiconversion.Scope) error {
   345  	return autoConvert_v1beta1_MachineDeploymentSpec_To_v1alpha4_MachineDeploymentSpec(in, out, s)
   346  }
   347  
   348  func Convert_v1beta1_Topology_To_v1alpha4_Topology(in *clusterv1.Topology, out *Topology, s apiconversion.Scope) error {
   349  	// spec.topology.variables has been added with v1beta1.
   350  	return autoConvert_v1beta1_Topology_To_v1alpha4_Topology(in, out, s)
   351  }
   352  
   353  // Convert_v1beta1_MachineDeploymentTopology_To_v1alpha4_MachineDeploymentTopology is an autogenerated conversion function.
   354  func Convert_v1beta1_MachineDeploymentTopology_To_v1alpha4_MachineDeploymentTopology(in *clusterv1.MachineDeploymentTopology, out *MachineDeploymentTopology, s apiconversion.Scope) error {
   355  	// MachineDeploymentTopology.FailureDomain has been added with v1beta1.
   356  	return autoConvert_v1beta1_MachineDeploymentTopology_To_v1alpha4_MachineDeploymentTopology(in, out, s)
   357  }
   358  
   359  func Convert_v1beta1_MachineDeploymentClass_To_v1alpha4_MachineDeploymentClass(in *clusterv1.MachineDeploymentClass, out *MachineDeploymentClass, s apiconversion.Scope) error {
   360  	// machineDeploymentClass.machineHealthCheck has been added with v1beta1.
   361  	return autoConvert_v1beta1_MachineDeploymentClass_To_v1alpha4_MachineDeploymentClass(in, out, s)
   362  }
   363  
   364  func Convert_v1beta1_ControlPlaneClass_To_v1alpha4_ControlPlaneClass(in *clusterv1.ControlPlaneClass, out *ControlPlaneClass, s apiconversion.Scope) error {
   365  	// controlPlaneClass.machineHealthCheck has been added with v1beta1.
   366  	return autoConvert_v1beta1_ControlPlaneClass_To_v1alpha4_ControlPlaneClass(in, out, s)
   367  }
   368  
   369  func Convert_v1beta1_ControlPlaneTopology_To_v1alpha4_ControlPlaneTopology(in *clusterv1.ControlPlaneTopology, out *ControlPlaneTopology, s apiconversion.Scope) error {
   370  	// controlPlaneTopology.nodeDrainTimeout has been added with v1beta1.
   371  	return autoConvert_v1beta1_ControlPlaneTopology_To_v1alpha4_ControlPlaneTopology(in, out, s)
   372  }
   373  
   374  func Convert_v1beta1_MachineStatus_To_v1alpha4_MachineStatus(in *clusterv1.MachineStatus, out *MachineStatus, s apiconversion.Scope) error {
   375  	// MachineStatus.CertificatesExpiryDate has been added in v1beta1.
   376  	return autoConvert_v1beta1_MachineStatus_To_v1alpha4_MachineStatus(in, out, s)
   377  }
   378  
   379  func Convert_v1beta1_ClusterClass_To_v1alpha4_ClusterClass(in *clusterv1.ClusterClass, out *ClusterClass, s apiconversion.Scope) error {
   380  	// ClusterClass.Status has been added in v1beta1.
   381  	return autoConvert_v1beta1_ClusterClass_To_v1alpha4_ClusterClass(in, out, s)
   382  }
   383  
   384  func Convert_v1beta1_WorkersClass_To_v1alpha4_WorkersClass(in *clusterv1.WorkersClass, out *WorkersClass, s apiconversion.Scope) error {
   385  	// WorkersClass.MachinePools has been added in v1beta1.
   386  	return autoConvert_v1beta1_WorkersClass_To_v1alpha4_WorkersClass(in, out, s)
   387  }
   388  
   389  func Convert_v1beta1_WorkersTopology_To_v1alpha4_WorkersTopology(in *clusterv1.WorkersTopology, out *WorkersTopology, s apiconversion.Scope) error {
   390  	// WorkersTopology.MachinePools has been added in v1beta1.
   391  	return autoConvert_v1beta1_WorkersTopology_To_v1alpha4_WorkersTopology(in, out, s)
   392  }