kubeadm: add a Timeouts struct to v1beta4

The struct is included in InitConfiguration, JoinConfiguration
and ResetConfiguration.

Add conversion and update defaulters and fuzzers.
Include a timeoututils.go that contains a function
to default the internal Timeouts struct.
This commit is contained in:
Lubomir I. Ivanov 2023-12-28 16:19:19 +02:00
parent 0598cec06a
commit 492c0619dc
13 changed files with 451 additions and 128 deletions

View File

@ -25,7 +25,6 @@ import (
bootstraptokenv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1" bootstraptokenv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1"
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
) )
// Funcs returns the fuzzer functions for the kubeadm apis. // Funcs returns the fuzzer functions for the kubeadm apis.
@ -65,6 +64,7 @@ func fuzzInitConfiguration(obj *kubeadm.InitConfiguration, c fuzz.Continue) {
obj.NodeRegistration.ImagePullPolicy = corev1.PullIfNotPresent obj.NodeRegistration.ImagePullPolicy = corev1.PullIfNotPresent
obj.Patches = nil obj.Patches = nil
obj.DryRun = false obj.DryRun = false
kubeadm.SetDefaultTimeouts(&obj.Timeouts)
} }
func fuzzNodeRegistration(obj *kubeadm.NodeRegistrationOptions, c fuzz.Continue) { func fuzzNodeRegistration(obj *kubeadm.NodeRegistrationOptions, c fuzz.Continue) {
@ -85,7 +85,7 @@ func fuzzClusterConfiguration(obj *kubeadm.ClusterConfiguration, c fuzz.Continue
obj.KubernetesVersion = "qux" obj.KubernetesVersion = "qux"
obj.CIKubernetesVersion = "" // This fields doesn't exists in public API >> using default to get the roundtrip test pass obj.CIKubernetesVersion = "" // This fields doesn't exists in public API >> using default to get the roundtrip test pass
obj.APIServer.TimeoutForControlPlane = &metav1.Duration{ obj.APIServer.TimeoutForControlPlane = &metav1.Duration{
Duration: constants.DefaultControlPlaneTimeout, Duration: 0,
} }
obj.ControllerManager.ExtraEnvs = []kubeadm.EnvVar{} obj.ControllerManager.ExtraEnvs = []kubeadm.EnvVar{}
obj.APIServer.ExtraEnvs = []kubeadm.EnvVar{} obj.APIServer.ExtraEnvs = []kubeadm.EnvVar{}
@ -128,12 +128,13 @@ func fuzzJoinConfiguration(obj *kubeadm.JoinConfiguration, c fuzz.Continue) {
obj.Discovery = kubeadm.Discovery{ obj.Discovery = kubeadm.Discovery{
BootstrapToken: &kubeadm.BootstrapTokenDiscovery{Token: "baz"}, BootstrapToken: &kubeadm.BootstrapTokenDiscovery{Token: "baz"},
TLSBootstrapToken: "qux", TLSBootstrapToken: "qux",
Timeout: &metav1.Duration{Duration: 1234}, Timeout: &metav1.Duration{},
} }
obj.SkipPhases = nil obj.SkipPhases = nil
obj.NodeRegistration.ImagePullPolicy = corev1.PullIfNotPresent obj.NodeRegistration.ImagePullPolicy = corev1.PullIfNotPresent
obj.Patches = nil obj.Patches = nil
obj.DryRun = false obj.DryRun = false
kubeadm.SetDefaultTimeouts(&obj.Timeouts)
} }
func fuzzJoinControlPlane(obj *kubeadm.JoinControlPlane, c fuzz.Continue) { func fuzzJoinControlPlane(obj *kubeadm.JoinControlPlane, c fuzz.Continue) {
@ -145,4 +146,5 @@ func fuzzResetConfiguration(obj *kubeadm.ResetConfiguration, c fuzz.Continue) {
// Pinning values for fields that get defaults if fuzz value is empty string or nil (thus making the round trip test fail) // Pinning values for fields that get defaults if fuzz value is empty string or nil (thus making the round trip test fail)
obj.CertificatesDir = "/tmp" obj.CertificatesDir = "/tmp"
kubeadm.SetDefaultTimeouts(&obj.Timeouts)
} }

View File

@ -0,0 +1,35 @@
/*
Copyright 2023 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 kubeadm
import (
"time"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
)
// SetDefaultTimeouts sets an internal Timeouts struct to its default values.
func SetDefaultTimeouts(t **Timeouts) {
*t = &Timeouts{
ControlPlaneComponentHealthCheck: &metav1.Duration{Duration: 4 * time.Minute},
KubeletHealthCheck: &metav1.Duration{Duration: 4 * time.Minute},
KubernetesAPICall: &metav1.Duration{Duration: 1 * time.Minute},
EtcdAPICall: &metav1.Duration{Duration: 2 * time.Minute},
TLSBootstrap: &metav1.Duration{Duration: 5 * time.Minute},
Discovery: &metav1.Duration{Duration: 5 * time.Minute},
}
}

View File

@ -69,6 +69,9 @@ type InitConfiguration struct {
// Patches contains options related to applying patches to components deployed by kubeadm during // Patches contains options related to applying patches to components deployed by kubeadm during
// "kubeadm init". // "kubeadm init".
Patches *Patches Patches *Patches
// Timeouts holds various timeouts that apply to kubeadm commands.
Timeouts *Timeouts
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
@ -343,6 +346,9 @@ type JoinConfiguration struct {
// Patches contains options related to applying patches to components deployed by kubeadm during // Patches contains options related to applying patches to components deployed by kubeadm during
// "kubeadm join". // "kubeadm join".
Patches *Patches Patches *Patches
// Timeouts holds various timeouts that apply to kubeadm commands.
Timeouts *Timeouts
} }
// JoinControlPlane contains elements describing an additional control plane instance to be deployed on the joining node. // JoinControlPlane contains elements describing an additional control plane instance to be deployed on the joining node.
@ -527,6 +533,9 @@ type ResetConfiguration struct {
// directories during "reset". A flag can be one of: MNT_FORCE, MNT_DETACH, MNT_EXPIRE, UMOUNT_NOFOLLOW. // directories during "reset". A flag can be one of: MNT_FORCE, MNT_DETACH, MNT_EXPIRE, UMOUNT_NOFOLLOW.
// By default this list is empty. // By default this list is empty.
UnmountFlags []string UnmountFlags []string
// Timeouts holds various timeouts that apply to kubeadm commands.
Timeouts *Timeouts
} }
const ( const (
@ -563,3 +572,30 @@ const (
// EncryptionAlgorithmRSA defines the RSA encryption algorithm type. // EncryptionAlgorithmRSA defines the RSA encryption algorithm type.
EncryptionAlgorithmRSA EncryptionAlgorithmType = "RSA" EncryptionAlgorithmRSA EncryptionAlgorithmType = "RSA"
) )
// Timeouts holds various timeouts that apply to kubeadm commands.
type Timeouts struct {
// ControlPlaneComponentHealthCheck is the amount of time to wait for a control plane
// component, such as the API server, to be healthy during "kubeadm init" and "kubeadm join".
ControlPlaneComponentHealthCheck *metav1.Duration
// KubeletHealthCheck is the amount of time to wait for the kubelet to be healthy
// during "kubeadm init" and "kubeadm join".
KubeletHealthCheck *metav1.Duration
// KubernetesAPICall is the amount of time to wait for the kubeadm client to complete a request to
// the API server. This applies to all types of methods (GET, POST, etc).
KubernetesAPICall *metav1.Duration
// EtcdAPICall is the amount of time to wait for the kubeadm etcd client to complete a request to
// the etcd cluster.
EtcdAPICall *metav1.Duration
// TLSBootstrap is the amount of time to wait for the kubelet to complete TLS bootstrap
// for a joining node.
TLSBootstrap *metav1.Duration
// Discovery is the amount of time to wait for kubeadm to validate the API server identity
// for a joining node.
Discovery *metav1.Duration
}

View File

@ -29,11 +29,6 @@ func Convert_kubeadm_InitConfiguration_To_v1beta3_InitConfiguration(in *kubeadm.
return autoConvert_kubeadm_InitConfiguration_To_v1beta3_InitConfiguration(in, out, s) return autoConvert_kubeadm_InitConfiguration_To_v1beta3_InitConfiguration(in, out, s)
} }
// Convert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration converts a private JoinConfiguration to public JoinConfiguration.
func Convert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration(in *kubeadm.JoinConfiguration, out *JoinConfiguration, s conversion.Scope) error {
return autoConvert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration(in, out, s)
}
// Convert_v1beta3_InitConfiguration_To_kubeadm_InitConfiguration converts a public InitConfiguration to private InitConfiguration. // Convert_v1beta3_InitConfiguration_To_kubeadm_InitConfiguration converts a public InitConfiguration to private InitConfiguration.
func Convert_v1beta3_InitConfiguration_To_kubeadm_InitConfiguration(in *InitConfiguration, out *kubeadm.InitConfiguration, s conversion.Scope) error { func Convert_v1beta3_InitConfiguration_To_kubeadm_InitConfiguration(in *InitConfiguration, out *kubeadm.InitConfiguration, s conversion.Scope) error {
err := autoConvert_v1beta3_InitConfiguration_To_kubeadm_InitConfiguration(in, out, s) err := autoConvert_v1beta3_InitConfiguration_To_kubeadm_InitConfiguration(in, out, s)
@ -45,9 +40,22 @@ func Convert_v1beta3_InitConfiguration_To_kubeadm_InitConfiguration(in *InitConf
// If we call Convert_v1beta3_ClusterConfiguration_To_kubeadm_ClusterConfiguration() it will receive // If we call Convert_v1beta3_ClusterConfiguration_To_kubeadm_ClusterConfiguration() it will receive
// a default value, thus here we need to reset it back to "". // a default value, thus here we need to reset it back to "".
out.EncryptionAlgorithm = "" out.EncryptionAlgorithm = ""
// Set default timeouts.
kubeadm.SetDefaultTimeouts(&out.Timeouts)
return err return err
} }
// Convert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration converts a private JoinConfiguration to public JoinConfiguration.
func Convert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration(in *kubeadm.JoinConfiguration, out *JoinConfiguration, s conversion.Scope) error {
return autoConvert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration(in, out, s)
}
// Convert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration converts a public JoinConfiguration to a private JoinConfiguration.
func Convert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(in *JoinConfiguration, out *kubeadm.JoinConfiguration, s conversion.Scope) error {
kubeadm.SetDefaultTimeouts(&out.Timeouts)
return autoConvert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(in, out, s)
}
// Convert_kubeadm_ClusterConfiguration_To_v1beta3_ClusterConfiguration is required due to missing EncryptionAlgorithm in v1beta3. // Convert_kubeadm_ClusterConfiguration_To_v1beta3_ClusterConfiguration is required due to missing EncryptionAlgorithm in v1beta3.
func Convert_kubeadm_ClusterConfiguration_To_v1beta3_ClusterConfiguration(in *kubeadm.ClusterConfiguration, out *ClusterConfiguration, s conversion.Scope) error { func Convert_kubeadm_ClusterConfiguration_To_v1beta3_ClusterConfiguration(in *kubeadm.ClusterConfiguration, out *ClusterConfiguration, s conversion.Scope) error {
return autoConvert_kubeadm_ClusterConfiguration_To_v1beta3_ClusterConfiguration(in, out, s) return autoConvert_kubeadm_ClusterConfiguration_To_v1beta3_ClusterConfiguration(in, out, s)
@ -135,3 +143,8 @@ func convertFromArgs(in []kubeadm.Arg) map[string]string {
} }
return args return args
} }
// Convert_v1beta3_APIServer_To_kubeadm_APIServer is required due to missing APIServer.TimeoutForControlPlane in v1beta4.
func Convert_v1beta3_APIServer_To_kubeadm_APIServer(in *APIServer, out *kubeadm.APIServer, s conversion.Scope) error {
return autoConvert_v1beta3_APIServer_To_kubeadm_APIServer(in, out, s)
}

View File

@ -49,11 +49,6 @@ func RegisterConversions(s *runtime.Scheme) error {
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddGeneratedConversionFunc((*APIServer)(nil), (*kubeadm.APIServer)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta3_APIServer_To_kubeadm_APIServer(a.(*APIServer), b.(*kubeadm.APIServer), scope)
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*kubeadm.APIServer)(nil), (*APIServer)(nil), func(a, b interface{}, scope conversion.Scope) error { if err := s.AddGeneratedConversionFunc((*kubeadm.APIServer)(nil), (*APIServer)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_kubeadm_APIServer_To_v1beta3_APIServer(a.(*kubeadm.APIServer), b.(*APIServer), scope) return Convert_kubeadm_APIServer_To_v1beta3_APIServer(a.(*kubeadm.APIServer), b.(*APIServer), scope)
}); err != nil { }); err != nil {
@ -134,11 +129,6 @@ func RegisterConversions(s *runtime.Scheme) error {
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddGeneratedConversionFunc((*JoinConfiguration)(nil), (*kubeadm.JoinConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(a.(*JoinConfiguration), b.(*kubeadm.JoinConfiguration), scope)
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*JoinControlPlane)(nil), (*kubeadm.JoinControlPlane)(nil), func(a, b interface{}, scope conversion.Scope) error { if err := s.AddGeneratedConversionFunc((*JoinControlPlane)(nil), (*kubeadm.JoinControlPlane)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta3_JoinControlPlane_To_kubeadm_JoinControlPlane(a.(*JoinControlPlane), b.(*kubeadm.JoinControlPlane), scope) return Convert_v1beta3_JoinControlPlane_To_kubeadm_JoinControlPlane(a.(*JoinControlPlane), b.(*kubeadm.JoinControlPlane), scope)
}); err != nil { }); err != nil {
@ -204,6 +194,11 @@ func RegisterConversions(s *runtime.Scheme) error {
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddConversionFunc((*APIServer)(nil), (*kubeadm.APIServer)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta3_APIServer_To_kubeadm_APIServer(a.(*APIServer), b.(*kubeadm.APIServer), scope)
}); err != nil {
return err
}
if err := s.AddConversionFunc((*ClusterConfiguration)(nil), (*kubeadm.ClusterConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { if err := s.AddConversionFunc((*ClusterConfiguration)(nil), (*kubeadm.ClusterConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta3_ClusterConfiguration_To_kubeadm_ClusterConfiguration(a.(*ClusterConfiguration), b.(*kubeadm.ClusterConfiguration), scope) return Convert_v1beta3_ClusterConfiguration_To_kubeadm_ClusterConfiguration(a.(*ClusterConfiguration), b.(*kubeadm.ClusterConfiguration), scope)
}); err != nil { }); err != nil {
@ -219,6 +214,11 @@ func RegisterConversions(s *runtime.Scheme) error {
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddConversionFunc((*JoinConfiguration)(nil), (*kubeadm.JoinConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(a.(*JoinConfiguration), b.(*kubeadm.JoinConfiguration), scope)
}); err != nil {
return err
}
if err := s.AddConversionFunc((*LocalEtcd)(nil), (*kubeadm.LocalEtcd)(nil), func(a, b interface{}, scope conversion.Scope) error { if err := s.AddConversionFunc((*LocalEtcd)(nil), (*kubeadm.LocalEtcd)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta3_LocalEtcd_To_kubeadm_LocalEtcd(a.(*LocalEtcd), b.(*kubeadm.LocalEtcd), scope) return Convert_v1beta3_LocalEtcd_To_kubeadm_LocalEtcd(a.(*LocalEtcd), b.(*kubeadm.LocalEtcd), scope)
}); err != nil { }); err != nil {
@ -263,11 +263,6 @@ func autoConvert_v1beta3_APIServer_To_kubeadm_APIServer(in *APIServer, out *kube
return nil return nil
} }
// Convert_v1beta3_APIServer_To_kubeadm_APIServer is an autogenerated conversion function.
func Convert_v1beta3_APIServer_To_kubeadm_APIServer(in *APIServer, out *kubeadm.APIServer, s conversion.Scope) error {
return autoConvert_v1beta3_APIServer_To_kubeadm_APIServer(in, out, s)
}
func autoConvert_kubeadm_APIServer_To_v1beta3_APIServer(in *kubeadm.APIServer, out *APIServer, s conversion.Scope) error { func autoConvert_kubeadm_APIServer_To_v1beta3_APIServer(in *kubeadm.APIServer, out *APIServer, s conversion.Scope) error {
if err := Convert_kubeadm_ControlPlaneComponent_To_v1beta3_ControlPlaneComponent(&in.ControlPlaneComponent, &out.ControlPlaneComponent, s); err != nil { if err := Convert_kubeadm_ControlPlaneComponent_To_v1beta3_ControlPlaneComponent(&in.ControlPlaneComponent, &out.ControlPlaneComponent, s); err != nil {
return err return err
@ -589,6 +584,7 @@ func autoConvert_kubeadm_InitConfiguration_To_v1beta3_InitConfiguration(in *kube
out.CertificateKey = in.CertificateKey out.CertificateKey = in.CertificateKey
out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases))
out.Patches = (*Patches)(unsafe.Pointer(in.Patches)) out.Patches = (*Patches)(unsafe.Pointer(in.Patches))
// WARNING: in.Timeouts requires manual conversion: does not exist in peer-type
return nil return nil
} }
@ -606,11 +602,6 @@ func autoConvert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(in *Join
return nil return nil
} }
// Convert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration is an autogenerated conversion function.
func Convert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(in *JoinConfiguration, out *kubeadm.JoinConfiguration, s conversion.Scope) error {
return autoConvert_v1beta3_JoinConfiguration_To_kubeadm_JoinConfiguration(in, out, s)
}
func autoConvert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration(in *kubeadm.JoinConfiguration, out *JoinConfiguration, s conversion.Scope) error { func autoConvert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration(in *kubeadm.JoinConfiguration, out *JoinConfiguration, s conversion.Scope) error {
// WARNING: in.DryRun requires manual conversion: does not exist in peer-type // WARNING: in.DryRun requires manual conversion: does not exist in peer-type
if err := Convert_kubeadm_NodeRegistrationOptions_To_v1beta3_NodeRegistrationOptions(&in.NodeRegistration, &out.NodeRegistration, s); err != nil { if err := Convert_kubeadm_NodeRegistrationOptions_To_v1beta3_NodeRegistrationOptions(&in.NodeRegistration, &out.NodeRegistration, s); err != nil {
@ -623,6 +614,7 @@ func autoConvert_kubeadm_JoinConfiguration_To_v1beta3_JoinConfiguration(in *kube
out.ControlPlane = (*JoinControlPlane)(unsafe.Pointer(in.ControlPlane)) out.ControlPlane = (*JoinControlPlane)(unsafe.Pointer(in.ControlPlane))
out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases))
out.Patches = (*Patches)(unsafe.Pointer(in.Patches)) out.Patches = (*Patches)(unsafe.Pointer(in.Patches))
// WARNING: in.Timeouts requires manual conversion: does not exist in peer-type
return nil return nil
} }

View File

@ -17,6 +17,7 @@ limitations under the License.
package v1beta4 package v1beta4
import ( import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/conversion" "k8s.io/apimachinery/pkg/conversion"
"k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm"
@ -34,5 +35,35 @@ func Convert_v1beta4_InitConfiguration_To_kubeadm_InitConfiguration(in *InitConf
return err return err
} }
err = Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(&ClusterConfiguration{}, &out.ClusterConfiguration, s) err = Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(&ClusterConfiguration{}, &out.ClusterConfiguration, s)
out.ClusterConfiguration.APIServer.TimeoutForControlPlane = nil
return err
}
// Convert_kubeadm_APIServer_To_v1beta4_APIServer is required due to missing APIServer.TimeoutForControlPlane in v1beta4.
func Convert_kubeadm_APIServer_To_v1beta4_APIServer(in *kubeadm.APIServer, out *APIServer, s conversion.Scope) error {
return autoConvert_kubeadm_APIServer_To_v1beta4_APIServer(in, out, s)
}
// Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration is required due to missing TimeoutForControlPlane in v1beta4
func Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(in *ClusterConfiguration, out *kubeadm.ClusterConfiguration, s conversion.Scope) error {
out.APIServer.TimeoutForControlPlane = &metav1.Duration{}
return autoConvert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(in, out, s)
}
// Convert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration converts a public JoinConfiguration to a private JoinConfiguration.
func Convert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(in *JoinConfiguration, out *kubeadm.JoinConfiguration, s conversion.Scope) error {
err := autoConvert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(in, out, s)
return err
}
// Convert_kubeadm_Discovery_To_v1beta4_Discovery is required because there is no Discovery.Timeout in v1beta4
func Convert_kubeadm_Discovery_To_v1beta4_Discovery(in *kubeadm.Discovery, out *Discovery, s conversion.Scope) error {
return autoConvert_kubeadm_Discovery_To_v1beta4_Discovery(in, out, s)
}
// Convert_v1beta4_Discovery_To_kubeadm_Discovery is required because there is no Discovery.Timeout in v1beta4
func Convert_v1beta4_Discovery_To_kubeadm_Discovery(in *Discovery, out *kubeadm.Discovery, s conversion.Scope) error {
err := autoConvert_v1beta4_Discovery_To_kubeadm_Discovery(in, out, s)
out.Timeout = &metav1.Duration{}
return err return err
} }

View File

@ -74,6 +74,10 @@ func SetDefaults_InitConfiguration(obj *InitConfiguration) {
SetDefaults_BootstrapTokens(obj) SetDefaults_BootstrapTokens(obj)
SetDefaults_APIEndpoint(&obj.LocalAPIEndpoint) SetDefaults_APIEndpoint(&obj.LocalAPIEndpoint)
SetDefaults_NodeRegistration(&obj.NodeRegistration) SetDefaults_NodeRegistration(&obj.NodeRegistration)
if obj.Timeouts == nil {
obj.Timeouts = &Timeouts{}
}
SetDefaults_Timeouts(obj.Timeouts)
} }
// SetDefaults_ClusterConfiguration assigns default values for the ClusterConfiguration // SetDefaults_ClusterConfiguration assigns default values for the ClusterConfiguration
@ -107,16 +111,6 @@ func SetDefaults_ClusterConfiguration(obj *ClusterConfiguration) {
} }
SetDefaults_Etcd(obj) SetDefaults_Etcd(obj)
SetDefaults_APIServer(&obj.APIServer)
}
// SetDefaults_APIServer assigns default values for the API Server
func SetDefaults_APIServer(obj *APIServer) {
if obj.TimeoutForControlPlane == nil {
obj.TimeoutForControlPlane = &metav1.Duration{
Duration: constants.DefaultControlPlaneTimeout,
}
}
} }
// SetDefaults_Etcd assigns default values for the proxy // SetDefaults_Etcd assigns default values for the proxy
@ -140,6 +134,10 @@ func SetDefaults_JoinConfiguration(obj *JoinConfiguration) {
SetDefaults_JoinControlPlane(obj.ControlPlane) SetDefaults_JoinControlPlane(obj.ControlPlane)
SetDefaults_Discovery(&obj.Discovery) SetDefaults_Discovery(&obj.Discovery)
SetDefaults_NodeRegistration(&obj.NodeRegistration) SetDefaults_NodeRegistration(&obj.NodeRegistration)
if obj.Timeouts == nil {
obj.Timeouts = &Timeouts{}
}
SetDefaults_Timeouts(obj.Timeouts)
} }
// SetDefaults_JoinControlPlane assigns default values for a joining control plane node // SetDefaults_JoinControlPlane assigns default values for a joining control plane node
@ -155,12 +153,6 @@ func SetDefaults_Discovery(obj *Discovery) {
obj.TLSBootstrapToken = obj.BootstrapToken.Token obj.TLSBootstrapToken = obj.BootstrapToken.Token
} }
if obj.Timeout == nil {
obj.Timeout = &metav1.Duration{
Duration: DefaultDiscoveryTimeout,
}
}
if obj.File != nil { if obj.File != nil {
SetDefaults_FileDiscovery(obj.File) SetDefaults_FileDiscovery(obj.File)
} }
@ -212,6 +204,10 @@ func SetDefaults_ResetConfiguration(obj *ResetConfiguration) {
if obj.CertificatesDir == "" { if obj.CertificatesDir == "" {
obj.CertificatesDir = DefaultCertificatesDir obj.CertificatesDir = DefaultCertificatesDir
} }
if obj.Timeouts == nil {
obj.Timeouts = &Timeouts{}
}
SetDefaults_Timeouts(obj.Timeouts)
} }
// SetDefaults_EnvVar assigns default values for EnvVar. // SetDefaults_EnvVar assigns default values for EnvVar.
@ -225,3 +221,37 @@ func SetDefaults_EnvVar(obj *EnvVar) {
} }
} }
} }
// SetDefaults_Timeouts assigns default values for timeouts.
func SetDefaults_Timeouts(obj *Timeouts) {
if obj.ControlPlaneComponentHealthCheck == nil {
obj.ControlPlaneComponentHealthCheck = &metav1.Duration{
Duration: constants.DefaultControlPlaneTimeout,
}
}
if obj.KubeletHealthCheck == nil {
obj.KubeletHealthCheck = &metav1.Duration{
Duration: constants.DefaultKubeletTimeout,
}
}
if obj.KubernetesAPICall == nil {
obj.KubernetesAPICall = &metav1.Duration{
Duration: time.Minute * 1, // TODO: use constant
}
}
if obj.EtcdAPICall == nil {
obj.EtcdAPICall = &metav1.Duration{
Duration: time.Minute * 1, // TODO: use constant
}
}
if obj.TLSBootstrap == nil {
obj.TLSBootstrap = &metav1.Duration{
Duration: constants.TLSBootstrapTimeout,
}
}
if obj.Discovery == nil {
obj.Discovery = &metav1.Duration{
Duration: DefaultDiscoveryTimeout,
}
}
}

View File

@ -38,6 +38,8 @@ limitations under the License.
// - Add `ClusterConfiguration.DNS.Disabled` and `ClusterConfiguration.Proxy.Disabled` that can be used to disable // - Add `ClusterConfiguration.DNS.Disabled` and `ClusterConfiguration.Proxy.Disabled` that can be used to disable
// the CoreDNS and kube-proxy addons during cluster initialization. Skipping the related addons phases, // the CoreDNS and kube-proxy addons during cluster initialization. Skipping the related addons phases,
// during cluster creation will set the same fields to `false`. // during cluster creation will set the same fields to `false`.
// - Add a `Timeouts` structure to `InitConfiguration`, `JoinConfiguration` and `ResetConfiguration“
// that can be used to configure various timeouts.
// //
// Migration from old kubeadm config versions // Migration from old kubeadm config versions
// //

View File

@ -72,6 +72,10 @@ type InitConfiguration struct {
// "kubeadm init". // "kubeadm init".
// +optional // +optional
Patches *Patches `json:"patches,omitempty"` Patches *Patches `json:"patches,omitempty"`
// Timeouts holds various timeouts that apply to kubeadm commands.
// +optional
Timeouts *Timeouts `json:"timeouts,omitempty"`
} }
// +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object // +k8s:deepcopy-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
@ -176,10 +180,6 @@ type APIServer struct {
// CertSANs sets extra Subject Alternative Names for the API Server signing cert. // CertSANs sets extra Subject Alternative Names for the API Server signing cert.
// +optional // +optional
CertSANs []string `json:"certSANs,omitempty"` CertSANs []string `json:"certSANs,omitempty"`
// TimeoutForControlPlane controls the timeout that we use for API server to appear
// +optional
TimeoutForControlPlane *metav1.Duration `json:"timeoutForControlPlane,omitempty"`
} }
// DNS defines the DNS addon that should be used in the cluster // DNS defines the DNS addon that should be used in the cluster
@ -379,6 +379,10 @@ type JoinConfiguration struct {
// "kubeadm join". // "kubeadm join".
// +optional // +optional
Patches *Patches `json:"patches,omitempty"` Patches *Patches `json:"patches,omitempty"`
// Timeouts holds various timeouts that apply to kubeadm commands.
// +optional
Timeouts *Timeouts `json:"timeouts,omitempty"`
} }
// JoinControlPlane contains elements describing an additional control plane instance to be deployed on the joining node. // JoinControlPlane contains elements describing an additional control plane instance to be deployed on the joining node.
@ -411,10 +415,6 @@ type Discovery struct {
// If .File is set, this field **must be set** in case the KubeConfigFile does not contain any other authentication information // If .File is set, this field **must be set** in case the KubeConfigFile does not contain any other authentication information
// +optional // +optional
TLSBootstrapToken string `json:"tlsBootstrapToken,omitempty" datapolicy:"token"` TLSBootstrapToken string `json:"tlsBootstrapToken,omitempty" datapolicy:"token"`
// Timeout modifies the discovery timeout
// +optional
Timeout *metav1.Duration `json:"timeout,omitempty"`
} }
// BootstrapTokenDiscovery is used to set the options for bootstrap token based discovery // BootstrapTokenDiscovery is used to set the options for bootstrap token based discovery
@ -523,6 +523,10 @@ type ResetConfiguration struct {
// By default this list is empty. // By default this list is empty.
// +optional // +optional
UnmountFlags []string `json:"unmountFlags,omitempty"` UnmountFlags []string `json:"unmountFlags,omitempty"`
// Timeouts holds various timeouts that apply to kubeadm commands.
// +optional
Timeouts *Timeouts `json:"timeouts,omitempty"`
} }
// Arg represents an argument with a name and a value. // Arg represents an argument with a name and a value.
@ -545,3 +549,42 @@ const (
// EncryptionAlgorithmRSA defines the RSA encryption algorithm type. // EncryptionAlgorithmRSA defines the RSA encryption algorithm type.
EncryptionAlgorithmRSA EncryptionAlgorithmType = "RSA" EncryptionAlgorithmRSA EncryptionAlgorithmType = "RSA"
) )
// Timeouts holds various timeouts that apply to kubeadm commands.
type Timeouts struct {
// ControlPlaneComponentHealthCheck is the amount of time to wait for a control plane
// component, such as the API server, to be healthy during "kubeadm init" and "kubeadm join".
// Default: 4m
// +optional
ControlPlaneComponentHealthCheck *metav1.Duration `json:"controlPlaneComponentHealthCheck,omitempty"`
// KubeletHealthCheck is the amount of time to wait for the kubelet to be healthy
// during "kubeadm init" and "kubeadm join".
// Default: 4m
// +optional
KubeletHealthCheck *metav1.Duration `json:"kubeletHealthCheck,omitempty"`
// KubernetesAPICall is the amount of time to wait for the kubeadm client to complete a request to
// the API server. This applies to all types of methods (GET, POST, etc).
// Default: 1m
// +optional
KubernetesAPICall *metav1.Duration `json:"kubernetesAPICall,omitempty"`
// EtcdAPICall is the amount of time to wait for the kubeadm etcd client to complete a request to
// the etcd cluster.
// Default: 2m
// +optional
EtcdAPICall *metav1.Duration `json:"etcdAPICall,omitempty"`
// TLSBootstrap is the amount of time to wait for the kubelet to complete TLS bootstrap
// for a joining node.
// Default: 5m
// +optional
TLSBootstrap *metav1.Duration `json:"tlsBootstrap,omitempty"`
// Discovery is the amount of time to wait for kubeadm to validate the API server identity
// for a joining node.
// Default: 5m
// +optional
Discovery *metav1.Duration `json:"discovery,omitempty"`
}

View File

@ -24,8 +24,8 @@ package v1beta4
import ( import (
unsafe "unsafe" unsafe "unsafe"
corev1 "k8s.io/api/core/v1" v1 "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" conversion "k8s.io/apimachinery/pkg/conversion"
runtime "k8s.io/apimachinery/pkg/runtime" runtime "k8s.io/apimachinery/pkg/runtime"
bootstraptokenv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1" bootstraptokenv1 "k8s.io/kubernetes/cmd/kubeadm/app/apis/bootstraptoken/v1"
@ -54,11 +54,6 @@ func RegisterConversions(s *runtime.Scheme) error {
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddGeneratedConversionFunc((*kubeadm.APIServer)(nil), (*APIServer)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_kubeadm_APIServer_To_v1beta4_APIServer(a.(*kubeadm.APIServer), b.(*APIServer), scope)
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*Arg)(nil), (*kubeadm.Arg)(nil), func(a, b interface{}, scope conversion.Scope) error { if err := s.AddGeneratedConversionFunc((*Arg)(nil), (*kubeadm.Arg)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta4_Arg_To_kubeadm_Arg(a.(*Arg), b.(*kubeadm.Arg), scope) return Convert_v1beta4_Arg_To_kubeadm_Arg(a.(*Arg), b.(*kubeadm.Arg), scope)
}); err != nil { }); err != nil {
@ -79,11 +74,6 @@ func RegisterConversions(s *runtime.Scheme) error {
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddGeneratedConversionFunc((*ClusterConfiguration)(nil), (*kubeadm.ClusterConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(a.(*ClusterConfiguration), b.(*kubeadm.ClusterConfiguration), scope)
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*kubeadm.ClusterConfiguration)(nil), (*ClusterConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { if err := s.AddGeneratedConversionFunc((*kubeadm.ClusterConfiguration)(nil), (*ClusterConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_kubeadm_ClusterConfiguration_To_v1beta4_ClusterConfiguration(a.(*kubeadm.ClusterConfiguration), b.(*ClusterConfiguration), scope) return Convert_kubeadm_ClusterConfiguration_To_v1beta4_ClusterConfiguration(a.(*kubeadm.ClusterConfiguration), b.(*ClusterConfiguration), scope)
}); err != nil { }); err != nil {
@ -109,16 +99,6 @@ func RegisterConversions(s *runtime.Scheme) error {
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddGeneratedConversionFunc((*Discovery)(nil), (*kubeadm.Discovery)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta4_Discovery_To_kubeadm_Discovery(a.(*Discovery), b.(*kubeadm.Discovery), scope)
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*kubeadm.Discovery)(nil), (*Discovery)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_kubeadm_Discovery_To_v1beta4_Discovery(a.(*kubeadm.Discovery), b.(*Discovery), scope)
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*EnvVar)(nil), (*kubeadm.EnvVar)(nil), func(a, b interface{}, scope conversion.Scope) error { if err := s.AddGeneratedConversionFunc((*EnvVar)(nil), (*kubeadm.EnvVar)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta4_EnvVar_To_kubeadm_EnvVar(a.(*EnvVar), b.(*kubeadm.EnvVar), scope) return Convert_v1beta4_EnvVar_To_kubeadm_EnvVar(a.(*EnvVar), b.(*kubeadm.EnvVar), scope)
}); err != nil { }); err != nil {
@ -179,11 +159,6 @@ func RegisterConversions(s *runtime.Scheme) error {
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddGeneratedConversionFunc((*JoinConfiguration)(nil), (*kubeadm.JoinConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(a.(*JoinConfiguration), b.(*kubeadm.JoinConfiguration), scope)
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*kubeadm.JoinConfiguration)(nil), (*JoinConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { if err := s.AddGeneratedConversionFunc((*kubeadm.JoinConfiguration)(nil), (*JoinConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_kubeadm_JoinConfiguration_To_v1beta4_JoinConfiguration(a.(*kubeadm.JoinConfiguration), b.(*JoinConfiguration), scope) return Convert_kubeadm_JoinConfiguration_To_v1beta4_JoinConfiguration(a.(*kubeadm.JoinConfiguration), b.(*JoinConfiguration), scope)
}); err != nil { }); err != nil {
@ -259,16 +234,51 @@ func RegisterConversions(s *runtime.Scheme) error {
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddGeneratedConversionFunc((*Timeouts)(nil), (*kubeadm.Timeouts)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta4_Timeouts_To_kubeadm_Timeouts(a.(*Timeouts), b.(*kubeadm.Timeouts), scope)
}); err != nil {
return err
}
if err := s.AddGeneratedConversionFunc((*kubeadm.Timeouts)(nil), (*Timeouts)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_kubeadm_Timeouts_To_v1beta4_Timeouts(a.(*kubeadm.Timeouts), b.(*Timeouts), scope)
}); err != nil {
return err
}
if err := s.AddConversionFunc((*kubeadm.APIServer)(nil), (*APIServer)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_kubeadm_APIServer_To_v1beta4_APIServer(a.(*kubeadm.APIServer), b.(*APIServer), scope)
}); err != nil {
return err
}
if err := s.AddConversionFunc((*kubeadm.Discovery)(nil), (*Discovery)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_kubeadm_Discovery_To_v1beta4_Discovery(a.(*kubeadm.Discovery), b.(*Discovery), scope)
}); err != nil {
return err
}
if err := s.AddConversionFunc((*kubeadm.InitConfiguration)(nil), (*InitConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { if err := s.AddConversionFunc((*kubeadm.InitConfiguration)(nil), (*InitConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_kubeadm_InitConfiguration_To_v1beta4_InitConfiguration(a.(*kubeadm.InitConfiguration), b.(*InitConfiguration), scope) return Convert_kubeadm_InitConfiguration_To_v1beta4_InitConfiguration(a.(*kubeadm.InitConfiguration), b.(*InitConfiguration), scope)
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddConversionFunc((*ClusterConfiguration)(nil), (*kubeadm.ClusterConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(a.(*ClusterConfiguration), b.(*kubeadm.ClusterConfiguration), scope)
}); err != nil {
return err
}
if err := s.AddConversionFunc((*Discovery)(nil), (*kubeadm.Discovery)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta4_Discovery_To_kubeadm_Discovery(a.(*Discovery), b.(*kubeadm.Discovery), scope)
}); err != nil {
return err
}
if err := s.AddConversionFunc((*InitConfiguration)(nil), (*kubeadm.InitConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error { if err := s.AddConversionFunc((*InitConfiguration)(nil), (*kubeadm.InitConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta4_InitConfiguration_To_kubeadm_InitConfiguration(a.(*InitConfiguration), b.(*kubeadm.InitConfiguration), scope) return Convert_v1beta4_InitConfiguration_To_kubeadm_InitConfiguration(a.(*InitConfiguration), b.(*kubeadm.InitConfiguration), scope)
}); err != nil { }); err != nil {
return err return err
} }
if err := s.AddConversionFunc((*JoinConfiguration)(nil), (*kubeadm.JoinConfiguration)(nil), func(a, b interface{}, scope conversion.Scope) error {
return Convert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(a.(*JoinConfiguration), b.(*kubeadm.JoinConfiguration), scope)
}); err != nil {
return err
}
return nil return nil
} }
@ -299,7 +309,6 @@ func autoConvert_v1beta4_APIServer_To_kubeadm_APIServer(in *APIServer, out *kube
return err return err
} }
out.CertSANs = *(*[]string)(unsafe.Pointer(&in.CertSANs)) out.CertSANs = *(*[]string)(unsafe.Pointer(&in.CertSANs))
out.TimeoutForControlPlane = (*v1.Duration)(unsafe.Pointer(in.TimeoutForControlPlane))
return nil return nil
} }
@ -313,15 +322,10 @@ func autoConvert_kubeadm_APIServer_To_v1beta4_APIServer(in *kubeadm.APIServer, o
return err return err
} }
out.CertSANs = *(*[]string)(unsafe.Pointer(&in.CertSANs)) out.CertSANs = *(*[]string)(unsafe.Pointer(&in.CertSANs))
out.TimeoutForControlPlane = (*v1.Duration)(unsafe.Pointer(in.TimeoutForControlPlane)) // WARNING: in.TimeoutForControlPlane requires manual conversion: does not exist in peer-type
return nil return nil
} }
// Convert_kubeadm_APIServer_To_v1beta4_APIServer is an autogenerated conversion function.
func Convert_kubeadm_APIServer_To_v1beta4_APIServer(in *kubeadm.APIServer, out *APIServer, s conversion.Scope) error {
return autoConvert_kubeadm_APIServer_To_v1beta4_APIServer(in, out, s)
}
func autoConvert_v1beta4_Arg_To_kubeadm_Arg(in *Arg, out *kubeadm.Arg, s conversion.Scope) error { func autoConvert_v1beta4_Arg_To_kubeadm_Arg(in *Arg, out *kubeadm.Arg, s conversion.Scope) error {
out.Name = in.Name out.Name = in.Name
out.Value = in.Value out.Value = in.Value
@ -402,11 +406,6 @@ func autoConvert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(in
return nil return nil
} }
// Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration is an autogenerated conversion function.
func Convert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(in *ClusterConfiguration, out *kubeadm.ClusterConfiguration, s conversion.Scope) error {
return autoConvert_v1beta4_ClusterConfiguration_To_kubeadm_ClusterConfiguration(in, out, s)
}
func autoConvert_kubeadm_ClusterConfiguration_To_v1beta4_ClusterConfiguration(in *kubeadm.ClusterConfiguration, out *ClusterConfiguration, s conversion.Scope) error { func autoConvert_kubeadm_ClusterConfiguration_To_v1beta4_ClusterConfiguration(in *kubeadm.ClusterConfiguration, out *ClusterConfiguration, s conversion.Scope) error {
// INFO: in.ComponentConfigs opted out of conversion generation // INFO: in.ComponentConfigs opted out of conversion generation
if err := Convert_kubeadm_Etcd_To_v1beta4_Etcd(&in.Etcd, &out.Etcd, s); err != nil { if err := Convert_kubeadm_Etcd_To_v1beta4_Etcd(&in.Etcd, &out.Etcd, s); err != nil {
@ -501,28 +500,17 @@ func autoConvert_v1beta4_Discovery_To_kubeadm_Discovery(in *Discovery, out *kube
out.BootstrapToken = (*kubeadm.BootstrapTokenDiscovery)(unsafe.Pointer(in.BootstrapToken)) out.BootstrapToken = (*kubeadm.BootstrapTokenDiscovery)(unsafe.Pointer(in.BootstrapToken))
out.File = (*kubeadm.FileDiscovery)(unsafe.Pointer(in.File)) out.File = (*kubeadm.FileDiscovery)(unsafe.Pointer(in.File))
out.TLSBootstrapToken = in.TLSBootstrapToken out.TLSBootstrapToken = in.TLSBootstrapToken
out.Timeout = (*v1.Duration)(unsafe.Pointer(in.Timeout))
return nil return nil
} }
// Convert_v1beta4_Discovery_To_kubeadm_Discovery is an autogenerated conversion function.
func Convert_v1beta4_Discovery_To_kubeadm_Discovery(in *Discovery, out *kubeadm.Discovery, s conversion.Scope) error {
return autoConvert_v1beta4_Discovery_To_kubeadm_Discovery(in, out, s)
}
func autoConvert_kubeadm_Discovery_To_v1beta4_Discovery(in *kubeadm.Discovery, out *Discovery, s conversion.Scope) error { func autoConvert_kubeadm_Discovery_To_v1beta4_Discovery(in *kubeadm.Discovery, out *Discovery, s conversion.Scope) error {
out.BootstrapToken = (*BootstrapTokenDiscovery)(unsafe.Pointer(in.BootstrapToken)) out.BootstrapToken = (*BootstrapTokenDiscovery)(unsafe.Pointer(in.BootstrapToken))
out.File = (*FileDiscovery)(unsafe.Pointer(in.File)) out.File = (*FileDiscovery)(unsafe.Pointer(in.File))
out.TLSBootstrapToken = in.TLSBootstrapToken out.TLSBootstrapToken = in.TLSBootstrapToken
out.Timeout = (*v1.Duration)(unsafe.Pointer(in.Timeout)) // WARNING: in.Timeout requires manual conversion: does not exist in peer-type
return nil return nil
} }
// Convert_kubeadm_Discovery_To_v1beta4_Discovery is an autogenerated conversion function.
func Convert_kubeadm_Discovery_To_v1beta4_Discovery(in *kubeadm.Discovery, out *Discovery, s conversion.Scope) error {
return autoConvert_kubeadm_Discovery_To_v1beta4_Discovery(in, out, s)
}
func autoConvert_v1beta4_EnvVar_To_kubeadm_EnvVar(in *EnvVar, out *kubeadm.EnvVar, s conversion.Scope) error { func autoConvert_v1beta4_EnvVar_To_kubeadm_EnvVar(in *EnvVar, out *kubeadm.EnvVar, s conversion.Scope) error {
out.EnvVar = in.EnvVar out.EnvVar = in.EnvVar
return nil return nil
@ -616,7 +604,7 @@ func autoConvert_v1beta4_HostPathMount_To_kubeadm_HostPathMount(in *HostPathMoun
out.HostPath = in.HostPath out.HostPath = in.HostPath
out.MountPath = in.MountPath out.MountPath = in.MountPath
out.ReadOnly = in.ReadOnly out.ReadOnly = in.ReadOnly
out.PathType = corev1.HostPathType(in.PathType) out.PathType = v1.HostPathType(in.PathType)
return nil return nil
} }
@ -630,7 +618,7 @@ func autoConvert_kubeadm_HostPathMount_To_v1beta4_HostPathMount(in *kubeadm.Host
out.HostPath = in.HostPath out.HostPath = in.HostPath
out.MountPath = in.MountPath out.MountPath = in.MountPath
out.ReadOnly = in.ReadOnly out.ReadOnly = in.ReadOnly
out.PathType = corev1.HostPathType(in.PathType) out.PathType = v1.HostPathType(in.PathType)
return nil return nil
} }
@ -673,6 +661,7 @@ func autoConvert_v1beta4_InitConfiguration_To_kubeadm_InitConfiguration(in *Init
out.CertificateKey = in.CertificateKey out.CertificateKey = in.CertificateKey
out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases))
out.Patches = (*kubeadm.Patches)(unsafe.Pointer(in.Patches)) out.Patches = (*kubeadm.Patches)(unsafe.Pointer(in.Patches))
out.Timeouts = (*kubeadm.Timeouts)(unsafe.Pointer(in.Timeouts))
return nil return nil
} }
@ -689,6 +678,7 @@ func autoConvert_kubeadm_InitConfiguration_To_v1beta4_InitConfiguration(in *kube
out.CertificateKey = in.CertificateKey out.CertificateKey = in.CertificateKey
out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases))
out.Patches = (*Patches)(unsafe.Pointer(in.Patches)) out.Patches = (*Patches)(unsafe.Pointer(in.Patches))
out.Timeouts = (*Timeouts)(unsafe.Pointer(in.Timeouts))
return nil return nil
} }
@ -704,14 +694,10 @@ func autoConvert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(in *Join
out.ControlPlane = (*kubeadm.JoinControlPlane)(unsafe.Pointer(in.ControlPlane)) out.ControlPlane = (*kubeadm.JoinControlPlane)(unsafe.Pointer(in.ControlPlane))
out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases))
out.Patches = (*kubeadm.Patches)(unsafe.Pointer(in.Patches)) out.Patches = (*kubeadm.Patches)(unsafe.Pointer(in.Patches))
out.Timeouts = (*kubeadm.Timeouts)(unsafe.Pointer(in.Timeouts))
return nil return nil
} }
// Convert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration is an autogenerated conversion function.
func Convert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(in *JoinConfiguration, out *kubeadm.JoinConfiguration, s conversion.Scope) error {
return autoConvert_v1beta4_JoinConfiguration_To_kubeadm_JoinConfiguration(in, out, s)
}
func autoConvert_kubeadm_JoinConfiguration_To_v1beta4_JoinConfiguration(in *kubeadm.JoinConfiguration, out *JoinConfiguration, s conversion.Scope) error { func autoConvert_kubeadm_JoinConfiguration_To_v1beta4_JoinConfiguration(in *kubeadm.JoinConfiguration, out *JoinConfiguration, s conversion.Scope) error {
out.DryRun = in.DryRun out.DryRun = in.DryRun
if err := Convert_kubeadm_NodeRegistrationOptions_To_v1beta4_NodeRegistrationOptions(&in.NodeRegistration, &out.NodeRegistration, s); err != nil { if err := Convert_kubeadm_NodeRegistrationOptions_To_v1beta4_NodeRegistrationOptions(&in.NodeRegistration, &out.NodeRegistration, s); err != nil {
@ -724,6 +710,7 @@ func autoConvert_kubeadm_JoinConfiguration_To_v1beta4_JoinConfiguration(in *kube
out.ControlPlane = (*JoinControlPlane)(unsafe.Pointer(in.ControlPlane)) out.ControlPlane = (*JoinControlPlane)(unsafe.Pointer(in.ControlPlane))
out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases))
out.Patches = (*Patches)(unsafe.Pointer(in.Patches)) out.Patches = (*Patches)(unsafe.Pointer(in.Patches))
out.Timeouts = (*Timeouts)(unsafe.Pointer(in.Timeouts))
return nil return nil
} }
@ -819,10 +806,10 @@ func Convert_kubeadm_Networking_To_v1beta4_Networking(in *kubeadm.Networking, ou
func autoConvert_v1beta4_NodeRegistrationOptions_To_kubeadm_NodeRegistrationOptions(in *NodeRegistrationOptions, out *kubeadm.NodeRegistrationOptions, s conversion.Scope) error { func autoConvert_v1beta4_NodeRegistrationOptions_To_kubeadm_NodeRegistrationOptions(in *NodeRegistrationOptions, out *kubeadm.NodeRegistrationOptions, s conversion.Scope) error {
out.Name = in.Name out.Name = in.Name
out.CRISocket = in.CRISocket out.CRISocket = in.CRISocket
out.Taints = *(*[]corev1.Taint)(unsafe.Pointer(&in.Taints)) out.Taints = *(*[]v1.Taint)(unsafe.Pointer(&in.Taints))
out.KubeletExtraArgs = *(*[]kubeadm.Arg)(unsafe.Pointer(&in.KubeletExtraArgs)) out.KubeletExtraArgs = *(*[]kubeadm.Arg)(unsafe.Pointer(&in.KubeletExtraArgs))
out.IgnorePreflightErrors = *(*[]string)(unsafe.Pointer(&in.IgnorePreflightErrors)) out.IgnorePreflightErrors = *(*[]string)(unsafe.Pointer(&in.IgnorePreflightErrors))
out.ImagePullPolicy = corev1.PullPolicy(in.ImagePullPolicy) out.ImagePullPolicy = v1.PullPolicy(in.ImagePullPolicy)
return nil return nil
} }
@ -834,10 +821,10 @@ func Convert_v1beta4_NodeRegistrationOptions_To_kubeadm_NodeRegistrationOptions(
func autoConvert_kubeadm_NodeRegistrationOptions_To_v1beta4_NodeRegistrationOptions(in *kubeadm.NodeRegistrationOptions, out *NodeRegistrationOptions, s conversion.Scope) error { func autoConvert_kubeadm_NodeRegistrationOptions_To_v1beta4_NodeRegistrationOptions(in *kubeadm.NodeRegistrationOptions, out *NodeRegistrationOptions, s conversion.Scope) error {
out.Name = in.Name out.Name = in.Name
out.CRISocket = in.CRISocket out.CRISocket = in.CRISocket
out.Taints = *(*[]corev1.Taint)(unsafe.Pointer(&in.Taints)) out.Taints = *(*[]v1.Taint)(unsafe.Pointer(&in.Taints))
out.KubeletExtraArgs = *(*[]Arg)(unsafe.Pointer(&in.KubeletExtraArgs)) out.KubeletExtraArgs = *(*[]Arg)(unsafe.Pointer(&in.KubeletExtraArgs))
out.IgnorePreflightErrors = *(*[]string)(unsafe.Pointer(&in.IgnorePreflightErrors)) out.IgnorePreflightErrors = *(*[]string)(unsafe.Pointer(&in.IgnorePreflightErrors))
out.ImagePullPolicy = corev1.PullPolicy(in.ImagePullPolicy) out.ImagePullPolicy = v1.PullPolicy(in.ImagePullPolicy)
return nil return nil
} }
@ -895,6 +882,7 @@ func autoConvert_v1beta4_ResetConfiguration_To_kubeadm_ResetConfiguration(in *Re
out.IgnorePreflightErrors = *(*[]string)(unsafe.Pointer(&in.IgnorePreflightErrors)) out.IgnorePreflightErrors = *(*[]string)(unsafe.Pointer(&in.IgnorePreflightErrors))
out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases))
out.UnmountFlags = *(*[]string)(unsafe.Pointer(&in.UnmountFlags)) out.UnmountFlags = *(*[]string)(unsafe.Pointer(&in.UnmountFlags))
out.Timeouts = (*kubeadm.Timeouts)(unsafe.Pointer(in.Timeouts))
return nil return nil
} }
@ -912,6 +900,7 @@ func autoConvert_kubeadm_ResetConfiguration_To_v1beta4_ResetConfiguration(in *ku
out.IgnorePreflightErrors = *(*[]string)(unsafe.Pointer(&in.IgnorePreflightErrors)) out.IgnorePreflightErrors = *(*[]string)(unsafe.Pointer(&in.IgnorePreflightErrors))
out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases)) out.SkipPhases = *(*[]string)(unsafe.Pointer(&in.SkipPhases))
out.UnmountFlags = *(*[]string)(unsafe.Pointer(&in.UnmountFlags)) out.UnmountFlags = *(*[]string)(unsafe.Pointer(&in.UnmountFlags))
out.Timeouts = (*Timeouts)(unsafe.Pointer(in.Timeouts))
return nil return nil
} }
@ -919,3 +908,33 @@ func autoConvert_kubeadm_ResetConfiguration_To_v1beta4_ResetConfiguration(in *ku
func Convert_kubeadm_ResetConfiguration_To_v1beta4_ResetConfiguration(in *kubeadm.ResetConfiguration, out *ResetConfiguration, s conversion.Scope) error { func Convert_kubeadm_ResetConfiguration_To_v1beta4_ResetConfiguration(in *kubeadm.ResetConfiguration, out *ResetConfiguration, s conversion.Scope) error {
return autoConvert_kubeadm_ResetConfiguration_To_v1beta4_ResetConfiguration(in, out, s) return autoConvert_kubeadm_ResetConfiguration_To_v1beta4_ResetConfiguration(in, out, s)
} }
func autoConvert_v1beta4_Timeouts_To_kubeadm_Timeouts(in *Timeouts, out *kubeadm.Timeouts, s conversion.Scope) error {
out.ControlPlaneComponentHealthCheck = (*metav1.Duration)(unsafe.Pointer(in.ControlPlaneComponentHealthCheck))
out.KubeletHealthCheck = (*metav1.Duration)(unsafe.Pointer(in.KubeletHealthCheck))
out.KubernetesAPICall = (*metav1.Duration)(unsafe.Pointer(in.KubernetesAPICall))
out.EtcdAPICall = (*metav1.Duration)(unsafe.Pointer(in.EtcdAPICall))
out.TLSBootstrap = (*metav1.Duration)(unsafe.Pointer(in.TLSBootstrap))
out.Discovery = (*metav1.Duration)(unsafe.Pointer(in.Discovery))
return nil
}
// Convert_v1beta4_Timeouts_To_kubeadm_Timeouts is an autogenerated conversion function.
func Convert_v1beta4_Timeouts_To_kubeadm_Timeouts(in *Timeouts, out *kubeadm.Timeouts, s conversion.Scope) error {
return autoConvert_v1beta4_Timeouts_To_kubeadm_Timeouts(in, out, s)
}
func autoConvert_kubeadm_Timeouts_To_v1beta4_Timeouts(in *kubeadm.Timeouts, out *Timeouts, s conversion.Scope) error {
out.ControlPlaneComponentHealthCheck = (*metav1.Duration)(unsafe.Pointer(in.ControlPlaneComponentHealthCheck))
out.KubeletHealthCheck = (*metav1.Duration)(unsafe.Pointer(in.KubeletHealthCheck))
out.KubernetesAPICall = (*metav1.Duration)(unsafe.Pointer(in.KubernetesAPICall))
out.EtcdAPICall = (*metav1.Duration)(unsafe.Pointer(in.EtcdAPICall))
out.TLSBootstrap = (*metav1.Duration)(unsafe.Pointer(in.TLSBootstrap))
out.Discovery = (*metav1.Duration)(unsafe.Pointer(in.Discovery))
return nil
}
// Convert_kubeadm_Timeouts_To_v1beta4_Timeouts is an autogenerated conversion function.
func Convert_kubeadm_Timeouts_To_v1beta4_Timeouts(in *kubeadm.Timeouts, out *Timeouts, s conversion.Scope) error {
return autoConvert_kubeadm_Timeouts_To_v1beta4_Timeouts(in, out, s)
}

View File

@ -23,9 +23,9 @@ package v1beta4
import ( import (
corev1 "k8s.io/api/core/v1" corev1 "k8s.io/api/core/v1"
v1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
runtime "k8s.io/apimachinery/pkg/runtime" 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"
) )
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
@ -53,11 +53,6 @@ func (in *APIServer) DeepCopyInto(out *APIServer) {
*out = make([]string, len(*in)) *out = make([]string, len(*in))
copy(*out, *in) copy(*out, *in)
} }
if in.TimeoutForControlPlane != nil {
in, out := &in.TimeoutForControlPlane, &out.TimeoutForControlPlane
*out = new(v1.Duration)
**out = **in
}
return return
} }
@ -210,11 +205,6 @@ func (in *Discovery) DeepCopyInto(out *Discovery) {
*out = new(FileDiscovery) *out = new(FileDiscovery)
**out = **in **out = **in
} }
if in.Timeout != nil {
in, out := &in.Timeout, &out.Timeout
*out = new(v1.Duration)
**out = **in
}
return return
} }
@ -346,7 +336,7 @@ func (in *InitConfiguration) DeepCopyInto(out *InitConfiguration) {
out.TypeMeta = in.TypeMeta out.TypeMeta = in.TypeMeta
if in.BootstrapTokens != nil { if in.BootstrapTokens != nil {
in, out := &in.BootstrapTokens, &out.BootstrapTokens in, out := &in.BootstrapTokens, &out.BootstrapTokens
*out = make([]bootstraptokenv1.BootstrapToken, len(*in)) *out = make([]v1.BootstrapToken, len(*in))
for i := range *in { for i := range *in {
(*in)[i].DeepCopyInto(&(*out)[i]) (*in)[i].DeepCopyInto(&(*out)[i])
} }
@ -363,6 +353,11 @@ func (in *InitConfiguration) DeepCopyInto(out *InitConfiguration) {
*out = new(Patches) *out = new(Patches)
**out = **in **out = **in
} }
if in.Timeouts != nil {
in, out := &in.Timeouts, &out.Timeouts
*out = new(Timeouts)
(*in).DeepCopyInto(*out)
}
return return
} }
@ -405,6 +400,11 @@ func (in *JoinConfiguration) DeepCopyInto(out *JoinConfiguration) {
*out = new(Patches) *out = new(Patches)
**out = **in **out = **in
} }
if in.Timeouts != nil {
in, out := &in.Timeouts, &out.Timeouts
*out = new(Timeouts)
(*in).DeepCopyInto(*out)
}
return return
} }
@ -582,6 +582,11 @@ func (in *ResetConfiguration) DeepCopyInto(out *ResetConfiguration) {
*out = make([]string, len(*in)) *out = make([]string, len(*in))
copy(*out, *in) copy(*out, *in)
} }
if in.Timeouts != nil {
in, out := &in.Timeouts, &out.Timeouts
*out = new(Timeouts)
(*in).DeepCopyInto(*out)
}
return return
} }
@ -602,3 +607,49 @@ func (in *ResetConfiguration) DeepCopyObject() runtime.Object {
} }
return nil return nil
} }
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Timeouts) DeepCopyInto(out *Timeouts) {
*out = *in
if in.ControlPlaneComponentHealthCheck != nil {
in, out := &in.ControlPlaneComponentHealthCheck, &out.ControlPlaneComponentHealthCheck
*out = new(metav1.Duration)
**out = **in
}
if in.KubeletHealthCheck != nil {
in, out := &in.KubeletHealthCheck, &out.KubeletHealthCheck
*out = new(metav1.Duration)
**out = **in
}
if in.KubernetesAPICall != nil {
in, out := &in.KubernetesAPICall, &out.KubernetesAPICall
*out = new(metav1.Duration)
**out = **in
}
if in.EtcdAPICall != nil {
in, out := &in.EtcdAPICall, &out.EtcdAPICall
*out = new(metav1.Duration)
**out = **in
}
if in.TLSBootstrap != nil {
in, out := &in.TLSBootstrap, &out.TLSBootstrap
*out = new(metav1.Duration)
**out = **in
}
if in.Discovery != nil {
in, out := &in.Discovery, &out.Discovery
*out = new(metav1.Duration)
**out = **in
}
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Timeouts.
func (in *Timeouts) DeepCopy() *Timeouts {
if in == nil {
return nil
}
out := new(Timeouts)
in.DeepCopyInto(out)
return out
}

View File

@ -44,7 +44,6 @@ func SetObjectDefaults_ClusterConfiguration(in *ClusterConfiguration) {
SetDefaults_EnvVar(a) SetDefaults_EnvVar(a)
} }
} }
SetDefaults_APIServer(&in.APIServer)
for i := range in.APIServer.ControlPlaneComponent.ExtraEnvs { for i := range in.APIServer.ControlPlaneComponent.ExtraEnvs {
a := &in.APIServer.ControlPlaneComponent.ExtraEnvs[i] a := &in.APIServer.ControlPlaneComponent.ExtraEnvs[i]
SetDefaults_EnvVar(a) SetDefaults_EnvVar(a)
@ -62,6 +61,9 @@ func SetObjectDefaults_ClusterConfiguration(in *ClusterConfiguration) {
func SetObjectDefaults_InitConfiguration(in *InitConfiguration) { func SetObjectDefaults_InitConfiguration(in *InitConfiguration) {
SetDefaults_InitConfiguration(in) SetDefaults_InitConfiguration(in)
SetDefaults_APIEndpoint(&in.LocalAPIEndpoint) SetDefaults_APIEndpoint(&in.LocalAPIEndpoint)
if in.Timeouts != nil {
SetDefaults_Timeouts(in.Timeouts)
}
} }
func SetObjectDefaults_JoinConfiguration(in *JoinConfiguration) { func SetObjectDefaults_JoinConfiguration(in *JoinConfiguration) {
@ -74,8 +76,14 @@ func SetObjectDefaults_JoinConfiguration(in *JoinConfiguration) {
SetDefaults_JoinControlPlane(in.ControlPlane) SetDefaults_JoinControlPlane(in.ControlPlane)
SetDefaults_APIEndpoint(&in.ControlPlane.LocalAPIEndpoint) SetDefaults_APIEndpoint(&in.ControlPlane.LocalAPIEndpoint)
} }
if in.Timeouts != nil {
SetDefaults_Timeouts(in.Timeouts)
}
} }
func SetObjectDefaults_ResetConfiguration(in *ResetConfiguration) { func SetObjectDefaults_ResetConfiguration(in *ResetConfiguration) {
SetDefaults_ResetConfiguration(in) SetDefaults_ResetConfiguration(in)
if in.Timeouts != nil {
SetDefaults_Timeouts(in.Timeouts)
}
} }

View File

@ -393,6 +393,11 @@ func (in *InitConfiguration) DeepCopyInto(out *InitConfiguration) {
*out = new(Patches) *out = new(Patches)
**out = **in **out = **in
} }
if in.Timeouts != nil {
in, out := &in.Timeouts, &out.Timeouts
*out = new(Timeouts)
(*in).DeepCopyInto(*out)
}
return return
} }
@ -435,6 +440,11 @@ func (in *JoinConfiguration) DeepCopyInto(out *JoinConfiguration) {
*out = new(Patches) *out = new(Patches)
**out = **in **out = **in
} }
if in.Timeouts != nil {
in, out := &in.Timeouts, &out.Timeouts
*out = new(Timeouts)
(*in).DeepCopyInto(*out)
}
return return
} }
@ -612,6 +622,11 @@ func (in *ResetConfiguration) DeepCopyInto(out *ResetConfiguration) {
*out = make([]string, len(*in)) *out = make([]string, len(*in))
copy(*out, *in) copy(*out, *in)
} }
if in.Timeouts != nil {
in, out := &in.Timeouts, &out.Timeouts
*out = new(Timeouts)
(*in).DeepCopyInto(*out)
}
return return
} }
@ -632,3 +647,49 @@ func (in *ResetConfiguration) DeepCopyObject() runtime.Object {
} }
return nil return nil
} }
// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil.
func (in *Timeouts) DeepCopyInto(out *Timeouts) {
*out = *in
if in.ControlPlaneComponentHealthCheck != nil {
in, out := &in.ControlPlaneComponentHealthCheck, &out.ControlPlaneComponentHealthCheck
*out = new(v1.Duration)
**out = **in
}
if in.KubeletHealthCheck != nil {
in, out := &in.KubeletHealthCheck, &out.KubeletHealthCheck
*out = new(v1.Duration)
**out = **in
}
if in.KubernetesAPICall != nil {
in, out := &in.KubernetesAPICall, &out.KubernetesAPICall
*out = new(v1.Duration)
**out = **in
}
if in.EtcdAPICall != nil {
in, out := &in.EtcdAPICall, &out.EtcdAPICall
*out = new(v1.Duration)
**out = **in
}
if in.TLSBootstrap != nil {
in, out := &in.TLSBootstrap, &out.TLSBootstrap
*out = new(v1.Duration)
**out = **in
}
if in.Discovery != nil {
in, out := &in.Discovery, &out.Discovery
*out = new(v1.Duration)
**out = **in
}
return
}
// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Timeouts.
func (in *Timeouts) DeepCopy() *Timeouts {
if in == nil {
return nil
}
out := new(Timeouts)
in.DeepCopyInto(out)
return out
}