sigs.k8s.io/cluster-api@v1.6.3/bootstrap/kubeadm/api/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  	bootstrapv1 "sigs.k8s.io/cluster-api/bootstrap/kubeadm/api/v1beta1"
    24  	utilconversion "sigs.k8s.io/cluster-api/util/conversion"
    25  )
    26  
    27  func (src *KubeadmConfig) ConvertTo(dstRaw conversion.Hub) error {
    28  	dst := dstRaw.(*bootstrapv1.KubeadmConfig)
    29  
    30  	if err := Convert_v1alpha4_KubeadmConfig_To_v1beta1_KubeadmConfig(src, dst, nil); err != nil {
    31  		return err
    32  	}
    33  
    34  	// Manually restore data.
    35  	restored := &bootstrapv1.KubeadmConfig{}
    36  	if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
    37  		return err
    38  	}
    39  
    40  	dst.Spec.Files = restored.Spec.Files
    41  
    42  	dst.Spec.Users = restored.Spec.Users
    43  	if restored.Spec.Users != nil {
    44  		for i := range restored.Spec.Users {
    45  			if restored.Spec.Users[i].PasswdFrom != nil {
    46  				dst.Spec.Users[i].PasswdFrom = restored.Spec.Users[i].PasswdFrom
    47  			}
    48  		}
    49  	}
    50  
    51  	dst.Spec.Ignition = restored.Spec.Ignition
    52  	if restored.Spec.InitConfiguration != nil {
    53  		if dst.Spec.InitConfiguration == nil {
    54  			dst.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
    55  		}
    56  		dst.Spec.InitConfiguration.Patches = restored.Spec.InitConfiguration.Patches
    57  		dst.Spec.InitConfiguration.SkipPhases = restored.Spec.InitConfiguration.SkipPhases
    58  	}
    59  	if restored.Spec.JoinConfiguration != nil {
    60  		if dst.Spec.JoinConfiguration == nil {
    61  			dst.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
    62  		}
    63  		dst.Spec.JoinConfiguration.Patches = restored.Spec.JoinConfiguration.Patches
    64  		dst.Spec.JoinConfiguration.SkipPhases = restored.Spec.JoinConfiguration.SkipPhases
    65  	}
    66  
    67  	if restored.Spec.JoinConfiguration != nil && restored.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy != "" {
    68  		if dst.Spec.JoinConfiguration == nil {
    69  			dst.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
    70  		}
    71  		dst.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy
    72  	}
    73  
    74  	if restored.Spec.InitConfiguration != nil && restored.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy != "" {
    75  		if dst.Spec.InitConfiguration == nil {
    76  			dst.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
    77  		}
    78  		dst.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy
    79  	}
    80  
    81  	return nil
    82  }
    83  
    84  func (dst *KubeadmConfig) ConvertFrom(srcRaw conversion.Hub) error {
    85  	src := srcRaw.(*bootstrapv1.KubeadmConfig)
    86  
    87  	if err := Convert_v1beta1_KubeadmConfig_To_v1alpha4_KubeadmConfig(src, dst, nil); err != nil {
    88  		return err
    89  	}
    90  	// Preserve Hub data on down-conversion except for metadata.
    91  	return utilconversion.MarshalData(src, dst)
    92  }
    93  
    94  func (src *KubeadmConfigList) ConvertTo(dstRaw conversion.Hub) error {
    95  	dst := dstRaw.(*bootstrapv1.KubeadmConfigList)
    96  
    97  	return Convert_v1alpha4_KubeadmConfigList_To_v1beta1_KubeadmConfigList(src, dst, nil)
    98  }
    99  
   100  func (dst *KubeadmConfigList) ConvertFrom(srcRaw conversion.Hub) error {
   101  	src := srcRaw.(*bootstrapv1.KubeadmConfigList)
   102  
   103  	return Convert_v1beta1_KubeadmConfigList_To_v1alpha4_KubeadmConfigList(src, dst, nil)
   104  }
   105  
   106  func (src *KubeadmConfigTemplate) ConvertTo(dstRaw conversion.Hub) error {
   107  	dst := dstRaw.(*bootstrapv1.KubeadmConfigTemplate)
   108  
   109  	if err := Convert_v1alpha4_KubeadmConfigTemplate_To_v1beta1_KubeadmConfigTemplate(src, dst, nil); err != nil {
   110  		return err
   111  	}
   112  
   113  	// Manually restore data.
   114  	restored := &bootstrapv1.KubeadmConfigTemplate{}
   115  	if ok, err := utilconversion.UnmarshalData(src, restored); err != nil || !ok {
   116  		return err
   117  	}
   118  
   119  	dst.Spec.Template.Spec.Files = restored.Spec.Template.Spec.Files
   120  
   121  	dst.Spec.Template.Spec.Users = restored.Spec.Template.Spec.Users
   122  	if restored.Spec.Template.Spec.Users != nil {
   123  		for i := range restored.Spec.Template.Spec.Users {
   124  			if restored.Spec.Template.Spec.Users[i].PasswdFrom != nil {
   125  				dst.Spec.Template.Spec.Users[i].PasswdFrom = restored.Spec.Template.Spec.Users[i].PasswdFrom
   126  			}
   127  		}
   128  	}
   129  
   130  	dst.Spec.Template.ObjectMeta = restored.Spec.Template.ObjectMeta
   131  
   132  	dst.Spec.Template.Spec.Ignition = restored.Spec.Template.Spec.Ignition
   133  	if restored.Spec.Template.Spec.InitConfiguration != nil {
   134  		if dst.Spec.Template.Spec.InitConfiguration == nil {
   135  			dst.Spec.Template.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
   136  		}
   137  		dst.Spec.Template.Spec.InitConfiguration.Patches = restored.Spec.Template.Spec.InitConfiguration.Patches
   138  		dst.Spec.Template.Spec.InitConfiguration.SkipPhases = restored.Spec.Template.Spec.InitConfiguration.SkipPhases
   139  	}
   140  	if restored.Spec.Template.Spec.JoinConfiguration != nil {
   141  		if dst.Spec.Template.Spec.JoinConfiguration == nil {
   142  			dst.Spec.Template.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
   143  		}
   144  		dst.Spec.Template.Spec.JoinConfiguration.Patches = restored.Spec.Template.Spec.JoinConfiguration.Patches
   145  		dst.Spec.Template.Spec.JoinConfiguration.SkipPhases = restored.Spec.Template.Spec.JoinConfiguration.SkipPhases
   146  	}
   147  
   148  	if restored.Spec.Template.Spec.JoinConfiguration != nil && restored.Spec.Template.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy != "" {
   149  		if dst.Spec.Template.Spec.JoinConfiguration == nil {
   150  			dst.Spec.Template.Spec.JoinConfiguration = &bootstrapv1.JoinConfiguration{}
   151  		}
   152  		dst.Spec.Template.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.Template.Spec.JoinConfiguration.NodeRegistration.ImagePullPolicy
   153  	}
   154  
   155  	if restored.Spec.Template.Spec.InitConfiguration != nil && restored.Spec.Template.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy != "" {
   156  		if dst.Spec.Template.Spec.InitConfiguration == nil {
   157  			dst.Spec.Template.Spec.InitConfiguration = &bootstrapv1.InitConfiguration{}
   158  		}
   159  		dst.Spec.Template.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy = restored.Spec.Template.Spec.InitConfiguration.NodeRegistration.ImagePullPolicy
   160  	}
   161  
   162  	return nil
   163  }
   164  
   165  func (dst *KubeadmConfigTemplate) ConvertFrom(srcRaw conversion.Hub) error {
   166  	src := srcRaw.(*bootstrapv1.KubeadmConfigTemplate)
   167  
   168  	if err := Convert_v1beta1_KubeadmConfigTemplate_To_v1alpha4_KubeadmConfigTemplate(src, dst, nil); err != nil {
   169  		return err
   170  	}
   171  	// Preserve Hub data on down-conversion except for metadata.
   172  	return utilconversion.MarshalData(src, dst)
   173  }
   174  
   175  func (src *KubeadmConfigTemplateList) ConvertTo(dstRaw conversion.Hub) error {
   176  	dst := dstRaw.(*bootstrapv1.KubeadmConfigTemplateList)
   177  
   178  	return Convert_v1alpha4_KubeadmConfigTemplateList_To_v1beta1_KubeadmConfigTemplateList(src, dst, nil)
   179  }
   180  
   181  func (dst *KubeadmConfigTemplateList) ConvertFrom(srcRaw conversion.Hub) error {
   182  	src := srcRaw.(*bootstrapv1.KubeadmConfigTemplateList)
   183  
   184  	return Convert_v1beta1_KubeadmConfigTemplateList_To_v1alpha4_KubeadmConfigTemplateList(src, dst, nil)
   185  }
   186  
   187  // Convert_v1beta1_KubeadmConfigSpec_To_v1alpha4_KubeadmConfigSpec is an autogenerated conversion function.
   188  func Convert_v1beta1_KubeadmConfigSpec_To_v1alpha4_KubeadmConfigSpec(in *bootstrapv1.KubeadmConfigSpec, out *KubeadmConfigSpec, s apiconversion.Scope) error {
   189  	// KubeadmConfigSpec.Ignition does not exist in kubeadm v1alpha4 API.
   190  	return autoConvert_v1beta1_KubeadmConfigSpec_To_v1alpha4_KubeadmConfigSpec(in, out, s)
   191  }
   192  
   193  func Convert_v1beta1_InitConfiguration_To_v1alpha4_InitConfiguration(in *bootstrapv1.InitConfiguration, out *InitConfiguration, s apiconversion.Scope) error {
   194  	// InitConfiguration.Patches does not exist in kubeadm v1alpha4 API.
   195  	return autoConvert_v1beta1_InitConfiguration_To_v1alpha4_InitConfiguration(in, out, s)
   196  }
   197  
   198  func Convert_v1beta1_JoinConfiguration_To_v1alpha4_JoinConfiguration(in *bootstrapv1.JoinConfiguration, out *JoinConfiguration, s apiconversion.Scope) error {
   199  	// InitConfiguration.Patches does not exist in kubeadm v1alpha4 API.
   200  	return autoConvert_v1beta1_JoinConfiguration_To_v1alpha4_JoinConfiguration(in, out, s)
   201  }
   202  
   203  func Convert_v1beta1_File_To_v1alpha4_File(in *bootstrapv1.File, out *File, s apiconversion.Scope) error {
   204  	// File.Append does not exist in kubeadm v1alpha4 API.
   205  	return autoConvert_v1beta1_File_To_v1alpha4_File(in, out, s)
   206  }
   207  
   208  func Convert_v1beta1_User_To_v1alpha4_User(in *bootstrapv1.User, out *User, s apiconversion.Scope) error {
   209  	// User.PasswdFrom does not exist in kubeadm v1alpha4 API.
   210  	return autoConvert_v1beta1_User_To_v1alpha4_User(in, out, s)
   211  }
   212  
   213  func Convert_v1beta1_NodeRegistrationOptions_To_v1alpha4_NodeRegistrationOptions(in *bootstrapv1.NodeRegistrationOptions, out *NodeRegistrationOptions, s apiconversion.Scope) error {
   214  	// NodeRegistrationOptions.ImagePullPolicy does not exit in
   215  	// kubeadm v1alpha4 API.
   216  	return autoConvert_v1beta1_NodeRegistrationOptions_To_v1alpha4_NodeRegistrationOptions(in, out, s)
   217  }
   218  
   219  func Convert_v1beta1_KubeadmConfigTemplateResource_To_v1alpha4_KubeadmConfigTemplateResource(in *bootstrapv1.KubeadmConfigTemplateResource, out *KubeadmConfigTemplateResource, s apiconversion.Scope) error {
   220  	// KubeadmConfigTemplateResource.metadata does not exist in kubeadm v1alpha4.
   221  	return autoConvert_v1beta1_KubeadmConfigTemplateResource_To_v1alpha4_KubeadmConfigTemplateResource(in, out, s)
   222  }