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 }