Kubeadm: Change the marshal code to use ApiMachinery code.
This commit is contained in:
		| @@ -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 ( | |||||||
| 	"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: | |||||||
| 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: | |||||||
| 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: | |||||||
| 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) { | |||||||
| 		} | 		} | ||||||
|  |  | ||||||
| 		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( | |||||||
|         "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( | |||||||
|     ], |     ], | ||||||
|     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 ( | |||||||
| 	"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) | |||||||
|  |  | ||||||
| // 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 | ||||||
|   | |||||||
							
								
								
									
										37
									
								
								cmd/kubeadm/app/util/marshal.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								cmd/kubeadm/app/util/marshal.go
									
									
									
									
									
										Normal file
									
								
							| @@ -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) | ||||||
|  | } | ||||||
| @@ -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 ( | |||||||
| 	"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 { | |||||||
| 	} | 	} | ||||||
|  |  | ||||||
| 	// 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) | ||||||
| 	} | 	} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Feng Min
					Feng Min