From 7403564366797a207fd5787da42b79bfd58a9ae1 Mon Sep 17 00:00:00 2001 From: Wojciech Tyczynski Date: Wed, 4 May 2016 12:24:16 +0200 Subject: [PATCH] Remove Codec from ContentConfig. --- pkg/client/restclient/client.go | 4 - pkg/client/restclient/config.go | 9 -- pkg/client/restclient/request_test.go | 1 - pkg/client/unversioned/apps.go | 1 - pkg/client/unversioned/autoscaling.go | 1 - pkg/client/unversioned/batch.go | 1 - pkg/client/unversioned/certificates.go | 1 - pkg/client/unversioned/extensions.go | 1 - pkg/client/unversioned/fake/fake.go | 34 ++++--- pkg/client/unversioned/helper.go | 3 - .../unversioned/helper_blackbox_test.go | 3 +- pkg/client/unversioned/helper_test.go | 15 +-- pkg/client/unversioned/policy.go | 1 - pkg/client/unversioned/rbac.go | 1 - pkg/kubectl/cmd/annotate_test.go | 14 +-- pkg/kubectl/cmd/apply_test.go | 18 ++-- pkg/kubectl/cmd/attach_test.go | 14 +-- pkg/kubectl/cmd/clusterinfo_dump_test.go | 4 +- pkg/kubectl/cmd/cmd_test.go | 61 ++++++------ pkg/kubectl/cmd/create_configmap_test.go | 4 +- pkg/kubectl/cmd/create_namespace_test.go | 4 +- pkg/kubectl/cmd/create_secret_test.go | 8 +- pkg/kubectl/cmd/create_serviceaccount_test.go | 4 +- pkg/kubectl/cmd/create_test.go | 14 +-- pkg/kubectl/cmd/delete_test.go | 50 +++++----- pkg/kubectl/cmd/describe_test.go | 28 +++--- pkg/kubectl/cmd/drain_test.go | 10 +- pkg/kubectl/cmd/exec_test.go | 10 +- pkg/kubectl/cmd/expose_test.go | 4 +- pkg/kubectl/cmd/get_test.go | 96 ++++++++++--------- pkg/kubectl/cmd/label_test.go | 10 +- pkg/kubectl/cmd/logs_test.go | 6 +- pkg/kubectl/cmd/patch_test.go | 8 +- pkg/kubectl/cmd/portforward_test.go | 8 +- pkg/kubectl/cmd/replace_test.go | 16 ++-- pkg/kubectl/cmd/rollingupdate_test.go | 2 +- pkg/kubectl/cmd/run_test.go | 8 +- pkg/kubectl/cmd/taint_test.go | 4 +- pkg/kubectl/cmd/util/factory.go | 1 - pkg/kubectl/cmd/util/factory_test.go | 4 +- pkg/kubectl/resource/builder_test.go | 2 +- pkg/kubectl/resource/helper_test.go | 32 +++---- pkg/kubectl/rolling_updater_test.go | 4 +- 43 files changed, 260 insertions(+), 264 deletions(-) diff --git a/pkg/client/restclient/client.go b/pkg/client/restclient/client.go index 9019c116a7c..24ad1914e94 100644 --- a/pkg/client/restclient/client.go +++ b/pkg/client/restclient/client.go @@ -222,7 +222,3 @@ func (c *RESTClient) Delete() *Request { func (c *RESTClient) APIVersion() unversioned.GroupVersion { return *c.contentConfig.GroupVersion } - -func (c *RESTClient) Codec() runtime.Codec { - return c.contentConfig.Codec -} diff --git a/pkg/client/restclient/config.go b/pkg/client/restclient/config.go index 3cbec43d50e..fec5f49a429 100644 --- a/pkg/client/restclient/config.go +++ b/pkg/client/restclient/config.go @@ -143,15 +143,6 @@ type ContentConfig struct { // NegotiatedSerializer is used for obtaining encoders and decoders for multiple // supported media types. NegotiatedSerializer runtime.NegotiatedSerializer - - // Codec specifies the encoding and decoding behavior for runtime.Objects passed - // to a RESTClient or Client. Required when initializing a RESTClient, optional - // when initializing a Client. - // - // DEPRECATED: Please use NegotiatedSerializer instead. - // Codec is currently used only in some tests and will be removed soon. - // All production setups should use NegotiatedSerializer. - Codec runtime.Codec } // RESTClientFor returns a RESTClient that satisfies the requested attributes on a client Config diff --git a/pkg/client/restclient/request_test.go b/pkg/client/restclient/request_test.go index 1b5171d6ddf..5e9730d9384 100755 --- a/pkg/client/restclient/request_test.go +++ b/pkg/client/restclient/request_test.go @@ -273,7 +273,6 @@ func (obj NotAnAPIObject) SetGroupVersionKind(gvk *unversioned.GroupVersionKind) func defaultContentConfig() ContentConfig { return ContentConfig{ GroupVersion: testapi.Default.GroupVersion(), - Codec: testapi.Default.Codec(), NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), } } diff --git a/pkg/client/unversioned/apps.go b/pkg/client/unversioned/apps.go index 54e362eb6f2..f2498cbb566 100644 --- a/pkg/client/unversioned/apps.go +++ b/pkg/client/unversioned/apps.go @@ -71,7 +71,6 @@ func setAppsDefaults(config *restclient.Config) error { config.GroupVersion = ©GroupVersion //} - config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion) config.NegotiatedSerializer = api.Codecs return nil } diff --git a/pkg/client/unversioned/autoscaling.go b/pkg/client/unversioned/autoscaling.go index 86a3d3616ef..188a5ea78da 100644 --- a/pkg/client/unversioned/autoscaling.go +++ b/pkg/client/unversioned/autoscaling.go @@ -72,7 +72,6 @@ func setAutoscalingDefaults(config *restclient.Config) error { config.GroupVersion = ©GroupVersion //} - config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion) config.NegotiatedSerializer = api.Codecs return nil } diff --git a/pkg/client/unversioned/batch.go b/pkg/client/unversioned/batch.go index 71e87031801..c31652f41d8 100644 --- a/pkg/client/unversioned/batch.go +++ b/pkg/client/unversioned/batch.go @@ -102,7 +102,6 @@ func setBatchDefaults(config *restclient.Config, gv *unversioned.GroupVersion) e config.GroupVersion = ©GroupVersion //} - config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion) config.NegotiatedSerializer = api.Codecs return nil } diff --git a/pkg/client/unversioned/certificates.go b/pkg/client/unversioned/certificates.go index ae6e9840d1e..29b15c45ef3 100644 --- a/pkg/client/unversioned/certificates.go +++ b/pkg/client/unversioned/certificates.go @@ -75,7 +75,6 @@ func setCertificatesDefaults(config *restclient.Config) error { config.GroupVersion = ©GroupVersion //} - config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion) config.NegotiatedSerializer = api.Codecs if config.QPS == 0 { config.QPS = 5 diff --git a/pkg/client/unversioned/extensions.go b/pkg/client/unversioned/extensions.go index 974055c82a9..39b34087761 100644 --- a/pkg/client/unversioned/extensions.go +++ b/pkg/client/unversioned/extensions.go @@ -126,7 +126,6 @@ func setExtensionsDefaults(config *restclient.Config) error { config.GroupVersion = ©GroupVersion //} - config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion) config.NegotiatedSerializer = api.Codecs return nil } diff --git a/pkg/client/unversioned/fake/fake.go b/pkg/client/unversioned/fake/fake.go index 018dd9432af..0bd4e6ae15e 100644 --- a/pkg/client/unversioned/fake/fake.go +++ b/pkg/client/unversioned/fake/fake.go @@ -24,6 +24,7 @@ import ( "k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api/testapi" + "k8s.io/kubernetes/pkg/api/unversioned" "k8s.io/kubernetes/pkg/client/restclient" "k8s.io/kubernetes/pkg/runtime" ) @@ -42,11 +43,12 @@ func (f roundTripperFunc) RoundTrip(req *http.Request) (*http.Response, error) { // RESTClient provides a fake RESTClient interface. type RESTClient struct { - Client *http.Client - Codec runtime.Codec - Req *http.Request - Resp *http.Response - Err error + Client *http.Client + NegotiatedSerializer runtime.NegotiatedSerializer + + Req *http.Request + Resp *http.Response + Err error } func (c *RESTClient) Get() *restclient.Request { @@ -71,15 +73,23 @@ func (c *RESTClient) Delete() *restclient.Request { func (c *RESTClient) request(verb string) *restclient.Request { config := restclient.ContentConfig{ - ContentType: runtime.ContentTypeJSON, - GroupVersion: testapi.Default.GroupVersion(), - Codec: c.Codec, + ContentType: runtime.ContentTypeJSON, + GroupVersion: testapi.Default.GroupVersion(), + NegotiatedSerializer: c.NegotiatedSerializer, } + ns := c.NegotiatedSerializer + serializer, _ := ns.SerializerForMediaType(runtime.ContentTypeJSON, nil) + streamingSerializer, _ := ns.StreamingSerializerForMediaType(runtime.ContentTypeJSON, nil) + internalVersion := unversioned.GroupVersion{ + Group: testapi.Default.GroupVersion().Group, + Version: runtime.APIVersionInternal, + } + internalVersion.Version = runtime.APIVersionInternal serializers := restclient.Serializers{ - Encoder: c.Codec, - Decoder: c.Codec, - StreamingSerializer: c.Codec, - Framer: runtime.DefaultFramer, + Encoder: ns.EncoderForVersion(serializer, *testapi.Default.GroupVersion()), + Decoder: ns.DecoderToVersion(serializer, internalVersion), + StreamingSerializer: streamingSerializer, + Framer: streamingSerializer.Framer, } return restclient.NewRequest(c, verb, &url.URL{Host: "localhost"}, "", config, serializers, nil, nil) } diff --git a/pkg/client/unversioned/helper.go b/pkg/client/unversioned/helper.go index 7320e9dea7b..84757692df7 100644 --- a/pkg/client/unversioned/helper.go +++ b/pkg/client/unversioned/helper.go @@ -268,9 +268,6 @@ func SetKubernetesDefaults(config *restclient.Config) error { if config.NegotiatedSerializer == nil { config.NegotiatedSerializer = api.Codecs } - if config.Codec == nil { - config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion) - } return restclient.SetKubernetesDefaults(config) } diff --git a/pkg/client/unversioned/helper_blackbox_test.go b/pkg/client/unversioned/helper_blackbox_test.go index 41d3a21abc7..54834d960b4 100644 --- a/pkg/client/unversioned/helper_blackbox_test.go +++ b/pkg/client/unversioned/helper_blackbox_test.go @@ -120,11 +120,10 @@ func TestNegotiateVersion(t *testing.T) { statusCode: http.StatusForbidden, }, } - codec := testapi.Default.Codec() for _, test := range tests { fakeClient := &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), Resp: &http.Response{ StatusCode: test.statusCode, Body: objBody(&uapi.APIVersions{Versions: test.serverVersions}), diff --git a/pkg/client/unversioned/helper_test.go b/pkg/client/unversioned/helper_test.go index 636e95bc89c..1b5a151703c 100644 --- a/pkg/client/unversioned/helper_test.go +++ b/pkg/client/unversioned/helper_test.go @@ -41,7 +41,6 @@ func TestSetKubernetesDefaults(t *testing.T) { APIPath: "/api", ContentConfig: restclient.ContentConfig{ GroupVersion: testapi.Default.GroupVersion(), - Codec: testapi.Default.Codec(), NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), }, }, @@ -135,11 +134,15 @@ func TestHelperGetServerAPIVersions(t *testing.T) { func TestSetsCodec(t *testing.T) { testCases := map[string]struct { - Err bool - Prefix string - Codec runtime.Codec + Err bool + Prefix string + NegotiatedSerializer runtime.NegotiatedSerializer }{ - testapi.Default.GroupVersion().Version: {false, "/api/" + testapi.Default.GroupVersion().Version, testapi.Default.Codec()}, + testapi.Default.GroupVersion().Version: { + Err: false, + Prefix: "/api/" + testapi.Default.GroupVersion().Version, + NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), + }, // Add this test back when we fixed config and SetKubernetesDefaults // "invalidVersion": {true, "", nil}, } @@ -170,7 +173,7 @@ func TestSetsCodec(t *testing.T) { if e, a := expected.Prefix, versionedPath; e != a { t.Errorf("expected %#v, got %#v", e, a) } - if e, a := expected.Codec, conf.Codec; !reflect.DeepEqual(e, a) { + if e, a := expected.NegotiatedSerializer, conf.NegotiatedSerializer; !reflect.DeepEqual(e, a) { t.Errorf("expected %#v, got %#v", e, a) } } diff --git a/pkg/client/unversioned/policy.go b/pkg/client/unversioned/policy.go index 06ad4eb8019..9a47d791735 100644 --- a/pkg/client/unversioned/policy.go +++ b/pkg/client/unversioned/policy.go @@ -71,7 +71,6 @@ func setPolicyDefaults(config *restclient.Config) error { config.GroupVersion = ©GroupVersion //} - config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion) config.NegotiatedSerializer = api.Codecs return nil } diff --git a/pkg/client/unversioned/rbac.go b/pkg/client/unversioned/rbac.go index 9b311e45eff..09b2b4073e0 100644 --- a/pkg/client/unversioned/rbac.go +++ b/pkg/client/unversioned/rbac.go @@ -91,7 +91,6 @@ func setRbacDefaults(config *restclient.Config) error { config.GroupVersion = ©GroupVersion //} - config.Codec = api.Codecs.LegacyCodec(*config.GroupVersion) config.NegotiatedSerializer = api.Codecs return nil } diff --git a/pkg/kubectl/cmd/annotate_test.go b/pkg/kubectl/cmd/annotate_test.go index 3fd34040c7c..853408596dc 100644 --- a/pkg/kubectl/cmd/annotate_test.go +++ b/pkg/kubectl/cmd/annotate_test.go @@ -389,7 +389,7 @@ func TestAnnotateErrors(t *testing.T) { } for k, testCase := range testCases { - f, tf, _ := NewAPIFactory() + f, tf, _, _ := NewAPIFactory() tf.Printer = &testPrinter{} tf.Namespace = "test" tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}} @@ -419,10 +419,10 @@ func TestAnnotateErrors(t *testing.T) { func TestAnnotateObject(t *testing.T) { pods, _, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch req.Method { case "GET": @@ -469,10 +469,10 @@ func TestAnnotateObject(t *testing.T) { func TestAnnotateObjectFromFile(t *testing.T) { pods, _, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch req.Method { case "GET": @@ -520,10 +520,10 @@ func TestAnnotateObjectFromFile(t *testing.T) { func TestAnnotateMultipleObjects(t *testing.T) { pods, _, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch req.Method { case "GET": diff --git a/pkg/kubectl/cmd/apply_test.go b/pkg/kubectl/cmd/apply_test.go index 9c8b6d53ae8..52bec329fda 100644 --- a/pkg/kubectl/cmd/apply_test.go +++ b/pkg/kubectl/cmd/apply_test.go @@ -41,7 +41,7 @@ import ( func TestApplyExtraArgsFail(t *testing.T) { buf := bytes.NewBuffer([]byte{}) - f, _, _ := NewAPIFactory() + f, _, _, _ := NewAPIFactory() c := NewCmdApply(f, buf) if validateApplyArgs(c, []string{"rc"}) == nil { t.Fatalf("unexpected non-error") @@ -182,10 +182,10 @@ func TestApplyObject(t *testing.T) { nameRC, currentRC := readAndAnnotateReplicationController(t, filenameRC) pathRC := "/namespaces/test/replicationcontrollers/" + nameRC - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == pathRC && m == "GET": @@ -224,10 +224,10 @@ func TestApplyRetry(t *testing.T) { firstPatch := true retry := false getCount := 0 - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == pathRC && m == "GET": @@ -276,10 +276,10 @@ func TestApplyNonExistObject(t *testing.T) { pathRC := "/namespaces/test/replicationcontrollers" pathNameRC := pathRC + "/" + nameRC - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == pathNameRC && m == "GET": @@ -323,10 +323,10 @@ func testApplyMultipleObjects(t *testing.T, asList bool) { nameSVC, currentSVC := readAndAnnotateService(t, filenameSVC) pathSVC := "/namespaces/test/services/" + nameSVC - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == pathRC && m == "GET": diff --git a/pkg/kubectl/cmd/attach_test.go b/pkg/kubectl/cmd/attach_test.go index 9ebc756b3c2..52abe25ee0f 100644 --- a/pkg/kubectl/cmd/attach_test.go +++ b/pkg/kubectl/cmd/attach_test.go @@ -95,10 +95,10 @@ func TestPodAndContainerAttach(t *testing.T) { } for _, test := range tests { - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Client = &fake.RESTClient{ - Codec: codec, - Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { return nil, nil }), + NegotiatedSerializer: ns, + Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { return nil, nil }), } tf.Namespace = "test" tf.ClientConfig = &restclient.Config{} @@ -161,9 +161,9 @@ func TestAttach(t *testing.T) { }, } for _, test := range tests { - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == test.podPath && m == "GET": @@ -239,9 +239,9 @@ func TestAttachWarnings(t *testing.T) { }, } for _, test := range tests { - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == test.podPath && m == "GET": diff --git a/pkg/kubectl/cmd/clusterinfo_dump_test.go b/pkg/kubectl/cmd/clusterinfo_dump_test.go index c4bb2c58a5e..1ac61116435 100644 --- a/pkg/kubectl/cmd/clusterinfo_dump_test.go +++ b/pkg/kubectl/cmd/clusterinfo_dump_test.go @@ -28,7 +28,7 @@ func TestSetupOutputWriterNoOp(t *testing.T) { tests := []string{"", "-"} for _, test := range tests { out := &bytes.Buffer{} - f, _, _ := NewAPIFactory() + f, _, _, _ := NewAPIFactory() cmd := NewCmdClusterInfoDump(f, os.Stdout) cmd.Flag("output-directory").Value.Set(test) writer := setupOutputWriter(cmd, out, "/some/file/that/should/be/ignored") @@ -48,7 +48,7 @@ func TestSetupOutputWriterFile(t *testing.T) { defer os.RemoveAll(dir) out := &bytes.Buffer{} - f, _, _ := NewAPIFactory() + f, _, _, _ := NewAPIFactory() cmd := NewCmdClusterInfoDump(f, os.Stdout) cmd.Flag("output-directory").Value.Set(dir) writer := setupOutputWriter(cmd, out, file) diff --git a/pkg/kubectl/cmd/cmd_test.go b/pkg/kubectl/cmd/cmd_test.go index 703f67bd7b4..e81a5170ff3 100644 --- a/pkg/kubectl/cmd/cmd_test.go +++ b/pkg/kubectl/cmd/cmd_test.go @@ -190,13 +190,16 @@ type testFactory struct { Err error } -func NewTestFactory() (*cmdutil.Factory, *testFactory, runtime.Codec) { +func NewTestFactory() (*cmdutil.Factory, *testFactory, runtime.Codec, runtime.NegotiatedSerializer) { scheme, mapper, codec := newExternalScheme() t := &testFactory{ Validator: validation.NullSchema{}, Mapper: mapper, Typer: scheme, } + negotiatedSerializer := serializer.NegotiatedSerializerWrapper( + runtime.SerializerInfo{Serializer: codec}, + runtime.StreamSerializerInfo{}) return &cmdutil.Factory{ Object: func(discovery bool) (meta.RESTMapper, runtime.ObjectTyper) { priorityRESTMapper := meta.PriorityRESTMapper{ @@ -234,11 +237,11 @@ func NewTestFactory() (*cmdutil.Factory, *testFactory, runtime.Codec) { ClientConfig: func() (*restclient.Config, error) { return t.ClientConfig, t.Err }, - }, t, codec + }, t, codec, negotiatedSerializer } func NewMixedFactory(apiClient resource.RESTClient) (*cmdutil.Factory, *testFactory, runtime.Codec) { - f, t, c := NewTestFactory() + f, t, c, _ := NewTestFactory() var multiRESTMapper meta.MultiRESTMapper multiRESTMapper = append(multiRESTMapper, t.Mapper) multiRESTMapper = append(multiRESTMapper, testapi.Default.RESTMapper()) @@ -263,7 +266,7 @@ func NewMixedFactory(apiClient resource.RESTClient) (*cmdutil.Factory, *testFact return f, t, c } -func NewAPIFactory() (*cmdutil.Factory, *testFactory, runtime.Codec) { +func NewAPIFactory() (*cmdutil.Factory, *testFactory, runtime.Codec, runtime.NegotiatedSerializer) { t := &testFactory{ Validator: validation.NullSchema{}, } @@ -335,7 +338,7 @@ func NewAPIFactory() (*cmdutil.Factory, *testFactory, runtime.Codec) { f.LabelsForObject = rf.LabelsForObject f.CanBeExposed = rf.CanBeExposed f.PrintObjectSpecificMessage = rf.PrintObjectSpecificMessage - return f, t, testapi.Default.Codec() + return f, t, testapi.Default.Codec(), testapi.Default.NegotiatedSerializer() } func objBody(codec runtime.Codec, obj runtime.Object) io.ReadCloser { @@ -367,11 +370,11 @@ func stringBody(body string) io.ReadCloser { //} func Example_printReplicationControllerWithNamespace() { - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = kubectl.NewHumanReadablePrinter(false, true, false, false, false, false, []string{}) tf.Client = &fake.RESTClient{ - Codec: codec, - Client: nil, + NegotiatedSerializer: ns, + Client: nil, } cmd := NewCmdRun(f, os.Stdin, os.Stdout, os.Stderr) ctrl := &api.ReplicationController{ @@ -413,11 +416,11 @@ func Example_printReplicationControllerWithNamespace() { } func Example_printMultiContainersReplicationControllerWithWide() { - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = kubectl.NewHumanReadablePrinter(false, false, true, false, false, false, []string{}) tf.Client = &fake.RESTClient{ - Codec: codec, - Client: nil, + NegotiatedSerializer: ns, + Client: nil, } cmd := NewCmdRun(f, os.Stdin, os.Stdout, os.Stderr) ctrl := &api.ReplicationController{ @@ -462,11 +465,11 @@ func Example_printMultiContainersReplicationControllerWithWide() { } func Example_printReplicationController() { - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = kubectl.NewHumanReadablePrinter(false, false, false, false, false, false, []string{}) tf.Client = &fake.RESTClient{ - Codec: codec, - Client: nil, + NegotiatedSerializer: ns, + Client: nil, } cmd := NewCmdRun(f, os.Stdin, os.Stdout, os.Stderr) ctrl := &api.ReplicationController{ @@ -511,11 +514,11 @@ func Example_printReplicationController() { } func Example_printPodWithWideFormat() { - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = kubectl.NewHumanReadablePrinter(false, false, true, false, false, false, []string{}) tf.Client = &fake.RESTClient{ - Codec: codec, - Client: nil, + NegotiatedSerializer: ns, + Client: nil, } nodeName := "kubernetes-minion-abcd" cmd := NewCmdRun(f, os.Stdin, os.Stdout, os.Stderr) @@ -548,11 +551,11 @@ func Example_printPodWithWideFormat() { } func Example_printPodWithShowLabels() { - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = kubectl.NewHumanReadablePrinter(false, false, false, false, true, false, []string{}) tf.Client = &fake.RESTClient{ - Codec: codec, - Client: nil, + NegotiatedSerializer: ns, + Client: nil, } nodeName := "kubernetes-minion-abcd" cmd := NewCmdRun(f, os.Stdin, os.Stdout, os.Stderr) @@ -680,11 +683,11 @@ func newAllPhasePodList() *api.PodList { } func Example_printPodHideTerminated() { - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = kubectl.NewHumanReadablePrinter(false, false, false, false, false, false, []string{}) tf.Client = &fake.RESTClient{ - Codec: codec, - Client: nil, + NegotiatedSerializer: ns, + Client: nil, } cmd := NewCmdRun(f, os.Stdin, os.Stdout, os.Stderr) podList := newAllPhasePodList() @@ -701,11 +704,11 @@ func Example_printPodHideTerminated() { } func Example_printPodShowAll() { - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = kubectl.NewHumanReadablePrinter(false, false, false, true, false, false, []string{}) tf.Client = &fake.RESTClient{ - Codec: codec, - Client: nil, + NegotiatedSerializer: ns, + Client: nil, } cmd := NewCmdRun(f, os.Stdin, os.Stdout, os.Stderr) podList := newAllPhasePodList() @@ -724,11 +727,11 @@ func Example_printPodShowAll() { } func Example_printServiceWithNamespacesAndLabels() { - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = kubectl.NewHumanReadablePrinter(false, true, false, false, false, false, []string{"l1"}) tf.Client = &fake.RESTClient{ - Codec: codec, - Client: nil, + NegotiatedSerializer: ns, + Client: nil, } cmd := NewCmdRun(f, os.Stdin, os.Stdout, os.Stderr) svc := &api.ServiceList{ diff --git a/pkg/kubectl/cmd/create_configmap_test.go b/pkg/kubectl/cmd/create_configmap_test.go index 7e62366b7f3..571accb8efe 100644 --- a/pkg/kubectl/cmd/create_configmap_test.go +++ b/pkg/kubectl/cmd/create_configmap_test.go @@ -28,10 +28,10 @@ import ( func TestCreateConfigMap(t *testing.T) { configMap := &api.ConfigMap{} configMap.Name = "my-configmap" - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/configmaps" && m == "POST": diff --git a/pkg/kubectl/cmd/create_namespace_test.go b/pkg/kubectl/cmd/create_namespace_test.go index 3ad34c2d1f0..584f6087e75 100644 --- a/pkg/kubectl/cmd/create_namespace_test.go +++ b/pkg/kubectl/cmd/create_namespace_test.go @@ -28,10 +28,10 @@ import ( func TestCreateNamespace(t *testing.T) { namespaceObject := &api.Namespace{} namespaceObject.Name = "my-namespace" - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces" && m == "POST": diff --git a/pkg/kubectl/cmd/create_secret_test.go b/pkg/kubectl/cmd/create_secret_test.go index d810b01337c..b95d7d398fc 100644 --- a/pkg/kubectl/cmd/create_secret_test.go +++ b/pkg/kubectl/cmd/create_secret_test.go @@ -28,10 +28,10 @@ import ( func TestCreateSecretGeneric(t *testing.T) { secretObject := &api.Secret{} secretObject.Name = "my-secret" - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/secrets" && m == "POST": @@ -56,10 +56,10 @@ func TestCreateSecretGeneric(t *testing.T) { func TestCreateSecretDockerRegistry(t *testing.T) { secretObject := &api.Secret{} secretObject.Name = "my-secret" - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/secrets" && m == "POST": diff --git a/pkg/kubectl/cmd/create_serviceaccount_test.go b/pkg/kubectl/cmd/create_serviceaccount_test.go index ba4979b4173..7f3f5ef1b93 100644 --- a/pkg/kubectl/cmd/create_serviceaccount_test.go +++ b/pkg/kubectl/cmd/create_serviceaccount_test.go @@ -28,10 +28,10 @@ import ( func TestCreateServiceAccount(t *testing.T) { serviceAccountObject := &api.ServiceAccount{} serviceAccountObject.Name = "my-service-account" - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/serviceaccounts" && m == "POST": diff --git a/pkg/kubectl/cmd/create_test.go b/pkg/kubectl/cmd/create_test.go index c6623cb2a59..415fd7bcda4 100644 --- a/pkg/kubectl/cmd/create_test.go +++ b/pkg/kubectl/cmd/create_test.go @@ -28,7 +28,7 @@ func TestExtraArgsFail(t *testing.T) { initTestErrorHandler(t) buf := bytes.NewBuffer([]byte{}) - f, _, _ := NewAPIFactory() + f, _, _, _ := NewAPIFactory() c := NewCmdCreate(f, buf) if ValidateArgs(c, []string{"rc"}) == nil { t.Errorf("unexpected non-error") @@ -40,10 +40,10 @@ func TestCreateObject(t *testing.T) { _, _, rc := testData() rc.Items[0].Name = "redis-master-controller" - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers" && m == "POST": @@ -72,10 +72,10 @@ func TestCreateMultipleObject(t *testing.T) { initTestErrorHandler(t) _, svc, rc := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/services" && m == "POST": @@ -108,10 +108,10 @@ func TestCreateDirectory(t *testing.T) { _, _, rc := testData() rc.Items[0].Name = "name" - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers" && m == "POST": diff --git a/pkg/kubectl/cmd/delete_test.go b/pkg/kubectl/cmd/delete_test.go index d7cc46557e9..1a5e938134d 100644 --- a/pkg/kubectl/cmd/delete_test.go +++ b/pkg/kubectl/cmd/delete_test.go @@ -33,10 +33,10 @@ import ( func TestDeleteObjectByTuple(t *testing.T) { _, _, rc := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers/redis-master-controller" && m == "DELETE": @@ -65,10 +65,10 @@ func TestDeleteObjectByTuple(t *testing.T) { func TestDeleteNamedObject(t *testing.T) { _, _, rc := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers/redis-master-controller" && m == "DELETE": @@ -97,10 +97,10 @@ func TestDeleteNamedObject(t *testing.T) { func TestDeleteObject(t *testing.T) { _, _, rc := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers/redis-master" && m == "DELETE": @@ -127,10 +127,10 @@ func TestDeleteObject(t *testing.T) { } func TestDeleteObjectNotFound(t *testing.T) { - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers/redis-master" && m == "DELETE": @@ -157,10 +157,10 @@ func TestDeleteObjectNotFound(t *testing.T) { } func TestDeleteObjectIgnoreNotFound(t *testing.T) { - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers/redis-master" && m == "DELETE": @@ -189,7 +189,7 @@ func TestDeleteObjectIgnoreNotFound(t *testing.T) { func TestDeleteAllNotFound(t *testing.T) { _, svc, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() // Add an item to the list which will result in a 404 on delete svc.Items = append(svc.Items, api.Service{ObjectMeta: api.ObjectMeta{Name: "foo"}}) @@ -197,7 +197,7 @@ func TestDeleteAllNotFound(t *testing.T) { tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/services" && m == "GET": @@ -231,7 +231,7 @@ func TestDeleteAllNotFound(t *testing.T) { func TestDeleteAllIgnoreNotFound(t *testing.T) { _, svc, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() // Add an item to the list which will result in a 404 on delete svc.Items = append(svc.Items, api.Service{ObjectMeta: api.ObjectMeta{Name: "foo"}}) @@ -239,7 +239,7 @@ func TestDeleteAllIgnoreNotFound(t *testing.T) { tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/services" && m == "GET": @@ -271,10 +271,10 @@ func TestDeleteAllIgnoreNotFound(t *testing.T) { func TestDeleteMultipleObject(t *testing.T) { _, svc, rc := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers/redis-master" && m == "DELETE": @@ -305,10 +305,10 @@ func TestDeleteMultipleObject(t *testing.T) { func TestDeleteMultipleObjectContinueOnMissing(t *testing.T) { _, svc, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers/redis-master" && m == "DELETE": @@ -342,10 +342,10 @@ func TestDeleteMultipleObjectContinueOnMissing(t *testing.T) { func TestDeleteMultipleResourcesWithTheSameName(t *testing.T) { _, svc, rc := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers/baz" && m == "DELETE": @@ -378,10 +378,10 @@ func TestDeleteMultipleResourcesWithTheSameName(t *testing.T) { func TestDeleteDirectory(t *testing.T) { _, _, rc := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case strings.HasPrefix(p, "/namespaces/test/replicationcontrollers/") && m == "DELETE": @@ -409,10 +409,10 @@ func TestDeleteDirectory(t *testing.T) { func TestDeleteMultipleSelector(t *testing.T) { pods, svc, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/pods" && m == "GET": @@ -474,7 +474,7 @@ func TestResourceErrors(t *testing.T) { } for k, testCase := range testCases { - f, tf, _ := NewAPIFactory() + f, tf, _, _ := NewAPIFactory() tf.Printer = &testPrinter{} tf.Namespace = "test" tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}} diff --git a/pkg/kubectl/cmd/describe_test.go b/pkg/kubectl/cmd/describe_test.go index 026ad36965c..db896c3a0dd 100644 --- a/pkg/kubectl/cmd/describe_test.go +++ b/pkg/kubectl/cmd/describe_test.go @@ -28,11 +28,11 @@ import ( // Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get. func TestDescribeUnknownSchemaObject(t *testing.T) { d := &testDescriber{Output: "test output"} - f, tf, codec := NewTestFactory() + f, tf, codec, ns := NewTestFactory() tf.Describer = d tf.Client = &fake.RESTClient{ - Codec: codec, - Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &internalType{Name: "foo"})}, + NegotiatedSerializer: ns, + Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &internalType{Name: "foo"})}, } tf.Namespace = "non-default" buf := bytes.NewBuffer([]byte{}) @@ -51,11 +51,11 @@ func TestDescribeUnknownSchemaObject(t *testing.T) { func TestDescribeObject(t *testing.T) { _, _, rc := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() d := &testDescriber{Output: "test output"} tf.Describer = d tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers/redis-master" && m == "GET": @@ -84,12 +84,12 @@ func TestDescribeObject(t *testing.T) { func TestDescribeListObjects(t *testing.T) { pods, _, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() d := &testDescriber{Output: "test output"} tf.Describer = d tf.Client = &fake.RESTClient{ - Codec: codec, - Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, + NegotiatedSerializer: ns, + Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, } tf.Namespace = "test" @@ -103,12 +103,12 @@ func TestDescribeListObjects(t *testing.T) { func TestDescribeObjectShowEvents(t *testing.T) { pods, _, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() d := &testDescriber{Output: "test output"} tf.Describer = d tf.Client = &fake.RESTClient{ - Codec: codec, - Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, + NegotiatedSerializer: ns, + Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, } tf.Namespace = "test" @@ -123,12 +123,12 @@ func TestDescribeObjectShowEvents(t *testing.T) { func TestDescribeObjectSkipEvents(t *testing.T) { pods, _, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() d := &testDescriber{Output: "test output"} tf.Describer = d tf.Client = &fake.RESTClient{ - Codec: codec, - Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, + NegotiatedSerializer: ns, + Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, } tf.Namespace = "test" diff --git a/pkg/kubectl/cmd/drain_test.go b/pkg/kubectl/cmd/drain_test.go index adc433d8185..a706de18c7f 100644 --- a/pkg/kubectl/cmd/drain_test.go +++ b/pkg/kubectl/cmd/drain_test.go @@ -132,11 +132,11 @@ func TestCordon(t *testing.T) { } for _, test := range tests { - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() new_node := &api.Node{} updated := false tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { m := &MyReq{req} switch { @@ -456,10 +456,10 @@ func TestDrain(t *testing.T) { for _, test := range tests { new_node := &api.Node{} deleted := false - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { m := &MyReq{req} switch { @@ -561,7 +561,7 @@ func refJson(t *testing.T, o runtime.Object) string { t.Fatalf("unexpected error: %v", err) } - _, _, codec := NewAPIFactory() + _, _, codec, _ := NewAPIFactory() json, err := runtime.Encode(codec, &api.SerializedReference{Reference: *ref}) if err != nil { t.Fatalf("unexpected error: %v", err) diff --git a/pkg/kubectl/cmd/exec_test.go b/pkg/kubectl/cmd/exec_test.go index 8a4ed3479ff..919f1680766 100644 --- a/pkg/kubectl/cmd/exec_test.go +++ b/pkg/kubectl/cmd/exec_test.go @@ -124,10 +124,10 @@ func TestPodAndContainer(t *testing.T) { }, } for _, test := range tests { - f, tf, codec := NewAPIFactory() + f, tf, _, ns := NewAPIFactory() tf.Client = &fake.RESTClient{ - Codec: codec, - Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { return nil, nil }), + NegotiatedSerializer: ns, + Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { return nil, nil }), } tf.Namespace = "test" tf.ClientConfig = &restclient.Config{} @@ -180,9 +180,9 @@ func TestExec(t *testing.T) { }, } for _, test := range tests { - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == test.podPath && m == "GET": diff --git a/pkg/kubectl/cmd/expose_test.go b/pkg/kubectl/cmd/expose_test.go index 82067a18671..2338e0c344a 100644 --- a/pkg/kubectl/cmd/expose_test.go +++ b/pkg/kubectl/cmd/expose_test.go @@ -366,10 +366,10 @@ func TestRunExposeService(t *testing.T) { } for _, test := range tests { - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &kubectl.JSONPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == test.calls[m] && m == "GET": diff --git a/pkg/kubectl/cmd/get_test.go b/pkg/kubectl/cmd/get_test.go index 6f680e8a5f9..06aa750e935 100644 --- a/pkg/kubectl/cmd/get_test.go +++ b/pkg/kubectl/cmd/get_test.go @@ -35,6 +35,7 @@ import ( "k8s.io/kubernetes/pkg/client/restclient" "k8s.io/kubernetes/pkg/client/unversioned/fake" "k8s.io/kubernetes/pkg/runtime" + "k8s.io/kubernetes/pkg/runtime/serializer" "k8s.io/kubernetes/pkg/runtime/serializer/json" "k8s.io/kubernetes/pkg/runtime/serializer/streaming" "k8s.io/kubernetes/pkg/util/diff" @@ -117,11 +118,11 @@ func testComponentStatusData() *api.ComponentStatusList { // Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get. func TestGetUnknownSchemaObject(t *testing.T) { - f, tf, codec := NewTestFactory() + f, tf, codec, ns := NewTestFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, - Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &internalType{Name: "foo"})}, + NegotiatedSerializer: ns, + Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &internalType{Name: "foo"})}, } tf.Namespace = "test" tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}} @@ -180,17 +181,21 @@ func TestGetUnknownSchemaObjectListGeneric(t *testing.T) { } for k, test := range testCases { apiCodec := testapi.Default.Codec() + apiNegotiatedSerializer := testapi.Default.NegotiatedSerializer() regularClient := &fake.RESTClient{ - Codec: apiCodec, + NegotiatedSerializer: apiNegotiatedSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(apiCodec, &api.ReplicationController{ObjectMeta: api.ObjectMeta{Name: "foo"}})}, nil }), } f, tf, codec := NewMixedFactory(regularClient) + negotiatedSerializer := serializer.NegotiatedSerializerWrapper( + runtime.SerializerInfo{Serializer: codec}, + runtime.StreamSerializerInfo{}) tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: negotiatedSerializer, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &internalType{Name: "foo"})}, nil }), @@ -228,14 +233,15 @@ func TestGetUnknownSchemaObjectListGeneric(t *testing.T) { // Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get. func TestGetSchemaObject(t *testing.T) { - f, tf, _ := NewTestFactory() + f, tf, _, _ := NewTestFactory() tf.Mapper = testapi.Default.RESTMapper() tf.Typer = api.Scheme codec := testapi.Default.Codec() + ns := testapi.Default.NegotiatedSerializer() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, - Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &api.ReplicationController{ObjectMeta: api.ObjectMeta{Name: "foo"}})}, + NegotiatedSerializer: ns, + Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &api.ReplicationController{ObjectMeta: api.ObjectMeta{Name: "foo"}})}, } tf.Namespace = "test" tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Version: "v1"}}} @@ -252,11 +258,11 @@ func TestGetSchemaObject(t *testing.T) { func TestGetObjects(t *testing.T) { pods, _, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, - Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])}, + NegotiatedSerializer: ns, + Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])}, } tf.Namespace = "test" buf := bytes.NewBuffer([]byte{}) @@ -296,11 +302,11 @@ func TestGetSortedObjects(t *testing.T) { }, } - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, - Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, + NegotiatedSerializer: ns, + Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, } tf.Namespace = "test" tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &unversioned.GroupVersion{Version: "v1"}}} @@ -328,11 +334,11 @@ func TestGetSortedObjects(t *testing.T) { func TestGetObjectsIdentifiedByFile(t *testing.T) { pods, _, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, - Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])}, + NegotiatedSerializer: ns, + Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])}, } tf.Namespace = "test" buf := bytes.NewBuffer([]byte{}) @@ -355,11 +361,11 @@ func TestGetObjectsIdentifiedByFile(t *testing.T) { func TestGetListObjects(t *testing.T) { pods, _, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, - Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, + NegotiatedSerializer: ns, + Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, } tf.Namespace = "test" buf := bytes.NewBuffer([]byte{}) @@ -398,11 +404,11 @@ func extractResourceList(objs []runtime.Object) ([]runtime.Object, error) { func TestGetAllListObjects(t *testing.T) { pods, _, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, - Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, + NegotiatedSerializer: ns, + Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, } tf.Namespace = "test" buf := bytes.NewBuffer([]byte{}) @@ -428,11 +434,11 @@ func TestGetAllListObjects(t *testing.T) { func TestGetListComponentStatus(t *testing.T) { statuses := testComponentStatusData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, - Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, statuses)}, + NegotiatedSerializer: ns, + Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, statuses)}, } tf.Namespace = "test" buf := bytes.NewBuffer([]byte{}) @@ -457,10 +463,10 @@ func TestGetListComponentStatus(t *testing.T) { func TestGetMultipleTypeObjects(t *testing.T) { pods, svc, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch req.URL.Path { case "/namespaces/test/pods": @@ -496,10 +502,10 @@ func TestGetMultipleTypeObjects(t *testing.T) { func TestGetMultipleTypeObjectsAsList(t *testing.T) { pods, svc, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch req.URL.Path { case "/namespaces/test/pods": @@ -556,10 +562,10 @@ func TestGetMultipleTypeObjectsAsList(t *testing.T) { func TestGetMultipleTypeObjectsWithSelector(t *testing.T) { pods, svc, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { if req.URL.Query().Get(unversioned.LabelSelectorQueryParam(testapi.Default.GroupVersion().String())) != "a=b" { t.Fatalf("unexpected request: %#v\n%#v", req.URL, req) @@ -608,10 +614,10 @@ func TestGetMultipleTypeObjectsWithDirectReference(t *testing.T) { }, } - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch req.URL.Path { case "/nodes/foo": @@ -645,11 +651,11 @@ func TestGetMultipleTypeObjectsWithDirectReference(t *testing.T) { func TestGetByNameForcesFlag(t *testing.T) { pods, _, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, - Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])}, + NegotiatedSerializer: ns, + Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])}, } tf.Namespace = "test" buf := bytes.NewBuffer([]byte{}) @@ -705,10 +711,10 @@ func watchTestData() ([]api.Pod, []watch.Event) { func TestWatchSelector(t *testing.T) { pods, events := watchTestData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { if req.URL.Query().Get(unversioned.LabelSelectorQueryParam(testapi.Default.GroupVersion().String())) != "a=b" { t.Fatalf("unexpected request: %#v\n%#v", req.URL, req) @@ -747,10 +753,10 @@ func TestWatchSelector(t *testing.T) { func TestWatchResource(t *testing.T) { pods, events := watchTestData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch req.URL.Path { case "/namespaces/test/pods/foo": @@ -785,10 +791,10 @@ func TestWatchResource(t *testing.T) { func TestWatchResourceIdentifiedByFile(t *testing.T) { pods, events := watchTestData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch req.URL.Path { case "/namespaces/test/replicationcontrollers/cassandra": @@ -824,10 +830,10 @@ func TestWatchResourceIdentifiedByFile(t *testing.T) { func TestWatchOnlyResource(t *testing.T) { pods, events := watchTestData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch req.URL.Path { case "/namespaces/test/pods/foo": diff --git a/pkg/kubectl/cmd/label_test.go b/pkg/kubectl/cmd/label_test.go index d5b5af695da..98db447c33a 100644 --- a/pkg/kubectl/cmd/label_test.go +++ b/pkg/kubectl/cmd/label_test.go @@ -310,7 +310,7 @@ func TestLabelErrors(t *testing.T) { } for k, testCase := range testCases { - f, tf, _ := NewAPIFactory() + f, tf, _, _ := NewAPIFactory() tf.Printer = &testPrinter{} tf.Namespace = "test" tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}} @@ -338,9 +338,9 @@ func TestLabelErrors(t *testing.T) { func TestLabelForResourceFromFile(t *testing.T) { pods, _, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch req.Method { case "GET": @@ -385,9 +385,9 @@ func TestLabelForResourceFromFile(t *testing.T) { func TestLabelMultipleObjects(t *testing.T) { pods, _, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch req.Method { case "GET": diff --git a/pkg/kubectl/cmd/logs_test.go b/pkg/kubectl/cmd/logs_test.go index e7d93e8e562..4bf9ec85906 100644 --- a/pkg/kubectl/cmd/logs_test.go +++ b/pkg/kubectl/cmd/logs_test.go @@ -47,9 +47,9 @@ func TestLog(t *testing.T) { } for _, test := range tests { logContent := "test log content" - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == test.podPath && m == "GET": @@ -95,7 +95,7 @@ func testPod() *api.Pod { } func TestValidateLogFlags(t *testing.T) { - f, _, _ := NewAPIFactory() + f, _, _, _ := NewAPIFactory() tests := []struct { name string diff --git a/pkg/kubectl/cmd/patch_test.go b/pkg/kubectl/cmd/patch_test.go index de0640fc538..bbe0041f497 100644 --- a/pkg/kubectl/cmd/patch_test.go +++ b/pkg/kubectl/cmd/patch_test.go @@ -27,10 +27,10 @@ import ( func TestPatchObject(t *testing.T) { _, svc, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/services/frontend" && (m == "PATCH" || m == "GET"): @@ -59,10 +59,10 @@ func TestPatchObject(t *testing.T) { func TestPatchObjectFromFile(t *testing.T) { _, svc, _ := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/services/frontend" && (m == "PATCH" || m == "GET"): diff --git a/pkg/kubectl/cmd/portforward_test.go b/pkg/kubectl/cmd/portforward_test.go index a1dcf433430..7e4195cbbc5 100644 --- a/pkg/kubectl/cmd/portforward_test.go +++ b/pkg/kubectl/cmd/portforward_test.go @@ -68,9 +68,9 @@ func TestPortForward(t *testing.T) { }, } for _, test := range tests { - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == test.podPath && m == "GET": @@ -138,9 +138,9 @@ func TestPortForwardWithPFlag(t *testing.T) { }, } for _, test := range tests { - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == test.podPath && m == "GET": diff --git a/pkg/kubectl/cmd/replace_test.go b/pkg/kubectl/cmd/replace_test.go index f9aff544bd5..871f475b618 100644 --- a/pkg/kubectl/cmd/replace_test.go +++ b/pkg/kubectl/cmd/replace_test.go @@ -28,10 +28,10 @@ import ( func TestReplaceObject(t *testing.T) { _, _, rc := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers/redis-master" && (m == "GET" || m == "PUT" || m == "DELETE"): @@ -71,10 +71,10 @@ func TestReplaceObject(t *testing.T) { func TestReplaceMultipleObject(t *testing.T) { _, svc, rc := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers/redis-master" && (m == "GET" || m == "PUT" || m == "DELETE"): @@ -118,10 +118,10 @@ func TestReplaceMultipleObject(t *testing.T) { func TestReplaceDirectory(t *testing.T) { _, _, rc := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case strings.HasPrefix(p, "/namespaces/test/replicationcontrollers/") && (m == "GET" || m == "PUT" || m == "DELETE"): @@ -161,10 +161,10 @@ func TestReplaceDirectory(t *testing.T) { func TestForceReplaceObjectNotFound(t *testing.T) { _, _, rc := testData() - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Printer = &testPrinter{} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == "/namespaces/test/replicationcontrollers/redis-master" && m == "DELETE": diff --git a/pkg/kubectl/cmd/rollingupdate_test.go b/pkg/kubectl/cmd/rollingupdate_test.go index d79c0cf4c01..49fd15b39af 100644 --- a/pkg/kubectl/cmd/rollingupdate_test.go +++ b/pkg/kubectl/cmd/rollingupdate_test.go @@ -22,7 +22,7 @@ import ( ) func TestValidateArgs(t *testing.T) { - f, _, _ := NewAPIFactory() + f, _, _, _ := NewAPIFactory() tests := []struct { flags map[string]string diff --git a/pkg/kubectl/cmd/run_test.go b/pkg/kubectl/cmd/run_test.go index ffec144537e..de80a3c1e90 100644 --- a/pkg/kubectl/cmd/run_test.go +++ b/pkg/kubectl/cmd/run_test.go @@ -149,9 +149,9 @@ func TestRunArgsFollowDashRules(t *testing.T) { }, } for _, test := range tests { - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { return &http.Response{StatusCode: 201, Header: defaultHeader(), Body: objBody(codec, &rc.Items[0])}, nil }), @@ -264,10 +264,10 @@ func TestGenerateService(t *testing.T) { } for _, test := range tests { sawPOST := false - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: testapi.Default.GroupVersion()}} tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case test.expectPOST && m == "POST" && p == "/namespaces/namespace/services": diff --git a/pkg/kubectl/cmd/taint_test.go b/pkg/kubectl/cmd/taint_test.go index 86c28404891..9d722ee125e 100644 --- a/pkg/kubectl/cmd/taint_test.go +++ b/pkg/kubectl/cmd/taint_test.go @@ -232,10 +232,10 @@ func TestTaint(t *testing.T) { new_node := &api.Node{} tainted := false - f, tf, codec := NewAPIFactory() + f, tf, codec, ns := NewAPIFactory() tf.Client = &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: ns, Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { m := &MyReq{req} switch { diff --git a/pkg/kubectl/cmd/util/factory.go b/pkg/kubectl/cmd/util/factory.go index aa7d61581c9..2c22149519b 100644 --- a/pkg/kubectl/cmd/util/factory.go +++ b/pkg/kubectl/cmd/util/factory.go @@ -380,7 +380,6 @@ func NewFactory(optionalClientConfig clientcmd.ClientConfig) *Factory { gv := gvk.GroupVersion() cfg.GroupVersion = &gv cfg.APIPath = "/apis" - cfg.Codec = thirdpartyresourcedata.NewCodec(c.ExtensionsClient.RESTClient.Codec(), gvk) cfg.NegotiatedSerializer = thirdpartyresourcedata.NewNegotiatedSerializer(api.Codecs, gvk.Kind, gv, gv) return restclient.RESTClientFor(cfg) } diff --git a/pkg/kubectl/cmd/util/factory_test.go b/pkg/kubectl/cmd/util/factory_test.go index 1bbc66e7804..cee417937ce 100644 --- a/pkg/kubectl/cmd/util/factory_test.go +++ b/pkg/kubectl/cmd/util/factory_test.go @@ -263,7 +263,7 @@ func TestRefetchSchemaWhenValidationFails(t *testing.T) { requests := map[string]int{} c := &fake.RESTClient{ - Codec: testapi.Default.Codec(), + NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case strings.HasPrefix(p, "/swaggerapi") && m == "GET": @@ -320,7 +320,7 @@ func TestValidateCachesSchema(t *testing.T) { requests := map[string]int{} c := &fake.RESTClient{ - Codec: testapi.Default.Codec(), + NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case strings.HasPrefix(p, "/swaggerapi") && m == "GET": diff --git a/pkg/kubectl/resource/builder_test.go b/pkg/kubectl/resource/builder_test.go index 71e33b1d835..11c4b144a60 100644 --- a/pkg/kubectl/resource/builder_test.go +++ b/pkg/kubectl/resource/builder_test.go @@ -69,7 +69,7 @@ func fakeClient() ClientMapper { func fakeClientWith(testName string, t *testing.T, data map[string]string) ClientMapper { return ClientMapperFunc(func(*meta.RESTMapping) (RESTClient, error) { return &fake.RESTClient{ - Codec: testapi.Default.Codec(), + NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { p := req.URL.Path q := req.URL.RawQuery diff --git a/pkg/kubectl/resource/helper_test.go b/pkg/kubectl/resource/helper_test.go index 0413878165b..a81a2556b5a 100644 --- a/pkg/kubectl/resource/helper_test.go +++ b/pkg/kubectl/resource/helper_test.go @@ -103,9 +103,9 @@ func TestHelperDelete(t *testing.T) { } for _, test := range tests { client := &fake.RESTClient{ - Codec: testapi.Default.Codec(), - Resp: test.Resp, - Err: test.HttpErr, + NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), + Resp: test.Resp, + Err: test.HttpErr, } modifier := &Helper{ RESTClient: client, @@ -193,9 +193,9 @@ func TestHelperCreate(t *testing.T) { } for i, test := range tests { client := &fake.RESTClient{ - Codec: testapi.Default.Codec(), - Resp: test.Resp, - Err: test.HttpErr, + NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), + Resp: test.Resp, + Err: test.HttpErr, } modifier := &Helper{ RESTClient: client, @@ -273,9 +273,9 @@ func TestHelperGet(t *testing.T) { } for _, test := range tests { client := &fake.RESTClient{ - Codec: testapi.Default.Codec(), - Resp: test.Resp, - Err: test.HttpErr, + NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), + Resp: test.Resp, + Err: test.HttpErr, } modifier := &Helper{ RESTClient: client, @@ -346,9 +346,9 @@ func TestHelperList(t *testing.T) { } for _, test := range tests { client := &fake.RESTClient{ - Codec: testapi.Default.Codec(), - Resp: test.Resp, - Err: test.HttpErr, + NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), + Resp: test.Resp, + Err: test.HttpErr, } modifier := &Helper{ RESTClient: client, @@ -479,10 +479,10 @@ func TestHelperReplace(t *testing.T) { } for i, test := range tests { client := &fake.RESTClient{ - Client: test.HTTPClient, - Codec: testapi.Default.Codec(), - Resp: test.Resp, - Err: test.HttpErr, + Client: test.HTTPClient, + NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), + Resp: test.Resp, + Err: test.HttpErr, } modifier := &Helper{ RESTClient: client, diff --git a/pkg/kubectl/rolling_updater_test.go b/pkg/kubectl/rolling_updater_test.go index 059239e048b..ef5f9694974 100644 --- a/pkg/kubectl/rolling_updater_test.go +++ b/pkg/kubectl/rolling_updater_test.go @@ -1413,7 +1413,7 @@ func TestUpdateRcWithRetries(t *testing.T) { {StatusCode: 200, Header: header, Body: objBody(codec, rc)}, } fakeClient := &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { switch p, m := req.URL.Path, req.Method; { case p == testapi.Default.ResourcePath("replicationcontrollers", "default", "rc") && m == "PUT": @@ -1504,7 +1504,7 @@ func TestAddDeploymentHash(t *testing.T) { seen := sets.String{} updatedRc := false fakeClient := &fake.RESTClient{ - Codec: codec, + NegotiatedSerializer: testapi.Default.NegotiatedSerializer(), Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { header := http.Header{} header.Set("Content-Type", runtime.ContentTypeJSON)