diff --git a/cmd/kubeadm/app/apis/kubeadm/defaults.go b/cmd/kubeadm/app/apis/kubeadm/defaults.go index 28dde46db65..98b77a56064 100644 --- a/cmd/kubeadm/app/apis/kubeadm/defaults.go +++ b/cmd/kubeadm/app/apis/kubeadm/defaults.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package api +package kubeadm const ( DefaultServiceDNSDomain = "cluster.local" diff --git a/cmd/kubeadm/app/apis/kubeadm/docs.go b/cmd/kubeadm/app/apis/kubeadm/doc.go similarity index 76% rename from cmd/kubeadm/app/apis/kubeadm/docs.go rename to cmd/kubeadm/app/apis/kubeadm/doc.go index 49371d8870c..227c121c107 100644 --- a/cmd/kubeadm/app/apis/kubeadm/docs.go +++ b/cmd/kubeadm/app/apis/kubeadm/doc.go @@ -14,8 +14,5 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=package,register -// +k8s:conversion-gen=k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm - // +groupName=kubeadm.k8s.io -package api // import "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" +package kubeadm // import "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" diff --git a/cmd/kubeadm/app/apis/kubeadm/env.go b/cmd/kubeadm/app/apis/kubeadm/env.go index a9cc09656d7..d3df5b7d01a 100644 --- a/cmd/kubeadm/app/apis/kubeadm/env.go +++ b/cmd/kubeadm/app/apis/kubeadm/env.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package api +package kubeadm import ( "fmt" diff --git a/cmd/kubeadm/app/apis/kubeadm/install/install.go b/cmd/kubeadm/app/apis/kubeadm/install/install.go new file mode 100644 index 00000000000..e27b6291176 --- /dev/null +++ b/cmd/kubeadm/app/apis/kubeadm/install/install.go @@ -0,0 +1,39 @@ +/* +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 install + +import ( + "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" + "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha1" + "k8s.io/kubernetes/pkg/apimachinery/announced" +) + +func init() { + if err := announced.NewGroupMetaFactory( + &announced.GroupMetaFactoryArgs{ + GroupName: kubeadm.GroupName, + VersionPreferenceOrder: []string{v1alpha1.SchemeGroupVersion.Version}, + ImportPrefix: "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm", + AddInternalObjectsToScheme: kubeadm.AddToScheme, + }, + announced.VersionToSchemeFunc{ + v1alpha1.SchemeGroupVersion.Version: v1alpha1.AddToScheme, + }, + ).Announce().RegisterAndEnable(); err != nil { + panic(err) + } +} diff --git a/cmd/kubeadm/app/apis/kubeadm/register.go b/cmd/kubeadm/app/apis/kubeadm/register.go index 7ac27c5eddf..359ee2f572e 100644 --- a/cmd/kubeadm/app/apis/kubeadm/register.go +++ b/cmd/kubeadm/app/apis/kubeadm/register.go @@ -14,9 +14,10 @@ See the License for the specific language governing permissions and limitations under the License. */ -package api +package kubeadm import ( + "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/runtime" ) @@ -27,7 +28,7 @@ var ( ) // GroupName is the group name use in this package -const GroupName = "kubeadm" +const GroupName = "kubeadm.k8s.io" // SchemeGroupVersion is group version used to register these objects var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: runtime.APIVersionInternal} @@ -47,6 +48,8 @@ func addKnownTypes(scheme *runtime.Scheme) error { &MasterConfiguration{}, &NodeConfiguration{}, &ClusterInfo{}, + &api.ListOptions{}, + &api.DeleteOptions{}, ) return nil } diff --git a/cmd/kubeadm/app/apis/kubeadm/types.go b/cmd/kubeadm/app/apis/kubeadm/types.go index 233bb65aa9d..52e3e667d4f 100644 --- a/cmd/kubeadm/app/apis/kubeadm/types.go +++ b/cmd/kubeadm/app/apis/kubeadm/types.go @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. */ -package api +package kubeadm import "k8s.io/kubernetes/pkg/api/unversioned" diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/docs.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/doc.go similarity index 86% rename from cmd/kubeadm/app/apis/kubeadm/v1alpha1/docs.go rename to cmd/kubeadm/app/apis/kubeadm/v1alpha1/doc.go index 7a7588a7a0a..2ea84b3f247 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/docs.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/doc.go @@ -14,8 +14,5 @@ See the License for the specific language governing permissions and limitations under the License. */ -// +k8s:deepcopy-gen=package,register -// +k8s:conversion-gen=k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm - // +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 25aab8ec14c..2a1ab13bbea 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/register.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/register.go @@ -18,6 +18,7 @@ package v1alpha1 import ( "k8s.io/kubernetes/pkg/api/unversioned" + "k8s.io/kubernetes/pkg/api/v1" "k8s.io/kubernetes/pkg/runtime" ) @@ -27,7 +28,7 @@ var ( ) // GroupName is the group name use in this package -const GroupName = "kubeadm" +const GroupName = "kubeadm.k8s.io" // SchemeGroupVersion is group version used to register these objects var SchemeGroupVersion = unversioned.GroupVersion{Group: GroupName, Version: "v1alpha1"} @@ -47,6 +48,8 @@ func addKnownTypes(scheme *runtime.Scheme) error { &MasterConfiguration{}, &NodeConfiguration{}, &ClusterInfo{}, + &v1.ListOptions{}, + &v1.DeleteOptions{}, ) return nil } diff --git a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/types.go b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/types.go index 218681fe27a..88eb4fc0977 100644 --- a/cmd/kubeadm/app/apis/kubeadm/v1alpha1/types.go +++ b/cmd/kubeadm/app/apis/kubeadm/v1alpha1/types.go @@ -23,6 +23,7 @@ type MasterConfiguration struct { Secrets Secrets `json:"secrets"` API API `json:"api"` + Etcd Etcd `json:"etcd"` Networking Networking `json:"networking"` KubernetesVersion string `json:"kubernetesVersion"` CloudProvider string `json:"cloudProvider"` @@ -57,6 +58,7 @@ type NodeConfiguration struct { unversioned.TypeMeta MasterAddresses []string `json:"masterAddresses"` + Secrets Secrets `json:"secrets"` } // ClusterInfo TODO add description diff --git a/hack/.linted_packages b/hack/.linted_packages index 19d5c94df25..f4f8af0576c 100644 --- a/hack/.linted_packages +++ b/hack/.linted_packages @@ -16,6 +16,7 @@ cmd/kube-dns cmd/kube-proxy cmd/kubeadm cmd/kubeadm +cmd/kubeadm/app/apis/kubeadm/install cmd/kubectl cmd/kubelet cmd/kubernetes-discovery diff --git a/pkg/api/serialization_proto_test.go b/pkg/api/serialization_proto_test.go index 5a75071e0dd..4ccbb5d03df 100644 --- a/pkg/api/serialization_proto_test.go +++ b/pkg/api/serialization_proto_test.go @@ -33,12 +33,20 @@ import ( "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime/serializer/protobuf" "k8s.io/kubernetes/pkg/util/diff" + "k8s.io/kubernetes/pkg/util/sets" +) + +var nonProtobaleAPIGroups = sets.NewString( + "kubeadm.k8s.io", ) func init() { - codecsToTest = append(codecsToTest, func(version unversioned.GroupVersion, item runtime.Object) (runtime.Codec, error) { + codecsToTest = append(codecsToTest, func(version unversioned.GroupVersion, item runtime.Object) (runtime.Codec, bool, error) { + if nonProtobaleAPIGroups.Has(version.Group) { + return nil, false, nil + } s := protobuf.NewSerializer(api.Scheme, api.Scheme, "application/arbitrary.content.type") - return api.Codecs.CodecForVersions(s, s, testapi.ExternalGroupVersions(), nil), nil + return api.Codecs.CodecForVersions(s, s, testapi.ExternalGroupVersions(), nil), true, nil }) } diff --git a/pkg/api/serialization_test.go b/pkg/api/serialization_test.go index 7948fdb22d0..657b7de82a0 100644 --- a/pkg/api/serialization_test.go +++ b/pkg/api/serialization_test.go @@ -51,9 +51,10 @@ import ( var fuzzIters = flag.Int("fuzz-iters", 20, "How many fuzzing iterations to do.") -var codecsToTest = []func(version unversioned.GroupVersion, item runtime.Object) (runtime.Codec, error){ - func(version unversioned.GroupVersion, item runtime.Object) (runtime.Codec, error) { - return testapi.GetCodecForObject(item) +var codecsToTest = []func(version unversioned.GroupVersion, item runtime.Object) (runtime.Codec, bool, error){ + func(version unversioned.GroupVersion, item runtime.Object) (runtime.Codec, bool, error) { + c, err := testapi.GetCodecForObject(item) + return c, true, err }, } @@ -135,11 +136,14 @@ func roundTripSame(t *testing.T, group testapi.TestGroup, item runtime.Object, e version := *group.GroupVersion() codecs := []runtime.Codec{} for _, fn := range codecsToTest { - codec, err := fn(version, item) + codec, ok, err := fn(version, item) if err != nil { t.Errorf("unable to get codec: %v", err) return } + if !ok { + continue + } codecs = append(codecs, codec) } diff --git a/pkg/api/testapi/testapi.go b/pkg/api/testapi/testapi.go index a1d1d87a638..343591dc391 100644 --- a/pkg/api/testapi/testapi.go +++ b/pkg/api/testapi/testapi.go @@ -30,6 +30,7 @@ import ( "reflect" "strings" + "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm" "k8s.io/kubernetes/federation/apis/federation" "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/meta" @@ -47,6 +48,7 @@ import ( "k8s.io/kubernetes/pkg/runtime" "k8s.io/kubernetes/pkg/runtime/serializer/recognizer" + _ "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/install" _ "k8s.io/kubernetes/federation/apis/federation/install" _ "k8s.io/kubernetes/pkg/api/install" _ "k8s.io/kubernetes/pkg/apis/apps/install" @@ -247,7 +249,6 @@ func init() { externalTypes: api.Scheme.KnownTypes(externalGroupVersion), } } - if _, ok := Groups[imagepolicy.GroupName]; !ok { externalGroupVersion := unversioned.GroupVersion{Group: imagepolicy.GroupName, Version: registered.GroupOrDie(imagepolicy.GroupName).GroupVersion.Version} Groups[imagepolicy.GroupName] = TestGroup{ @@ -257,6 +258,15 @@ func init() { externalTypes: api.Scheme.KnownTypes(externalGroupVersion), } } + if _, ok := Groups[kubeadm.GroupName]; !ok { + externalGroupVersion := unversioned.GroupVersion{Group: kubeadm.GroupName, Version: registered.GroupOrDie(kubeadm.GroupName).GroupVersion.Version} + Groups[kubeadm.GroupName] = TestGroup{ + externalGroupVersion: externalGroupVersion, + internalGroupVersion: kubeadm.SchemeGroupVersion, + internalTypes: api.Scheme.KnownTypes(kubeadm.SchemeGroupVersion), + externalTypes: api.Scheme.KnownTypes(externalGroupVersion), + } + } Default = Groups[api.GroupName] Autoscaling = Groups[autoscaling.GroupName]