Kubeadm: Change the marshal code to use ApiMachinery code.
This commit is contained in:
		| @@ -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", | ||||
|     ], | ||||
| ) | ||||
|   | ||||
| @@ -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) | ||||
| 		} | ||||
|   | ||||
| @@ -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", | ||||
|     ], | ||||
| ) | ||||
|  | ||||
|   | ||||
| @@ -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", | ||||
|   | ||||
| @@ -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 | ||||
|   | ||||
							
								
								
									
										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"], | ||||
|     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", | ||||
|   | ||||
| @@ -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) | ||||
| 	} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Feng Min
					Feng Min