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

     1  /*
     2  Copyright 2019 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  	"sigs.k8s.io/cluster-api/bootstrap/kubeadm/types/upstreamv1beta1"
    25  	utilconversion "sigs.k8s.io/cluster-api/util/conversion"
    26  )
    27  
    28  func (src *KubeadmConfig) ConvertTo(dstRaw conversion.Hub) error {
    29  	dst := dstRaw.(*bootstrapv1.KubeadmConfig)
    30  
    31  	if err := Convert_v1alpha3_KubeadmConfig_To_v1beta1_KubeadmConfig(src, dst, nil); err != nil {
    32  		return err
    33  	}
    34  
    35  	// Manually restore data.
    36  	restored := &bootstrapv1.KubeadmConfig{}
    37  	if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
    38  		return err
    39  	}
    40  
    41  	dst.Spec.Files = restored.Spec.Files
    42  
    43  	dst.Spec.Users = restored.Spec.Users
    44  	if restored.Spec.Users != nil {
    45  		for i := range restored.Spec.Users {
    46  			if restored.Spec.Users[i].PasswdFrom != nil {
    47  				dst.Spec.Users[i].PasswdFrom = restored.Spec.Users[i].PasswdFrom
    48  			}
    49  		}
    50  	}
    51  
    52  	if restored.Spec.JoinConfiguration != nil && restored.Spec.JoinConfiguration.NodeRegistration.IgnorePreflightErrors != nil {
    53  		if dst.Spec.JoinConfiguration == nil {
    54  			dst.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
    55  		}
    56  		dst.Spec.JoinConfiguration.NodeRegistration.IgnorePreflightErrors = restored.Spec.JoinConfiguration.NodeRegistration.IgnorePreflightErrors
    57  	}
    58  
    59  	if restored.Spec.InitConfiguration != nil && restored.Spec.InitConfiguration.NodeRegistration.IgnorePreflightErrors != nil {
    60  		if dst.Spec.InitConfiguration == nil {
    61  			dst.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
    62  		}
    63  		dst.Spec.InitConfiguration.NodeRegistration.IgnorePreflightErrors = restored.Spec.InitConfiguration.NodeRegistration.IgnorePreflightErrors
    64  	}
    65  
    66  	dst.Spec.Ignition = restored.Spec.Ignition
    67  	if restored.Spec.InitConfiguration != nil {
    68  		if dst.Spec.InitConfiguration == nil {
    69  			dst.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
    70  		}
    71  		dst.Spec.InitConfiguration.Patches = restored.Spec.InitConfiguration.Patches
    72  		dst.Spec.InitConfiguration.SkipPhases = restored.Spec.InitConfiguration.SkipPhases
    73  	}
    74  	if restored.Spec.JoinConfiguration != nil {
    75  		if dst.Spec.JoinConfiguration == nil {
    76  			dst.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
    77  		}
    78  		dst.Spec.JoinConfiguration.Patches = restored.Spec.JoinConfiguration.Patches
    79  		dst.Spec.JoinConfiguration.SkipPhases = restored.Spec.JoinConfiguration.SkipPhases
    80  	}
    81  
    82  	if restored.Spec.JoinConfiguration != nil && restored.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy != "" {
    83  		if dst.Spec.JoinConfiguration == nil {
    84  			dst.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
    85  		}
    86  		dst.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy
    87  	}
    88  
    89  	if restored.Spec.InitConfiguration != nil && restored.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy != "" {
    90  		if dst.Spec.InitConfiguration == nil {
    91  			dst.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
    92  		}
    93  		dst.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy
    94  	}
    95  
    96  	return nil
    97  }
    98  
    99  func (dst *KubeadmConfig) ConvertFrom(srcRaw conversion.Hub) error {
   100  	src := srcRaw.(*bootstrapv1.KubeadmConfig)
   101  
   102  	if err := Convert_v1beta1_KubeadmConfig_To_v1alpha3_KubeadmConfig(src, dst, nil); err != nil {
   103  		return err
   104  	}
   105  
   106  	// Preserve Hub data on down-conversion except for metadata
   107  	if err := utilconversion.MarshalData(src, dst); err != nil {
   108  		return err
   109  	}
   110  
   111  	return nil
   112  }
   113  
   114  func (src *KubeadmConfigList) ConvertTo(dstRaw conversion.Hub) error {
   115  	dst := dstRaw.(*bootstrapv1.KubeadmConfigList)
   116  
   117  	return Convert_v1alpha3_KubeadmConfigList_To_v1beta1_KubeadmConfigList(src, dst, nil)
   118  }
   119  
   120  func (dst *KubeadmConfigList) ConvertFrom(srcRaw conversion.Hub) error {
   121  	src := srcRaw.(*bootstrapv1.KubeadmConfigList)
   122  
   123  	return Convert_v1beta1_KubeadmConfigList_To_v1alpha3_KubeadmConfigList(src, dst, nil)
   124  }
   125  
   126  func (src *KubeadmConfigTemplate) ConvertTo(dstRaw conversion.Hub) error {
   127  	dst := dstRaw.(*bootstrapv1.KubeadmConfigTemplate)
   128  
   129  	if err := Convert_v1alpha3_KubeadmConfigTemplate_To_v1beta1_KubeadmConfigTemplate(src, dst, nil); err != nil {
   130  		return err
   131  	}
   132  
   133  	// Manually restore data.
   134  	restored := &bootstrapv1.KubeadmConfigTemplate{}
   135  	if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
   136  		return err
   137  	}
   138  
   139  	dst.Spec.Template.Spec.Files = restored.Spec.Template.Spec.Files
   140  
   141  	dst.Spec.Template.Spec.Users = restored.Spec.Template.Spec.Users
   142  	if restored.Spec.Template.Spec.Users != nil {
   143  		for i := range restored.Spec.Template.Spec.Users {
   144  			if restored.Spec.Template.Spec.Users[i].PasswdFrom != nil {
   145  				dst.Spec.Template.Spec.Users[i].PasswdFrom = restored.Spec.Template.Spec.Users[i].PasswdFrom
   146  			}
   147  		}
   148  	}
   149  
   150  	dst.Spec.Template.ObjectMeta = restored.Spec.Template.ObjectMeta
   151  
   152  	if restored.Spec.Template.Spec.JoinConfiguration != nil && restored.Spec.Template.Spec.JoinConfiguration.NodeRegistration.IgnorePreflightErrors != nil {
   153  		if dst.Spec.Template.Spec.JoinConfiguration == nil {
   154  			dst.Spec.Template.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
   155  		}
   156  		dst.Spec.Template.Spec.JoinConfiguration.NodeRegistration.IgnorePreflightErrors = restored.Spec.Template.Spec.JoinConfiguration.NodeRegistration.IgnorePreflightErrors
   157  	}
   158  
   159  	if restored.Spec.Template.Spec.InitConfiguration != nil && restored.Spec.Template.Spec.InitConfiguration.NodeRegistration.IgnorePreflightErrors != nil {
   160  		if dst.Spec.Template.Spec.InitConfiguration == nil {
   161  			dst.Spec.Template.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
   162  		}
   163  		dst.Spec.Template.Spec.InitConfiguration.NodeRegistration.IgnorePreflightErrors = restored.Spec.Template.Spec.InitConfiguration.NodeRegistration.IgnorePreflightErrors
   164  	}
   165  
   166  	dst.Spec.Template.Spec.Ignition = restored.Spec.Template.Spec.Ignition
   167  	if restored.Spec.Template.Spec.InitConfiguration != nil {
   168  		if dst.Spec.Template.Spec.InitConfiguration == nil {
   169  			dst.Spec.Template.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
   170  		}
   171  		dst.Spec.Template.Spec.InitConfiguration.Patches = restored.Spec.Template.Spec.InitConfiguration.Patches
   172  		dst.Spec.Template.Spec.InitConfiguration.SkipPhases = restored.Spec.Template.Spec.InitConfiguration.SkipPhases
   173  	}
   174  	if restored.Spec.Template.Spec.JoinConfiguration != nil {
   175  		if dst.Spec.Template.Spec.JoinConfiguration == nil {
   176  			dst.Spec.Template.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
   177  		}
   178  		dst.Spec.Template.Spec.JoinConfiguration.Patches = restored.Spec.Template.Spec.JoinConfiguration.Patches
   179  		dst.Spec.Template.Spec.JoinConfiguration.SkipPhases = restored.Spec.Template.Spec.JoinConfiguration.SkipPhases
   180  	}
   181  
   182  	if restored.Spec.Template.Spec.JoinConfiguration != nil && restored.Spec.Template.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy != "" {
   183  		if dst.Spec.Template.Spec.JoinConfiguration == nil {
   184  			dst.Spec.Template.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
   185  		}
   186  		dst.Spec.Template.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.Template.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy
   187  	}
   188  
   189  	if restored.Spec.Template.Spec.InitConfiguration != nil && restored.Spec.Template.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy != "" {
   190  		if dst.Spec.Template.Spec.InitConfiguration == nil {
   191  			dst.Spec.Template.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
   192  		}
   193  		dst.Spec.Template.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.Template.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy
   194  	}
   195  
   196  	return nil
   197  }
   198  
   199  func (dst *KubeadmConfigTemplate) ConvertFrom(srcRaw conversion.Hub) error {
   200  	src := srcRaw.(*bootstrapv1.KubeadmConfigTemplate)
   201  
   202  	if err := Convert_v1beta1_KubeadmConfigTemplate_To_v1alpha3_KubeadmConfigTemplate(src, dst, nil); err != nil {
   203  		return err
   204  	}
   205  
   206  	// Preserve Hub data on down-conversion except for metadata
   207  	if err := utilconversion.MarshalData(src, dst); err != nil {
   208  		return err
   209  	}
   210  
   211  	return nil
   212  }
   213  
   214  func (src *KubeadmConfigTemplateList) ConvertTo(dstRaw conversion.Hub) error {
   215  	dst := dstRaw.(*bootstrapv1.KubeadmConfigTemplateList)
   216  
   217  	return Convert_v1alpha3_KubeadmConfigTemplateList_To_v1beta1_KubeadmConfigTemplateList(src, dst, nil)
   218  }
   219  
   220  func (dst *KubeadmConfigTemplateList) ConvertFrom(srcRaw conversion.Hub) error {
   221  	src := srcRaw.(*bootstrapv1.KubeadmConfigTemplateList)
   222  
   223  	return Convert_v1beta1_KubeadmConfigTemplateList_To_v1alpha3_KubeadmConfigTemplateList(src, dst, nil)
   224  }
   225  
   226  func Convert_v1alpha3_KubeadmConfigStatus_To_v1beta1_KubeadmConfigStatus(in *KubeadmConfigStatus, out *bootstrapv1.KubeadmConfigStatus, s apiconversion.Scope) error {
   227  	// KubeadmConfigStatus.BootstrapData has been removed in v1alpha4 because its content has been moved to the bootstrap data secret, value will be lost during conversion.
   228  	return autoConvert_v1alpha3_KubeadmConfigStatus_To_v1beta1_KubeadmConfigStatus(in, out, s)
   229  }
   230  
   231  func Convert_v1beta1_ClusterConfiguration_To_upstreamv1beta1_ClusterConfiguration(in *bootstrapv1.ClusterConfiguration, out *upstreamv1beta1.ClusterConfiguration, s apiconversion.Scope) error {
   232  	// DNS.Type was removed in v1alpha4 because only CoreDNS is supported; the information will be left to empty (kubeadm defaults it to CoredDNS);
   233  	// Existing clusters using kube-dns or other DNS solutions will continue to be managed/supported via the skip-coredns annotation.
   234  
   235  	// ClusterConfiguration.UseHyperKubeImage was removed in kubeadm v1alpha4 API
   236  	return upstreamv1beta1.Convert_v1beta1_ClusterConfiguration_To_upstreamv1beta1_ClusterConfiguration(in, out, s)
   237  }
   238  
   239  func Convert_upstreamv1beta1_ClusterConfiguration_To_v1beta1_ClusterConfiguration(in *upstreamv1beta1.ClusterConfiguration, out *bootstrapv1.ClusterConfiguration, s apiconversion.Scope) error {
   240  	// DNS.Type was removed in v1alpha4 because only CoreDNS is supported; the information will be left to empty (kubeadm defaults it to CoredDNS);
   241  	// ClusterConfiguration.UseHyperKubeImage was removed in kubeadm v1alpha4 API
   242  	return upstreamv1beta1.Convert_upstreamv1beta1_ClusterConfiguration_To_v1beta1_ClusterConfiguration(in, out, s)
   243  }
   244  
   245  func Convert_upstreamv1beta1_InitConfiguration_To_v1beta1_InitConfiguration(in *upstreamv1beta1.InitConfiguration, out *bootstrapv1.InitConfiguration, s apiconversion.Scope) error {
   246  	// NodeRegistrationOptions.IgnorePreflightErrors does not exist in kubeadm v1beta1 API
   247  	return upstreamv1beta1.Convert_upstreamv1beta1_InitConfiguration_To_v1beta1_InitConfiguration(in, out, s)
   248  }
   249  
   250  func Convert_v1beta1_InitConfiguration_To_upstreamv1beta1_InitConfiguration(in *bootstrapv1.InitConfiguration, out *upstreamv1beta1.InitConfiguration, s apiconversion.Scope) error {
   251  	// NodeRegistrationOptions.IgnorePreflightErrors does not exist in kubeadm v1beta1 API
   252  	return upstreamv1beta1.Convert_v1beta1_InitConfiguration_To_upstreamv1beta1_InitConfiguration(in, out, s)
   253  }
   254  
   255  func Convert_upstreamv1beta1_JoinConfiguration_To_v1beta1_JoinConfiguration(in *upstreamv1beta1.JoinConfiguration, out *bootstrapv1.JoinConfiguration, s apiconversion.Scope) error {
   256  	// NodeRegistrationOptions.IgnorePreflightErrors does not exist in kubeadm v1beta1 API
   257  	return upstreamv1beta1.Convert_upstreamv1beta1_JoinConfiguration_To_v1beta1_JoinConfiguration(in, out, s)
   258  }
   259  
   260  func Convert_v1beta1_JoinConfiguration_To_upstreamv1beta1_JoinConfiguration(in *bootstrapv1.JoinConfiguration, out *upstreamv1beta1.JoinConfiguration, s apiconversion.Scope) error {
   261  	// NodeRegistrationOptions.IgnorePreflightErrors does not exist in kubeadm v1beta1 API
   262  	return upstreamv1beta1.Convert_v1beta1_JoinConfiguration_To_upstreamv1beta1_JoinConfiguration(in, out, s)
   263  }
   264  
   265  // Convert_v1beta1_KubeadmConfigSpec_To_v1alpha3_KubeadmConfigSpec is an autogenerated conversion function.
   266  func Convert_v1beta1_KubeadmConfigSpec_To_v1alpha3_KubeadmConfigSpec(in *bootstrapv1.KubeadmConfigSpec, out *KubeadmConfigSpec, s apiconversion.Scope) error {
   267  	// KubeadmConfigSpec.Ignition does not exist in kubeadm v1alpha3 API.
   268  	return autoConvert_v1beta1_KubeadmConfigSpec_To_v1alpha3_KubeadmConfigSpec(in, out, s)
   269  }
   270  
   271  func Convert_v1beta1_File_To_v1alpha3_File(in *bootstrapv1.File, out *File, s apiconversion.Scope) error {
   272  	// File.Append does not exist in kubeadm v1alpha3 API.
   273  	return autoConvert_v1beta1_File_To_v1alpha3_File(in, out, s)
   274  }
   275  
   276  func Convert_v1beta1_User_To_v1alpha3_User(in *bootstrapv1.User, out *User, s apiconversion.Scope) error {
   277  	// User.PasswdFrom does not exist in kubeadm v1alpha3 API.
   278  	return autoConvert_v1beta1_User_To_v1alpha3_User(in, out, s)
   279  }
   280  
   281  func Convert_v1beta1_KubeadmConfigTemplateResource_To_v1alpha3_KubeadmConfigTemplateResource(in *bootstrapv1.KubeadmConfigTemplateResource, out *KubeadmConfigTemplateResource, s apiconversion.Scope) error {
   282  	// KubeadmConfigTemplateResource.metadata does not exist in kubeadm v1alpha3.
   283  	return autoConvert_v1beta1_KubeadmConfigTemplateResource_To_v1alpha3_KubeadmConfigTemplateResource(in, out, s)
   284  }