diff --git a/cmd/kubeadm/app/phases/selfhosting/BUILD b/cmd/kubeadm/app/phases/selfhosting/BUILD index 410872e0dab..f71b79c7f23 100644 --- a/cmd/kubeadm/app/phases/selfhosting/BUILD +++ b/cmd/kubeadm/app/phases/selfhosting/BUILD @@ -16,7 +16,8 @@ go_test( library = ":go_default_library", deps = [ "//cmd/kubeadm/app/constants:go_default_library", - "//vendor/github.com/ghodss/yaml:go_default_library", + "//cmd/kubeadm/app/util:go_default_library", + "//vendor/k8s.io/api/apps/v1beta2:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", ], ) diff --git a/cmd/kubeadm/app/phases/selfhosting/selfhosting_test.go b/cmd/kubeadm/app/phases/selfhosting/selfhosting_test.go index 1c8ed984860..40a5a0b07a2 100644 --- a/cmd/kubeadm/app/phases/selfhosting/selfhosting_test.go +++ b/cmd/kubeadm/app/phases/selfhosting/selfhosting_test.go @@ -23,8 +23,9 @@ import ( "os" "testing" - "github.com/ghodss/yaml" + apps "k8s.io/api/apps/v1beta2" "k8s.io/kubernetes/cmd/kubeadm/app/constants" + "k8s.io/kubernetes/cmd/kubeadm/app/util" ) const ( @@ -102,7 +103,9 @@ spec: status: {} ` - testAPIServerDaemonSet = `metadata: + testAPIServerDaemonSet = `apiVersion: apps/v1beta2 +kind: DaemonSet +metadata: creationTimestamp: null labels: k8s-app: self-hosted-kube-apiserver @@ -258,7 +261,9 @@ spec: status: {} ` - testControllerManagerDaemonSet = `metadata: + testControllerManagerDaemonSet = `apiVersion: apps/v1beta2 +kind: DaemonSet +metadata: creationTimestamp: null labels: k8s-app: self-hosted-kube-controller-manager @@ -383,7 +388,9 @@ spec: status: {} ` - testSchedulerDaemonSet = `metadata: + testSchedulerDaemonSet = `apiVersion: apps/v1beta2 +kind: DaemonSet +metadata: creationTimestamp: null labels: k8s-app: self-hosted-kube-scheduler @@ -475,7 +482,7 @@ func TestBuildDaemonSet(t *testing.T) { } ds := BuildDaemonSet(rt.component, podSpec, GetDefaultMutators()) - dsBytes, err := yaml.Marshal(ds) + dsBytes, err := util.MarshalToYaml(ds, apps.SchemeGroupVersion) if err != nil { t.Fatalf("failed to marshal daemonset to YAML: %v", err) } diff --git a/cmd/kubeadm/app/util/BUILD b/cmd/kubeadm/app/util/BUILD index 62caae99a89..91b6f2a7055 100644 --- a/cmd/kubeadm/app/util/BUILD +++ b/cmd/kubeadm/app/util/BUILD @@ -12,13 +12,17 @@ go_library( "arguments.go", "endpoint.go", "error.go", + "marshal.go", "template.go", "version.go", ], deps = [ "//cmd/kubeadm/app/apis/kubeadm:go_default_library", "//cmd/kubeadm/app/preflight:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library", + "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library", + "//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library", ], ) diff --git a/cmd/kubeadm/app/util/apiclient/BUILD b/cmd/kubeadm/app/util/apiclient/BUILD index 218bf81d183..aae26619d13 100644 --- a/cmd/kubeadm/app/util/apiclient/BUILD +++ b/cmd/kubeadm/app/util/apiclient/BUILD @@ -17,6 +17,7 @@ go_library( ], deps = [ "//cmd/kubeadm/app/constants:go_default_library", + "//cmd/kubeadm/app/util:go_default_library", "//pkg/registry/core/service/ipallocator:go_default_library", "//vendor/k8s.io/api/apps/v1beta2:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", diff --git a/cmd/kubeadm/app/util/apiclient/dryrunclient.go b/cmd/kubeadm/app/util/apiclient/dryrunclient.go index e20ce89221c..030187987d4 100644 --- a/cmd/kubeadm/app/util/apiclient/dryrunclient.go +++ b/cmd/kubeadm/app/util/apiclient/dryrunclient.go @@ -27,8 +27,8 @@ import ( "k8s.io/apimachinery/pkg/runtime/schema" clientset "k8s.io/client-go/kubernetes" fakeclientset "k8s.io/client-go/kubernetes/fake" - clientsetscheme "k8s.io/client-go/kubernetes/scheme" core "k8s.io/client-go/testing" + kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util" ) // DryRunGetter is an interface that must be supplied to the NewDryRunClient function in order to contstruct a fully functional fake dryrun clientset @@ -42,14 +42,7 @@ type MarshalFunc func(runtime.Object, schema.GroupVersion) ([]byte, error) // DefaultMarshalFunc is the default MarshalFunc used; uses YAML to print objects to the user func DefaultMarshalFunc(obj runtime.Object, gv schema.GroupVersion) ([]byte, error) { - mediaType := "application/yaml" - info, ok := runtime.SerializerInfoForMediaType(clientsetscheme.Codecs.SupportedMediaTypes(), mediaType) - if !ok { - return []byte{}, fmt.Errorf("unsupported media type %q", mediaType) - } - - encoder := clientsetscheme.Codecs.EncoderForVersion(info.Serializer, gv) - return runtime.Encode(encoder, obj) + return kubeadmutil.MarshalToYaml(obj, gv) } // DryRunClientOptions specifies options to pass to NewDryRunClientWithOpts in order to get a dryrun clientset diff --git a/cmd/kubeadm/app/util/marshal.go b/cmd/kubeadm/app/util/marshal.go new file mode 100644 index 00000000000..f44180da3ac --- /dev/null +++ b/cmd/kubeadm/app/util/marshal.go @@ -0,0 +1,37 @@ +/* +Copyright 2017 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 util + +import ( + "fmt" + + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/runtime/schema" + clientsetscheme "k8s.io/client-go/kubernetes/scheme" +) + +// MarshalToYaml marshals an object into yaml. +func MarshalToYaml(obj runtime.Object, gv schema.GroupVersion) ([]byte, error) { + mediaType := "application/yaml" + info, ok := runtime.SerializerInfoForMediaType(clientsetscheme.Codecs.SupportedMediaTypes(), mediaType) + if !ok { + return []byte{}, fmt.Errorf("unsupported media type %q", mediaType) + } + + encoder := clientsetscheme.Codecs.EncoderForVersion(info.Serializer, gv) + return runtime.Encode(encoder, obj) +} diff --git a/cmd/kubeadm/app/util/staticpod/BUILD b/cmd/kubeadm/app/util/staticpod/BUILD index 41bf1d79b73..8699487b1fc 100644 --- a/cmd/kubeadm/app/util/staticpod/BUILD +++ b/cmd/kubeadm/app/util/staticpod/BUILD @@ -22,8 +22,8 @@ go_library( srcs = ["utils.go"], deps = [ "//cmd/kubeadm/app/constants:go_default_library", + "//cmd/kubeadm/app/util:go_default_library", "//pkg/kubelet/types:go_default_library", - "//vendor/github.com/ghodss/yaml:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", diff --git a/cmd/kubeadm/app/util/staticpod/utils.go b/cmd/kubeadm/app/util/staticpod/utils.go index 9b40ea66642..505ab1b8e77 100644 --- a/cmd/kubeadm/app/util/staticpod/utils.go +++ b/cmd/kubeadm/app/util/staticpod/utils.go @@ -21,13 +21,12 @@ import ( "io/ioutil" "os" - "github.com/ghodss/yaml" - "k8s.io/api/core/v1" "k8s.io/apimachinery/pkg/api/resource" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/intstr" kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" + "k8s.io/kubernetes/cmd/kubeadm/app/util" kubetypes "k8s.io/kubernetes/pkg/kubelet/types" ) @@ -128,7 +127,7 @@ func WriteStaticPodToDisk(componentName, manifestDir string, pod v1.Pod) error { } // writes the pod to disk - serialized, err := yaml.Marshal(pod) + serialized, err := util.MarshalToYaml(&pod, v1.SchemeGroupVersion) if err != nil { return fmt.Errorf("failed to marshal manifest for %q to YAML: %v", componentName, err) }