From 1b2346584f9c7eb78de96305dfa8f5298a4d9827 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lucas=20K=C3=A4ldstr=C3=B6m?= Date: Thu, 9 Aug 2018 23:33:47 +0300 Subject: [PATCH] Remove defaulting from shared ComponentConfig types --- hack/import-restrictions.yaml | 1 + .../pkg/apis/config/v1alpha1/BUILD | 1 - .../pkg/apis/config/v1alpha1/defaults.go | 19 +++++------ .../pkg/apis/config/v1alpha1/doc.go | 1 - .../pkg/apis/config/v1alpha1/register.go | 8 ----- .../config/v1alpha1/zz_generated.defaults.go | 32 ------------------- .../src/k8s.io/apiserver/Godeps/Godeps.json | 4 +++ .../apiserver/pkg/apis/config/v1alpha1/BUILD | 2 +- .../pkg/apis/config/v1alpha1/defaults.go | 20 +++++++----- .../apiserver/pkg/apis/config/v1alpha1/doc.go | 3 +- .../pkg/apis/config/v1alpha1/register.go | 8 ----- .../config/v1alpha1/zz_generated.defaults.go | 32 ------------------- 12 files changed, 29 insertions(+), 102 deletions(-) delete mode 100644 staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/zz_generated.defaults.go delete mode 100644 staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/zz_generated.defaults.go diff --git a/hack/import-restrictions.yaml b/hack/import-restrictions.yaml index be967a1f33a..d9660f47517 100644 --- a/hack/import-restrictions.yaml +++ b/hack/import-restrictions.yaml @@ -80,6 +80,7 @@ - k8s.io/apiserver - k8s.io/client-go - k8s.io/kube-openapi + - k8s.io/utils - baseImportPath: "./vendor/k8s.io/metrics/" allowedImports: diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/BUILD b/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/BUILD index eea7cf9d5c4..9dacc725d52 100644 --- a/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/BUILD +++ b/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/BUILD @@ -9,7 +9,6 @@ go_library( "types.go", "zz_generated.conversion.go", "zz_generated.deepcopy.go", - "zz_generated.defaults.go", ], importmap = "k8s.io/kubernetes/vendor/k8s.io/apimachinery/pkg/apis/config/v1alpha1", importpath = "k8s.io/apimachinery/pkg/apis/config/v1alpha1", diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/defaults.go b/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/defaults.go index 11b7de24954..37971fcc5c5 100644 --- a/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/defaults.go +++ b/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/defaults.go @@ -16,15 +16,16 @@ limitations under the License. package v1alpha1 -import ( - kruntime "k8s.io/apimachinery/pkg/runtime" -) - -func addDefaultingFuncs(scheme *kruntime.Scheme) error { - return RegisterDefaults(scheme) -} - -func SetDefaults_ClientConnectionConfiguration(obj *ClientConnectionConfiguration) { +// RecommendedDefaultClientConnectionConfiguration defaults a pointer to a +// ClientConnectionConfiguration struct. This will set the recommended default +// values, but they may be subject to change between API versions. This function +// is intentionally not registered in the scheme as a "normal" `SetDefaults_Foo` +// function to allow consumers of this type to set whatever defaults for their +// embedded configs. Forcing consumers to use these defaults would be problematic +// as defaulting in the scheme is done as part of the conversion, and there would +// be no easy way to opt-out. Instead, if you want to use this defaulting method +// run it in your wrapper struct of this type in its `SetDefaults_` method. +func RecommendedDefaultClientConnectionConfiguration(obj *ClientConnectionConfiguration) { if len(obj.ContentType) == 0 { obj.ContentType = "application/vnd.kubernetes.protobuf" } diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/doc.go b/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/doc.go index c199193f188..ce0a58a571c 100644 --- a/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/doc.go +++ b/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/doc.go @@ -16,6 +16,5 @@ limitations under the License. // +k8s:deepcopy-gen=package // +k8s:conversion-gen=k8s.io/apimachinery/pkg/apis/config -// +k8s:defaulter-gen=TypeMeta package v1alpha1 // import "k8s.io/apimachinery/pkg/apis/config/v1alpha1" diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/register.go b/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/register.go index 9f545f14477..c09c1638977 100644 --- a/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/register.go +++ b/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/register.go @@ -21,15 +21,7 @@ import ( ) var ( - // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. SchemeBuilder runtime.SchemeBuilder localSchemeBuilder = &SchemeBuilder AddToScheme = localSchemeBuilder.AddToScheme ) - -func init() { - // We only register manually written functions here. The registration of the - // generated functions takes place in the generated files. The separation - // makes the code compile even when the generated files are missing. - localSchemeBuilder.Register(addDefaultingFuncs) -} diff --git a/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/zz_generated.defaults.go b/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/zz_generated.defaults.go deleted file mode 100644 index dd621a3acda..00000000000 --- a/staging/src/k8s.io/apimachinery/pkg/apis/config/v1alpha1/zz_generated.defaults.go +++ /dev/null @@ -1,32 +0,0 @@ -// +build !ignore_autogenerated - -/* -Copyright 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. -*/ - -// Code generated by defaulter-gen. DO NOT EDIT. - -package v1alpha1 - -import ( - runtime "k8s.io/apimachinery/pkg/runtime" -) - -// RegisterDefaults adds defaulters functions to the given scheme. -// Public to allow building arbitrary schemes. -// All generated defaulters are covering - they call all nested defaulters. -func RegisterDefaults(scheme *runtime.Scheme) error { - return nil -} diff --git a/staging/src/k8s.io/apiserver/Godeps/Godeps.json b/staging/src/k8s.io/apiserver/Godeps/Godeps.json index 273900d02d3..237432950c0 100644 --- a/staging/src/k8s.io/apiserver/Godeps/Godeps.json +++ b/staging/src/k8s.io/apiserver/Godeps/Godeps.json @@ -1901,6 +1901,10 @@ { "ImportPath": "k8s.io/client-go/util/flowcontrol", "Rev": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" + }, + { + "ImportPath": "k8s.io/utils/pointer", + "Rev": "66066c83e385e385ccc3c964b44fd7dcd413d0ed" } ] } diff --git a/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/BUILD b/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/BUILD index 4b77b70eda6..70111746a3c 100644 --- a/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/BUILD +++ b/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/BUILD @@ -9,7 +9,6 @@ go_library( "types.go", "zz_generated.conversion.go", "zz_generated.deepcopy.go", - "zz_generated.defaults.go", ], importmap = "k8s.io/kubernetes/vendor/k8s.io/apiserver/pkg/apis/config/v1alpha1", importpath = "k8s.io/apiserver/pkg/apis/config/v1alpha1", @@ -19,6 +18,7 @@ go_library( "//staging/src/k8s.io/apimachinery/pkg/conversion:go_default_library", "//staging/src/k8s.io/apimachinery/pkg/runtime:go_default_library", "//staging/src/k8s.io/apiserver/pkg/apis/config:go_default_library", + "//vendor/k8s.io/utils/pointer:go_default_library", ], ) diff --git a/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/defaults.go b/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/defaults.go index 87a5bda8d43..caee3d8e491 100644 --- a/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/defaults.go +++ b/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/defaults.go @@ -20,15 +20,19 @@ import ( "time" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - kruntime "k8s.io/apimachinery/pkg/runtime" + utilpointer "k8s.io/utils/pointer" ) -func addDefaultingFuncs(scheme *kruntime.Scheme) error { - return RegisterDefaults(scheme) -} - -func SetDefaults_LeaderElectionConfiguration(obj *LeaderElectionConfiguration) { - booltrue := true +// RecommendedDefaultLeaderElectionConfiguration defaults a pointer to a +// LeaderElectionConfiguration struct. This will set the recommended default +// values, but they may be subject to change between API versions. This function +// is intentionally not registered in the scheme as a "normal" `SetDefaults_Foo` +// function to allow consumers of this type to set whatever defaults for their +// embedded configs. Forcing consumers to use these defaults would be problematic +// as defaulting in the scheme is done as part of the conversion, and there would +// be no easy way to opt-out. Instead, if you want to use this defaulting method +// run it in your wrapper struct of this type in its `SetDefaults_` method. +func RecommendedDefaultLeaderElectionConfiguration(obj *LeaderElectionConfiguration) { zero := metav1.Duration{} if obj.LeaseDuration == zero { obj.LeaseDuration = metav1.Duration{Duration: 15 * time.Second} @@ -43,6 +47,6 @@ func SetDefaults_LeaderElectionConfiguration(obj *LeaderElectionConfiguration) { obj.ResourceLock = EndpointsResourceLock } if obj.LeaderElect == nil { - obj.LeaderElect = &booltrue + obj.LeaderElect = utilpointer.BoolPtr(true) } } diff --git a/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/doc.go b/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/doc.go index 2230d28e6d2..a7492964ef2 100644 --- a/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/doc.go +++ b/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/doc.go @@ -16,6 +16,5 @@ limitations under the License. // +k8s:deepcopy-gen=package // +k8s:conversion-gen=k8s.io/apiserver/pkg/apis/config -// +k8s:defaulter-gen=TypeMeta -package v1alpha1 +package v1alpha1 // import "k8s.io/apiserver/pkg/apis/config/v1alpha1" diff --git a/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/register.go b/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/register.go index 9f545f14477..c09c1638977 100644 --- a/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/register.go +++ b/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/register.go @@ -21,15 +21,7 @@ import ( ) var ( - // localSchemeBuilder and AddToScheme will stay in k8s.io/kubernetes. SchemeBuilder runtime.SchemeBuilder localSchemeBuilder = &SchemeBuilder AddToScheme = localSchemeBuilder.AddToScheme ) - -func init() { - // We only register manually written functions here. The registration of the - // generated functions takes place in the generated files. The separation - // makes the code compile even when the generated files are missing. - localSchemeBuilder.Register(addDefaultingFuncs) -} diff --git a/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/zz_generated.defaults.go b/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/zz_generated.defaults.go deleted file mode 100644 index dd621a3acda..00000000000 --- a/staging/src/k8s.io/apiserver/pkg/apis/config/v1alpha1/zz_generated.defaults.go +++ /dev/null @@ -1,32 +0,0 @@ -// +build !ignore_autogenerated - -/* -Copyright 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. -*/ - -// Code generated by defaulter-gen. DO NOT EDIT. - -package v1alpha1 - -import ( - runtime "k8s.io/apimachinery/pkg/runtime" -) - -// RegisterDefaults adds defaulters functions to the given scheme. -// Public to allow building arbitrary schemes. -// All generated defaulters are covering - they call all nested defaulters. -func RegisterDefaults(scheme *runtime.Scheme) error { - return nil -}