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 }