Commit 3add91fd authored by Feng Min's avatar Feng Min

Kubeadm: Change the marshal code to use ApiMachinery code.

parent b188868f
...@@ -16,7 +16,8 @@ go_test( ...@@ -16,7 +16,8 @@ go_test(
library = ":go_default_library", library = ":go_default_library",
deps = [ deps = [
"//cmd/kubeadm/app/constants:go_default_library", "//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", "//vendor/k8s.io/api/core/v1:go_default_library",
], ],
) )
......
...@@ -23,8 +23,9 @@ import ( ...@@ -23,8 +23,9 @@ import (
"os" "os"
"testing" "testing"
"github.com/ghodss/yaml" apps "k8s.io/api/apps/v1beta2"
"k8s.io/kubernetes/cmd/kubeadm/app/constants" "k8s.io/kubernetes/cmd/kubeadm/app/constants"
"k8s.io/kubernetes/cmd/kubeadm/app/util"
) )
const ( const (
...@@ -102,7 +103,9 @@ spec: ...@@ -102,7 +103,9 @@ spec:
status: {} status: {}
` `
testAPIServerDaemonSet = `metadata: testAPIServerDaemonSet = `apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
creationTimestamp: null creationTimestamp: null
labels: labels:
k8s-app: self-hosted-kube-apiserver k8s-app: self-hosted-kube-apiserver
...@@ -258,7 +261,9 @@ spec: ...@@ -258,7 +261,9 @@ spec:
status: {} status: {}
` `
testControllerManagerDaemonSet = `metadata: testControllerManagerDaemonSet = `apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
creationTimestamp: null creationTimestamp: null
labels: labels:
k8s-app: self-hosted-kube-controller-manager k8s-app: self-hosted-kube-controller-manager
...@@ -383,7 +388,9 @@ spec: ...@@ -383,7 +388,9 @@ spec:
status: {} status: {}
` `
testSchedulerDaemonSet = `metadata: testSchedulerDaemonSet = `apiVersion: apps/v1beta2
kind: DaemonSet
metadata:
creationTimestamp: null creationTimestamp: null
labels: labels:
k8s-app: self-hosted-kube-scheduler k8s-app: self-hosted-kube-scheduler
...@@ -475,7 +482,7 @@ func TestBuildDaemonSet(t *testing.T) { ...@@ -475,7 +482,7 @@ func TestBuildDaemonSet(t *testing.T) {
} }
ds := BuildDaemonSet(rt.component, podSpec, GetDefaultMutators()) ds := BuildDaemonSet(rt.component, podSpec, GetDefaultMutators())
dsBytes, err := yaml.Marshal(ds) dsBytes, err := util.MarshalToYaml(ds, apps.SchemeGroupVersion)
if err != nil { if err != nil {
t.Fatalf("failed to marshal daemonset to YAML: %v", err) t.Fatalf("failed to marshal daemonset to YAML: %v", err)
} }
......
...@@ -12,13 +12,17 @@ go_library( ...@@ -12,13 +12,17 @@ go_library(
"arguments.go", "arguments.go",
"endpoint.go", "endpoint.go",
"error.go", "error.go",
"marshal.go",
"template.go", "template.go",
"version.go", "version.go",
], ],
deps = [ deps = [
"//cmd/kubeadm/app/apis/kubeadm:go_default_library", "//cmd/kubeadm/app/apis/kubeadm:go_default_library",
"//cmd/kubeadm/app/preflight: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/apimachinery/pkg/util/errors:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
], ],
) )
......
...@@ -17,6 +17,7 @@ go_library( ...@@ -17,6 +17,7 @@ go_library(
], ],
deps = [ deps = [
"//cmd/kubeadm/app/constants:go_default_library", "//cmd/kubeadm/app/constants:go_default_library",
"//cmd/kubeadm/app/util:go_default_library",
"//pkg/registry/core/service/ipallocator:go_default_library", "//pkg/registry/core/service/ipallocator:go_default_library",
"//vendor/k8s.io/api/apps/v1beta2:go_default_library", "//vendor/k8s.io/api/apps/v1beta2:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library",
......
...@@ -27,8 +27,8 @@ import ( ...@@ -27,8 +27,8 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
clientset "k8s.io/client-go/kubernetes" clientset "k8s.io/client-go/kubernetes"
fakeclientset "k8s.io/client-go/kubernetes/fake" fakeclientset "k8s.io/client-go/kubernetes/fake"
clientsetscheme "k8s.io/client-go/kubernetes/scheme"
core "k8s.io/client-go/testing" 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 // 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) ...@@ -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 // DefaultMarshalFunc is the default MarshalFunc used; uses YAML to print objects to the user
func DefaultMarshalFunc(obj runtime.Object, gv schema.GroupVersion) ([]byte, error) { func DefaultMarshalFunc(obj runtime.Object, gv schema.GroupVersion) ([]byte, error) {
mediaType := "application/yaml" return kubeadmutil.MarshalToYaml(obj, gv)
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)
} }
// DryRunClientOptions specifies options to pass to NewDryRunClientWithOpts in order to get a dryrun clientset // DryRunClientOptions specifies options to pass to NewDryRunClientWithOpts in order to get a dryrun clientset
......
/*
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)
}
...@@ -22,8 +22,8 @@ go_library( ...@@ -22,8 +22,8 @@ go_library(
srcs = ["utils.go"], srcs = ["utils.go"],
deps = [ deps = [
"//cmd/kubeadm/app/constants:go_default_library", "//cmd/kubeadm/app/constants:go_default_library",
"//cmd/kubeadm/app/util:go_default_library",
"//pkg/kubelet/types: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/api/core/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/resource:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
......
...@@ -21,13 +21,12 @@ import ( ...@@ -21,13 +21,12 @@ import (
"io/ioutil" "io/ioutil"
"os" "os"
"github.com/ghodss/yaml"
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants" kubeadmconstants "k8s.io/kubernetes/cmd/kubeadm/app/constants"
"k8s.io/kubernetes/cmd/kubeadm/app/util"
kubetypes "k8s.io/kubernetes/pkg/kubelet/types" kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
) )
...@@ -128,7 +127,7 @@ func WriteStaticPodToDisk(componentName, manifestDir string, pod v1.Pod) error { ...@@ -128,7 +127,7 @@ func WriteStaticPodToDisk(componentName, manifestDir string, pod v1.Pod) error {
} }
// writes the pod to disk // writes the pod to disk
serialized, err := yaml.Marshal(pod) serialized, err := util.MarshalToYaml(&pod, v1.SchemeGroupVersion)
if err != nil { if err != nil {
return fmt.Errorf("failed to marshal manifest for %q to YAML: %v", componentName, err) return fmt.Errorf("failed to marshal manifest for %q to YAML: %v", componentName, err)
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment