diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta2/conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1beta2/conversion.go index d5c2243b983..c51831b7c50 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta2/conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta2/conversion.go @@ -17,9 +17,12 @@ limitations under the License. package v1beta2 import ( + "unsafe" + corev1 "k8s.io/api/core/v1" conversion "k8s.io/apimachinery/pkg/conversion" + bootstraptokenv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1" kubeadm "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" ) @@ -64,3 +67,19 @@ func Convert_v1beta2_JoinConfiguration_To_kubeadm_JoinConfiguration(in *JoinConf out.NodeRegistration.ImagePullPolicy = corev1.PullIfNotPresent return nil } + +// Convert_v1beta2_BootstrapToken_To_v1_BootstrapToken is required so that we can directly +// cast a v1beta1.BootstrapToken to v1.BootstrapToken using unsafe.Pointer and not +// field by field. +func Convert_v1beta2_BootstrapToken_To_v1_BootstrapToken(in *BootstrapToken, out *bootstraptokenv1.BootstrapToken, s conversion.Scope) error { + *out = *(*bootstraptokenv1.BootstrapToken)(unsafe.Pointer(in)) + return nil +} + +// Convert_v1_BootstrapToken_To_v1beta2_BootstrapToken is required so that we can directly +// cast a v1.BootstrapToken to v1beta1.BootstrapToken using unsafe.Pointer and not +// field by field. +func Convert_v1_BootstrapToken_To_v1beta2_BootstrapToken(in *bootstraptokenv1.BootstrapToken, out *BootstrapToken, s conversion.Scope) error { + *out = *(*BootstrapToken)(unsafe.Pointer(in)) + return nil +} diff --git a/cmd/kubeadm/app/apis/kubeadm/v1beta2/zz_generated.conversion.go b/cmd/kubeadm/app/apis/kubeadm/v1beta2/zz_generated.conversion.go index 798fdb32827..1b4d9ff0401 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1beta2/zz_generated.conversion.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1beta2/zz_generated.conversion.go @@ -25,10 +25,10 @@ import ( unsafe "unsafe" corev1 "k8s.io/api/core/v1" - v1 "k8s.io/apimachinery/pkg/apis/meta/v1" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" - bootstraptokenv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1" + v1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1" kubeadm "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" ) @@ -204,6 +204,16 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddConversionFunc((*v1.BootstrapToken)(nil), (*BootstrapToken)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1_BootstrapToken_To_v1beta2_BootstrapToken(a.(*v1.BootstrapToken), b.(*BootstrapToken), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*BootstrapToken)(nil), (*v1.BootstrapToken)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1beta2_BootstrapToken_To_v1_BootstrapToken(a.(*BootstrapToken), b.(*v1.BootstrapToken), scope) + }); err != nil { + return err + } if err := s.AddConversionFunc((*ClusterConfiguration)(nil), (*kubeadm.ClusterConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1beta2_ClusterConfiguration_To_kubeadm_ClusterConfiguration(a.(*ClusterConfiguration), b.(*kubeadm.ClusterConfiguration), scope) }); err != nil { @@ -249,7 +259,7 @@ func autoConvert_v1beta2_APIServer_To_kubeadm_APIServer(in *APIServer, out *kube return err } out.CertSANs = *(*[]string)(unsafe.Pointer(&in.CertSANs)) - out.TimeoutForControlPlane = (*v1.Duration)(unsafe.Pointer(in.TimeoutForControlPlane)) + out.TimeoutForControlPlane = (*metav1.Duration)(unsafe.Pointer(in.TimeoutForControlPlane)) return nil } @@ -263,7 +273,7 @@ func autoConvert_kubeadm_APIServer_To_v1beta2_APIServer(in *kubeadm.APIServer, o return err } out.CertSANs = *(*[]string)(unsafe.Pointer(&in.CertSANs)) - out.TimeoutForControlPlane = (*v1.Duration)(unsafe.Pointer(in.TimeoutForControlPlane)) + out.TimeoutForControlPlane = (*metav1.Duration)(unsafe.Pointer(in.TimeoutForControlPlane)) return nil } @@ -414,7 +424,7 @@ func autoConvert_v1beta2_Discovery_To_kubeadm_Discovery(in *Discovery, out *kube out.BootstrapToken = (*kubeadm.BootstrapTokenDiscovery)(unsafe.Pointer(in.BootstrapToken)) out.File = (*kubeadm.FileDiscovery)(unsafe.Pointer(in.File)) out.TLSBootstrapToken = in.TLSBootstrapToken - out.Timeout = (*v1.Duration)(unsafe.Pointer(in.Timeout)) + out.Timeout = (*metav1.Duration)(unsafe.Pointer(in.Timeout)) return nil } @@ -427,7 +437,7 @@ func autoConvert_kubeadm_Discovery_To_v1beta2_Discovery(in *kubeadm.Discovery, o out.BootstrapToken = (*BootstrapTokenDiscovery)(unsafe.Pointer(in.BootstrapToken)) out.File = (*FileDiscovery)(unsafe.Pointer(in.File)) out.TLSBootstrapToken = in.TLSBootstrapToken - out.Timeout = (*v1.Duration)(unsafe.Pointer(in.Timeout)) + out.Timeout = (*metav1.Duration)(unsafe.Pointer(in.Timeout)) return nil } @@ -555,7 +565,17 @@ func Convert_kubeadm_ImageMeta_To_v1beta2_ImageMeta(in *kubeadm.ImageMeta, out * } func autoConvert_v1beta2_InitConfiguration_To_kubeadm_InitConfiguration(in *InitConfiguration, out *kubeadm.InitConfiguration, s conversion.Scope) error { - out.BootstrapTokens = *(*[]bootstraptokenv1.BootstrapToken)(unsafe.Pointer(&in.BootstrapTokens)) + if in.BootstrapTokens != nil { + in, out := &in.BootstrapTokens, &out.BootstrapTokens + *out = make([]v1.BootstrapToken, len(*in)) + for i := range *in { + if err := Convert_v1beta2_BootstrapToken_To_v1_BootstrapToken(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.BootstrapTokens = nil + } if err := Convert_v1beta2_NodeRegistrationOptions_To_kubeadm_NodeRegistrationOptions(&in.NodeRegistration, &out.NodeRegistration, s); err != nil { return err } @@ -568,7 +588,17 @@ func autoConvert_v1beta2_InitConfiguration_To_kubeadm_InitConfiguration(in *Init func autoConvert_kubeadm_InitConfiguration_To_v1beta2_InitConfiguration(in *kubeadm.InitConfiguration, out *InitConfiguration, s conversion.Scope) error { // WARNING: in.ClusterConfiguration requires manual conversion: does not exist in peer-type - out.BootstrapTokens = *(*[]BootstrapToken)(unsafe.Pointer(&in.BootstrapTokens)) + if in.BootstrapTokens != nil { + in, out := &in.BootstrapTokens, &out.BootstrapTokens + *out = make([]BootstrapToken, len(*in)) + for i := range *in { + if err := Convert_v1_BootstrapToken_To_v1beta2_BootstrapToken(&(*in)[i], &(*out)[i], s); err != nil { + return err + } + } + } else { + out.BootstrapTokens = nil + } if err := Convert_kubeadm_NodeRegistrationOptions_To_v1beta2_NodeRegistrationOptions(&in.NodeRegistration, &out.NodeRegistration, s); err != nil { return err } diff --git a/cmd/kubeadm/app/apis/output/v1alpha1/conversion.go b/cmd/kubeadm/app/apis/output/v1alpha1/conversion.go new file mode 100644 index 00000000000..16943a19f91 --- /dev/null +++ b/cmd/kubeadm/app/apis/output/v1alpha1/conversion.go @@ -0,0 +1,37 @@ +/* +Copyright 2021 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + conversion "k8s.io/apimachinery/pkg/conversion" + + kubeadmv1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" + output "k8s.io/kubernetes/cmd/kubeadm/app/apis/output" +) + +// The conversion functions here are required since output.v1alpha2.BootstrapToken embeds +// bootstraptoken.v1.BootstrapToken, instead of kubeadm.v1beta2.BootstrapToken. + +func Convert_v1alpha1_BootstrapToken_To_output_BootstrapToken(in *BootstrapToken, out *output.BootstrapToken, s conversion.Scope) error { + kubeadmv1beta2.Convert_v1beta2_BootstrapToken_To_v1_BootstrapToken(&in.BootstrapToken, &out.BootstrapToken, s) + return nil +} + +func Convert_output_BootstrapToken_To_v1alpha1_BootstrapToken(in *output.BootstrapToken, out *BootstrapToken, s conversion.Scope) error { + kubeadmv1beta2.Convert_v1_BootstrapToken_To_v1beta2_BootstrapToken(&in.BootstrapToken, &out.BootstrapToken, s) + return nil +} diff --git a/cmd/kubeadm/app/apis/output/v1alpha1/zz_generated.conversion.go b/cmd/kubeadm/app/apis/output/v1alpha1/zz_generated.conversion.go index d6ccca0e6e0..d6d619bd37e 100644 --- a/cmd/kubeadm/app/apis/output/v1alpha1/zz_generated.conversion.go +++ b/cmd/kubeadm/app/apis/output/v1alpha1/zz_generated.conversion.go @@ -26,6 +26,7 @@ import ( conversion "k8s.io/apimachinery/pkg/conversion" runtime "k8s.io/apimachinery/pkg/runtime" + v1beta2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta2" output "k8s.io/kubernetes/cmd/kubeadm/app/apis/output" ) @@ -36,16 +37,6 @@ func init() { // RegisterConversions adds conversion functions to the given scheme. // Public to allow building arbitrary schemes. func RegisterConversions(s *runtime.Scheme) error { - if err := s.AddGeneratedConversionFunc((*BootstrapToken)(nil), (*output.BootstrapToken)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_v1alpha1_BootstrapToken_To_output_BootstrapToken(a.(*BootstrapToken), b.(*output.BootstrapToken), scope) - }); err != nil { - return err - } - if err := s.AddGeneratedConversionFunc((*output.BootstrapToken)(nil), (*BootstrapToken)(nil), func(a, b interface{}, scope conversion.Scope) error { - return Convert_output_BootstrapToken_To_v1alpha1_BootstrapToken(a.(*output.BootstrapToken), b.(*BootstrapToken), scope) - }); err != nil { - return err - } if err := s.AddGeneratedConversionFunc((*ComponentConfigVersionState)(nil), (*output.ComponentConfigVersionState)(nil), func(a, b interface{}, scope conversion.Scope) error { return Convert_v1alpha1_ComponentConfigVersionState_To_output_ComponentConfigVersionState(a.(*ComponentConfigVersionState), b.(*output.ComponentConfigVersionState), scope) }); err != nil { @@ -86,29 +77,33 @@ func RegisterConversions(s *runtime.Scheme) error { }); err != nil { return err } + if err := s.AddConversionFunc((*output.BootstrapToken)(nil), (*BootstrapToken)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_output_BootstrapToken_To_v1alpha1_BootstrapToken(a.(*output.BootstrapToken), b.(*BootstrapToken), scope) + }); err != nil { + return err + } + if err := s.AddConversionFunc((*BootstrapToken)(nil), (*output.BootstrapToken)(nil), func(a, b interface{}, scope conversion.Scope) error { + return Convert_v1alpha1_BootstrapToken_To_output_BootstrapToken(a.(*BootstrapToken), b.(*output.BootstrapToken), scope) + }); err != nil { + return err + } return nil } func autoConvert_v1alpha1_BootstrapToken_To_output_BootstrapToken(in *BootstrapToken, out *output.BootstrapToken, s conversion.Scope) error { - out.BootstrapToken = in.BootstrapToken + if err := v1beta2.Convert_v1beta2_BootstrapToken_To_v1_BootstrapToken(&in.BootstrapToken, &out.BootstrapToken, s); err != nil { + return err + } return nil } -// Convert_v1alpha1_BootstrapToken_To_output_BootstrapToken is an autogenerated conversion function. -func Convert_v1alpha1_BootstrapToken_To_output_BootstrapToken(in *BootstrapToken, out *output.BootstrapToken, s conversion.Scope) error { - return autoConvert_v1alpha1_BootstrapToken_To_output_BootstrapToken(in, out, s) -} - func autoConvert_output_BootstrapToken_To_v1alpha1_BootstrapToken(in *output.BootstrapToken, out *BootstrapToken, s conversion.Scope) error { - out.BootstrapToken = in.BootstrapToken + if err := v1beta2.Convert_v1_BootstrapToken_To_v1beta2_BootstrapToken(&in.BootstrapToken, &out.BootstrapToken, s); err != nil { + return err + } return nil } -// Convert_output_BootstrapToken_To_v1alpha1_BootstrapToken is an autogenerated conversion function. -func Convert_output_BootstrapToken_To_v1alpha1_BootstrapToken(in *output.BootstrapToken, out *BootstrapToken, s conversion.Scope) error { - return autoConvert_output_BootstrapToken_To_v1alpha1_BootstrapToken(in, out, s) -} - func autoConvert_v1alpha1_ComponentConfigVersionState_To_output_ComponentConfigVersionState(in *ComponentConfigVersionState, out *output.ComponentConfigVersionState, s conversion.Scope) error { out.Group = in.Group out.CurrentVersion = in.CurrentVersion