From a01b943a7ffc32df4febe11ceda836957c35e871 Mon Sep 17 00:00:00 2001 From: Paulo Pires Date: Tue, 1 Nov 2016 15:46:24 -0700 Subject: [PATCH] kubeadm: add defaulting for kubeadm config api group --- cmd/kubeadm/app/apis/kubeadm/BUILD | 1 - cmd/kubeadm/app/apis/kubeadm/defaults.go | 25 ------- cmd/kubeadm/app/apis/kubeadm/register.go | 10 +-- cmd/kubeadm/app/apis/kubeadm/v1alpha1/BUILD | 2 + .../app/apis/kubeadm/v1alpha1/defaults.go | 69 +++++++++++++++++++ cmd/kubeadm/app/apis/kubeadm/v1alpha1/doc.go | 1 + .../app/apis/kubeadm/v1alpha1/register.go | 10 +-- 7 files changed, 82 insertions(+), 36 deletions(-) delete mode 100644 cmd/kubeadm/app/apis/kubeadm/defaults.go create mode 100644 cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go diff --git a/cmd/kubeadm/app/apis/kubeadm/BUILD b/cmd/kubeadm/app/apis/kubeadm/BUILD index fe8250a359d..52e63444b4a 100644 --- a/cmd/kubeadm/app/apis/kubeadm/BUILD +++ b/cmd/kubeadm/app/apis/kubeadm/BUILD @@ -13,7 +13,6 @@ load( go_library( name = "go_default_library", srcs = [ - "defaults.go", "doc.go", "env.go", "register.go", diff --git a/cmd/kubeadm/app/apis/kubeadm/defaults.go b/cmd/kubeadm/app/apis/kubeadm/defaults.go deleted file mode 100644 index 7077ec48e0b..00000000000 --- a/cmd/kubeadm/app/apis/kubeadm/defaults.go +++ /dev/null @@ -1,25 +0,0 @@ -/* -Copyright 2016 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 - -const ( - DefaultServiceDNSDomain = "cluster.local" - DefaultServicesSubnet = "10.96.0.0/12" - DefaultKubernetesVersion = "v1.4.4" - DefaultAPIBindPort = 6443 - DefaultDiscoveryBindPort = 9898 -) diff --git a/cmd/kubeadm/app/apis/kubeadm/register.go b/cmd/kubeadm/app/apis/kubeadm/register.go index 359ee2f572e..0492a87a15f 100644 --- a/cmd/kubeadm/app/apis/kubeadm/register.go +++ b/cmd/kubeadm/app/apis/kubeadm/register.go @@ -22,17 +22,17 @@ import ( "k8s.io/kubernetes/pkg/runtime" ) -var ( - SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) - AddToScheme = SchemeBuilder.AddToScheme -) - // GroupName is the group name use in this package const GroupName = "kubeadm.k8s.io" // SchemeGroupVersion is group version used to register these objects var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) + AddToScheme = SchemeBuilder.AddToScheme +) + // Kind takes an unqualified kind and returns a Group qualified GroupKind func Kind(kind string) unversioned.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind() diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/BUILD b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/BUILD index 972efe1cc00..0ce0637bf50 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/BUILD +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/BUILD @@ -13,9 +13,11 @@ load( go_library( name = "go_default_library", srcs = [ + "defaults.go", "doc.go", "register.go", "types.go", + "zz_generated.defaults.go", ], tags = ["automanaged"], deps = [ diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go new file mode 100644 index 00000000000..1c44d2dbb95 --- /dev/null +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/defaults.go @@ -0,0 +1,69 @@ +/* +Copyright 2016 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 ( + "k8s.io/kubernetes/pkg/runtime" +) + +const ( + DefaultServiceDNSDomain = "cluster.local" + DefaultServicesSubnet = "10.96.0.0/12" + DefaultKubernetesVersion = "v1.4.4" + DefaultAPIBindPort = 6443 + DefaultDiscoveryBindPort = 9898 +) + +func addDefaultingFuncs(scheme *runtime.Scheme) error { + RegisterDefaults(scheme) + return scheme.AddDefaultingFuncs( + SetDefaults_MasterConfiguration, + SetDefaults_NodeConfiguration, + ) +} + +func SetDefaults_MasterConfiguration(obj *MasterConfiguration) { + if obj.KubernetesVersion == "" { + obj.KubernetesVersion = DefaultKubernetesVersion + } + + if obj.API.BindPort == 0 { + obj.API.BindPort = DefaultAPIBindPort + } + + if obj.Discovery.BindPort == 0 { + obj.Discovery.BindPort = DefaultDiscoveryBindPort + } + + if obj.Networking.ServiceSubnet == "" { + obj.Networking.ServiceSubnet = DefaultServicesSubnet + } + + if obj.Networking.DNSDomain == "" { + obj.Networking.DNSDomain = DefaultServiceDNSDomain + } +} + +func SetDefaults_NodeConfiguration(obj *NodeConfiguration) { + if obj.APIPort == 0 { + obj.APIPort = DefaultAPIBindPort + } + + if obj.DiscoveryPort == 0 { + obj.DiscoveryPort = DefaultDiscoveryBindPort + } +} diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/doc.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/doc.go index 2ea84b3f247..0da2cf479a1 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/doc.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/doc.go @@ -14,5 +14,6 @@ See the License for the specific language governing permissions and limitations under the License. */ +// +k8s:defaulter-gen=TypeMeta // +groupName=kubeadm.k8s.io package v1alpha1 // import "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha1" diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/register.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/register.go index 2a1ab13bbea..cda6b3c67cb 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/register.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/register.go @@ -22,17 +22,17 @@ import ( "k8s.io/kubernetes/pkg/runtime" ) -var ( - SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes) - AddToScheme = SchemeBuilder.AddToScheme -) - // GroupName is the group name use in this package const GroupName = "kubeadm.k8s.io" // SchemeGroupVersion is group version used to register these objects var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1alpha1"} +var ( + SchemeBuilder = runtime.NewSchemeBuilder(addKnownTypes, addDefaultingFuncs) + AddToScheme = SchemeBuilder.AddToScheme +) + // Kind takes an unqualified kind and returns a Group qualified GroupKind func Kind(kind string) unversioned.GroupKind { return SchemeGroupVersion.WithKind(kind).GroupKind()