Commit d8a5420b authored by David Eads's avatar David Eads

remove unneeded factory codec methods

parent be04e7c1
...@@ -28,7 +28,9 @@ import ( ...@@ -28,7 +28,9 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
func TestValidateAnnotationOverwrites(t *testing.T) { func TestValidateAnnotationOverwrites(t *testing.T) {
...@@ -415,7 +417,7 @@ func TestAnnotateErrors(t *testing.T) { ...@@ -415,7 +417,7 @@ func TestAnnotateErrors(t *testing.T) {
} }
for k, testCase := range testCases { for k, testCase := range testCases {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = defaultClientConfig() tf.ClientConfig = defaultClientConfig()
...@@ -444,7 +446,9 @@ func TestAnnotateErrors(t *testing.T) { ...@@ -444,7 +446,9 @@ func TestAnnotateErrors(t *testing.T) {
func TestAnnotateObject(t *testing.T) { func TestAnnotateObject(t *testing.T) {
pods, _, _ := testData() pods, _, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Group: "testgroup", Version: "v1"}, GroupVersion: schema.GroupVersion{Group: "testgroup", Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -494,7 +498,9 @@ func TestAnnotateObject(t *testing.T) { ...@@ -494,7 +498,9 @@ func TestAnnotateObject(t *testing.T) {
func TestAnnotateObjectFromFile(t *testing.T) { func TestAnnotateObjectFromFile(t *testing.T) {
pods, _, _ := testData() pods, _, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Group: "testgroup", Version: "v1"}, GroupVersion: schema.GroupVersion{Group: "testgroup", Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -543,7 +549,7 @@ func TestAnnotateObjectFromFile(t *testing.T) { ...@@ -543,7 +549,7 @@ func TestAnnotateObjectFromFile(t *testing.T) {
} }
func TestAnnotateLocal(t *testing.T) { func TestAnnotateLocal(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Group: "testgroup", Version: "v1"}, GroupVersion: schema.GroupVersion{Group: "testgroup", Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -574,7 +580,8 @@ func TestAnnotateLocal(t *testing.T) { ...@@ -574,7 +580,8 @@ func TestAnnotateLocal(t *testing.T) {
func TestAnnotateMultipleObjects(t *testing.T) { func TestAnnotateMultipleObjects(t *testing.T) {
pods, _, _ := testData() pods, _, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Group: "testgroup", Version: "v1"}, GroupVersion: schema.GroupVersion{Group: "testgroup", Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
......
...@@ -241,8 +241,8 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti ...@@ -241,8 +241,8 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti
output := cmdutil.GetFlagString(cmd, "output") output := cmdutil.GetFlagString(cmd, "output")
shortOutput := output == "name" shortOutput := output == "name"
encoder := f.JSONEncoder() encoder := scheme.DefaultJSONEncoder()
decoder := f.Decoder(false) deserializer := scheme.Codecs.UniversalDeserializer()
mapper := r.Mapper().RESTMapper mapper := r.Mapper().RESTMapper
visitedUids := sets.NewString() visitedUids := sets.NewString()
...@@ -316,7 +316,7 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti ...@@ -316,7 +316,7 @@ func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opti
helper := resource.NewHelper(info.Client, info.Mapping) helper := resource.NewHelper(info.Client, info.Mapping)
patcher := &patcher{ patcher := &patcher{
encoder: encoder, encoder: encoder,
decoder: decoder, decoder: deserializer,
mapping: info.Mapping, mapping: info.Mapping,
helper: helper, helper: helper,
clientFunc: f.UnstructuredClientForMapping, clientFunc: f.UnstructuredClientForMapping,
......
...@@ -36,6 +36,7 @@ import ( ...@@ -36,6 +36,7 @@ import (
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/cmd/util/editor" "k8s.io/kubernetes/pkg/kubectl/cmd/util/editor"
"k8s.io/kubernetes/pkg/kubectl/resource" "k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n" "k8s.io/kubernetes/pkg/kubectl/util/i18n"
) )
...@@ -51,7 +52,6 @@ type SetLastAppliedOptions struct { ...@@ -51,7 +52,6 @@ type SetLastAppliedOptions struct {
ShortOutput bool ShortOutput bool
CreateAnnotation bool CreateAnnotation bool
Output string Output string
Codec runtime.Encoder
PatchBufferList []PatchBuffer PatchBufferList []PatchBuffer
Factory cmdutil.Factory Factory cmdutil.Factory
Out io.Writer Out io.Writer
...@@ -110,7 +110,6 @@ func (o *SetLastAppliedOptions) Complete(f cmdutil.Factory, cmd *cobra.Command) ...@@ -110,7 +110,6 @@ func (o *SetLastAppliedOptions) Complete(f cmdutil.Factory, cmd *cobra.Command)
o.DryRun = cmdutil.GetDryRunFlag(cmd) o.DryRun = cmdutil.GetDryRunFlag(cmd)
o.Output = cmdutil.GetFlagString(cmd, "output") o.Output = cmdutil.GetFlagString(cmd, "output")
o.ShortOutput = o.Output == "name" o.ShortOutput = o.Output == "name"
o.Codec = f.JSONEncoder()
var err error var err error
o.Mapper, o.Typer = f.Object() o.Mapper, o.Typer = f.Object()
...@@ -134,7 +133,7 @@ func (o *SetLastAppliedOptions) Validate(f cmdutil.Factory, cmd *cobra.Command) ...@@ -134,7 +133,7 @@ func (o *SetLastAppliedOptions) Validate(f cmdutil.Factory, cmd *cobra.Command)
if err != nil { if err != nil {
return err return err
} }
patchBuf, diffBuf, patchType, err := editor.GetApplyPatch(info.Object, o.Codec) patchBuf, diffBuf, patchType, err := editor.GetApplyPatch(info.Object, scheme.DefaultJSONEncoder())
if err != nil { if err != nil {
return err return err
} }
...@@ -224,7 +223,7 @@ func (o *SetLastAppliedOptions) getPatch(info *resource.Info) ([]byte, []byte, e ...@@ -224,7 +223,7 @@ func (o *SetLastAppliedOptions) getPatch(info *resource.Info) ([]byte, []byte, e
objMap := map[string]map[string]map[string]string{} objMap := map[string]map[string]map[string]string{}
metadataMap := map[string]map[string]string{} metadataMap := map[string]map[string]string{}
annotationsMap := map[string]string{} annotationsMap := map[string]string{}
localFile, err := runtime.Encode(o.Codec, info.Object) localFile, err := runtime.Encode(scheme.DefaultJSONEncoder(), info.Object)
if err != nil { if err != nil {
return nil, localFile, err return nil, localFile, err
} }
......
...@@ -38,12 +38,14 @@ import ( ...@@ -38,12 +38,14 @@ import (
sptest "k8s.io/apimachinery/pkg/util/strategicpatch/testing" sptest "k8s.io/apimachinery/pkg/util/strategicpatch/testing"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
api "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/apis/extensions"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi" "k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
var ( var (
...@@ -65,7 +67,7 @@ func TestApplyExtraArgsFail(t *testing.T) { ...@@ -65,7 +67,7 @@ func TestApplyExtraArgsFail(t *testing.T) {
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
errBuf := bytes.NewBuffer([]byte{}) errBuf := bytes.NewBuffer([]byte{})
f, _, _, _ := cmdtesting.NewAPIFactory() f, _ := cmdtesting.NewAPIFactory()
c := NewCmdApply("kubectl", f, buf, errBuf) c := NewCmdApply("kubectl", f, buf, errBuf)
if validateApplyArgs(c, []string{"rc"}) == nil { if validateApplyArgs(c, []string{"rc"}) == nil {
t.Fatalf("unexpected non-error") t.Fatalf("unexpected non-error")
...@@ -329,7 +331,9 @@ func TestRunApplyViewLastApplied(t *testing.T) { ...@@ -329,7 +331,9 @@ func TestRunApplyViewLastApplied(t *testing.T) {
}, },
} }
for _, test := range tests { for _, test := range tests {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -384,7 +388,7 @@ func TestApplyObjectWithoutAnnotation(t *testing.T) { ...@@ -384,7 +388,7 @@ func TestApplyObjectWithoutAnnotation(t *testing.T) {
nameRC, rcBytes := readReplicationController(t, filenameRC) nameRC, rcBytes := readReplicationController(t, filenameRC)
pathRC := "/namespaces/test/replicationcontrollers/" + nameRC pathRC := "/namespaces/test/replicationcontrollers/" + nameRC
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -428,7 +432,7 @@ func TestApplyObject(t *testing.T) { ...@@ -428,7 +432,7 @@ func TestApplyObject(t *testing.T) {
pathRC := "/namespaces/test/replicationcontrollers/" + nameRC pathRC := "/namespaces/test/replicationcontrollers/" + nameRC
for _, fn := range testingOpenAPISchemaFns { for _, fn := range testingOpenAPISchemaFns {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -489,7 +493,7 @@ func TestApplyObjectOutput(t *testing.T) { ...@@ -489,7 +493,7 @@ func TestApplyObjectOutput(t *testing.T) {
} }
for _, fn := range testingOpenAPISchemaFns { for _, fn := range testingOpenAPISchemaFns {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -538,7 +542,7 @@ func TestApplyRetry(t *testing.T) { ...@@ -538,7 +542,7 @@ func TestApplyRetry(t *testing.T) {
firstPatch := true firstPatch := true
retry := false retry := false
getCount := 0 getCount := 0
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -595,7 +599,7 @@ func TestApplyNonExistObject(t *testing.T) { ...@@ -595,7 +599,7 @@ func TestApplyNonExistObject(t *testing.T) {
pathRC := "/namespaces/test/replicationcontrollers" pathRC := "/namespaces/test/replicationcontrollers"
pathNameRC := pathRC + "/" + nameRC pathNameRC := pathRC + "/" + nameRC
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -639,7 +643,7 @@ func TestApplyEmptyPatch(t *testing.T) { ...@@ -639,7 +643,7 @@ func TestApplyEmptyPatch(t *testing.T) {
var body []byte var body []byte
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -713,7 +717,7 @@ func testApplyMultipleObjects(t *testing.T, asList bool) { ...@@ -713,7 +717,7 @@ func testApplyMultipleObjects(t *testing.T, asList bool) {
pathSVC := "/namespaces/test/services/" + nameSVC pathSVC := "/namespaces/test/services/" + nameSVC
for _, fn := range testingOpenAPISchemaFns { for _, fn := range testingOpenAPISchemaFns {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -796,7 +800,7 @@ func TestApplyNULLPreservation(t *testing.T) { ...@@ -796,7 +800,7 @@ func TestApplyNULLPreservation(t *testing.T) {
deploymentBytes := readDeploymentFromFile(t, filenameDeployObjServerside) deploymentBytes := readDeploymentFromFile(t, filenameDeployObjServerside)
for _, fn := range testingOpenAPISchemaFns { for _, fn := range testingOpenAPISchemaFns {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -868,7 +872,7 @@ func TestUnstructuredApply(t *testing.T) { ...@@ -868,7 +872,7 @@ func TestUnstructuredApply(t *testing.T) {
verifiedPatch := false verifiedPatch := false
for _, fn := range testingOpenAPISchemaFns { for _, fn := range testingOpenAPISchemaFns {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -935,7 +939,7 @@ func TestUnstructuredIdempotentApply(t *testing.T) { ...@@ -935,7 +939,7 @@ func TestUnstructuredIdempotentApply(t *testing.T) {
verifiedPatch := false verifiedPatch := false
for _, fn := range testingOpenAPISchemaFns { for _, fn := range testingOpenAPISchemaFns {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -1063,7 +1067,9 @@ func TestRunApplySetLastApplied(t *testing.T) { ...@@ -1063,7 +1067,9 @@ func TestRunApplySetLastApplied(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
t.Run(test.name, func(t *testing.T) { t.Run(test.name, func(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -1153,7 +1159,7 @@ func TestForceApply(t *testing.T) { ...@@ -1153,7 +1159,7 @@ func TestForceApply(t *testing.T) {
for _, fn := range testingOpenAPISchemaFns { for _, fn := range testingOpenAPISchemaFns {
deleted := false deleted := false
counts := map[string]int{} counts := map[string]int{}
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
......
...@@ -38,6 +38,7 @@ import ( ...@@ -38,6 +38,7 @@ import (
api "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
type fakeRemoteAttach struct { type fakeRemoteAttach struct {
...@@ -138,7 +139,10 @@ func TestPodAndContainerAttach(t *testing.T) { ...@@ -138,7 +139,10 @@ func TestPodAndContainerAttach(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
...@@ -215,7 +219,10 @@ func TestAttach(t *testing.T) { ...@@ -215,7 +219,10 @@ func TestAttach(t *testing.T) {
}, },
} }
for _, test := range tests { for _, test := range tests {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
...@@ -302,7 +309,10 @@ func TestAttachWarnings(t *testing.T) { ...@@ -302,7 +309,10 @@ func TestAttachWarnings(t *testing.T) {
}, },
} }
for _, test := range tests { for _, test := range tests {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
......
...@@ -52,6 +52,7 @@ go_test( ...@@ -52,6 +52,7 @@ go_test(
srcs = ["cani_test.go"], srcs = ["cani_test.go"],
embed = [":go_default_library"], embed = [":go_default_library"],
deps = [ deps = [
"//pkg/api/legacyscheme:go_default_library",
"//pkg/kubectl/cmd/testing:go_default_library", "//pkg/kubectl/cmd/testing:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library", "//vendor/k8s.io/client-go/rest:go_default_library",
......
...@@ -27,6 +27,7 @@ import ( ...@@ -27,6 +27,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
...@@ -119,7 +120,9 @@ func TestRunAccessCheck(t *testing.T) { ...@@ -119,7 +120,9 @@ func TestRunAccessCheck(t *testing.T) {
test.o.Out = ioutil.Discard test.o.Out = ioutil.Discard
test.o.Err = ioutil.Discard test.o.Err = ioutil.Discard
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Group: "", Version: "v1"}, GroupVersion: schema.GroupVersion{Group: "", Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
......
...@@ -143,7 +143,7 @@ func RunAutoscale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s ...@@ -143,7 +143,7 @@ func RunAutoscale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
ObjectTyper: typer, ObjectTyper: typer,
RESTMapper: mapper, RESTMapper: mapper,
ClientMapper: resource.ClientMapperFunc(f.ClientForMapping), ClientMapper: resource.ClientMapperFunc(f.ClientForMapping),
Decoder: f.Decoder(true), Decoder: cmdutil.InternalVersionDecoder(),
} }
hpa, err := resourceMapper.InfoForObject(object, nil) hpa, err := resourceMapper.InfoForObject(object, nil)
if err != nil { if err != nil {
...@@ -159,7 +159,7 @@ func RunAutoscale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s ...@@ -159,7 +159,7 @@ func RunAutoscale(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
return cmdutil.PrintObject(cmd, object, out) return cmdutil.PrintObject(cmd, object, out)
} }
if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), hpa, f.JSONEncoder()); err != nil { if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), hpa, cmdutil.InternalVersionJSONEncoder()); err != nil {
return err return err
} }
......
...@@ -30,7 +30,7 @@ func TestSetupOutputWriterNoOp(t *testing.T) { ...@@ -30,7 +30,7 @@ func TestSetupOutputWriterNoOp(t *testing.T) {
tests := []string{"", "-"} tests := []string{"", "-"}
for _, test := range tests { for _, test := range tests {
out := &bytes.Buffer{} out := &bytes.Buffer{}
f, _, _, _ := cmdtesting.NewAPIFactory() f, _ := cmdtesting.NewAPIFactory()
cmd := NewCmdClusterInfoDump(f, os.Stdout) cmd := NewCmdClusterInfoDump(f, os.Stdout)
cmd.Flag("output-directory").Value.Set(test) cmd.Flag("output-directory").Value.Set(test)
writer := setupOutputWriter(cmd, out, "/some/file/that/should/be/ignored") writer := setupOutputWriter(cmd, out, "/some/file/that/should/be/ignored")
...@@ -50,7 +50,7 @@ func TestSetupOutputWriterFile(t *testing.T) { ...@@ -50,7 +50,7 @@ func TestSetupOutputWriterFile(t *testing.T) {
defer os.RemoveAll(dir) defer os.RemoveAll(dir)
out := &bytes.Buffer{} out := &bytes.Buffer{}
f, _, _, _ := cmdtesting.NewAPIFactory() f, _ := cmdtesting.NewAPIFactory()
cmd := NewCmdClusterInfoDump(f, os.Stdout) cmd := NewCmdClusterInfoDump(f, os.Stdout)
cmd.Flag("output-directory").Value.Set(dir) cmd.Flag("output-directory").Value.Set(dir)
writer := setupOutputWriter(cmd, out, file) writer := setupOutputWriter(cmd, out, file)
......
...@@ -36,6 +36,7 @@ import ( ...@@ -36,6 +36,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
apitesting "k8s.io/kubernetes/pkg/api/testing" apitesting "k8s.io/kubernetes/pkg/api/testing"
api "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core"
...@@ -176,7 +177,9 @@ func stringBody(body string) io.ReadCloser { ...@@ -176,7 +177,9 @@ func stringBody(body string) io.ReadCloser {
} }
func Example_printMultiContainersReplicationControllerWithWide() { func Example_printMultiContainersReplicationControllerWithWide() {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
...@@ -224,7 +227,9 @@ func Example_printMultiContainersReplicationControllerWithWide() { ...@@ -224,7 +227,9 @@ func Example_printMultiContainersReplicationControllerWithWide() {
} }
func Example_printReplicationController() { func Example_printReplicationController() {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
...@@ -271,7 +276,9 @@ func Example_printReplicationController() { ...@@ -271,7 +276,9 @@ func Example_printReplicationController() {
} }
func Example_printPodWithWideFormat() { func Example_printPodWithWideFormat() {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
...@@ -307,7 +314,9 @@ func Example_printPodWithWideFormat() { ...@@ -307,7 +314,9 @@ func Example_printPodWithWideFormat() {
} }
func Example_printPodWithShowLabels() { func Example_printPodWithShowLabels() {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
...@@ -438,7 +447,9 @@ func newAllPhasePodList() *api.PodList { ...@@ -438,7 +447,9 @@ func newAllPhasePodList() *api.PodList {
} }
func Example_printPodHideTerminated() { func Example_printPodHideTerminated() {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
...@@ -470,7 +481,9 @@ func Example_printPodHideTerminated() { ...@@ -470,7 +481,9 @@ func Example_printPodHideTerminated() {
} }
func Example_printPodShowAll() { func Example_printPodShowAll() {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
...@@ -491,7 +504,9 @@ func Example_printPodShowAll() { ...@@ -491,7 +504,9 @@ func Example_printPodShowAll() {
} }
func Example_printServiceWithLabels() { func Example_printServiceWithLabels() {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
......
...@@ -96,7 +96,6 @@ type ConvertOptions struct { ...@@ -96,7 +96,6 @@ type ConvertOptions struct {
builder *resource.Builder builder *resource.Builder
local bool local bool
encoder runtime.Encoder
out io.Writer out io.Writer
printer printers.ResourcePrinter printer printers.ResourcePrinter
...@@ -155,7 +154,6 @@ func (o *ConvertOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.C ...@@ -155,7 +154,6 @@ func (o *ConvertOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.C
// TODO: once printing is abstracted, this should be handled at flag declaration time // TODO: once printing is abstracted, this should be handled at flag declaration time
cmd.Flags().Set("output", outputFormat) cmd.Flags().Set("output", outputFormat)
} }
o.encoder = f.JSONEncoder()
o.printer, err = cmdutil.PrinterForOptions(cmdutil.ExtractCmdPrintOptions(cmd, false)) o.printer, err = cmdutil.PrinterForOptions(cmdutil.ExtractCmdPrintOptions(cmd, false))
return err return err
} }
...@@ -178,7 +176,7 @@ func (o *ConvertOptions) RunConvert() error { ...@@ -178,7 +176,7 @@ func (o *ConvertOptions) RunConvert() error {
return fmt.Errorf("no objects passed to convert") return fmt.Errorf("no objects passed to convert")
} }
objects, err := asVersionedObject(infos, !singleItemImplied, o.specifiedOutputVersion, o.encoder) objects, err := asVersionedObject(infos, !singleItemImplied, o.specifiedOutputVersion, cmdutil.InternalVersionJSONEncoder())
if err != nil { if err != nil {
return err return err
} }
......
...@@ -101,7 +101,7 @@ func TestConvertObject(t *testing.T) { ...@@ -101,7 +101,7 @@ func TestConvertObject(t *testing.T) {
for _, tc := range testcases { for _, tc := range testcases {
for _, field := range tc.fields { for _, field := range tc.fields {
t.Run(fmt.Sprintf("%s %s", tc.name, field), func(t *testing.T) { t.Run(fmt.Sprintf("%s %s", tc.name, field), func(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
t.Fatalf("unexpected request: %#v\n%#v", req.URL, req) t.Fatalf("unexpected request: %#v\n%#v", req.URL, req)
......
...@@ -191,7 +191,7 @@ func (o *CreateOptions) RunCreate(f cmdutil.Factory, cmd *cobra.Command) error { ...@@ -191,7 +191,7 @@ func (o *CreateOptions) RunCreate(f cmdutil.Factory, cmd *cobra.Command) error {
if err != nil { if err != nil {
return err return err
} }
if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), info, f.JSONEncoder()); err != nil { if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), info, cmdutil.InternalVersionJSONEncoder()); err != nil {
return cmdutil.AddSourceToErr("creating", info.Source, err) return cmdutil.AddSourceToErr("creating", info.Source, err)
} }
...@@ -339,7 +339,7 @@ func RunCreateSubcommand(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, o ...@@ -339,7 +339,7 @@ func RunCreateSubcommand(f cmdutil.Factory, cmd *cobra.Command, out io.Writer, o
if err != nil { if err != nil {
return err return err
} }
if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), info, f.JSONEncoder()); err != nil { if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), info, cmdutil.InternalVersionJSONEncoder()); err != nil {
return err return err
} }
obj = info.Object obj = info.Object
......
...@@ -32,7 +32,7 @@ import ( ...@@ -32,7 +32,7 @@ import (
func TestCreateClusterRole(t *testing.T) { func TestCreateClusterRole(t *testing.T) {
clusterRoleName := "my-cluster-role" clusterRoleName := "my-cluster-role"
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.Namespace = "test" tf.Namespace = "test"
tf.Client = &fake.RESTClient{} tf.Client = &fake.RESTClient{}
tf.ClientConfig = defaultClientConfig() tf.ClientConfig = defaultClientConfig()
...@@ -147,7 +147,7 @@ func TestCreateClusterRole(t *testing.T) { ...@@ -147,7 +147,7 @@ func TestCreateClusterRole(t *testing.T) {
} }
func TestClusterRoleValidate(t *testing.T) { func TestClusterRoleValidate(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.Namespace = "test" tf.Namespace = "test"
tests := map[string]struct { tests := map[string]struct {
......
...@@ -30,6 +30,7 @@ import ( ...@@ -30,6 +30,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
...@@ -66,7 +67,8 @@ func TestCreateClusterRoleBinding(t *testing.T) { ...@@ -66,7 +67,8 @@ func TestCreateClusterRoleBinding(t *testing.T) {
}, },
} }
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
info, _ := runtime.SerializerInfoForMediaType(ns.SupportedMediaTypes(), runtime.ContentTypeJSON) info, _ := runtime.SerializerInfoForMediaType(ns.SupportedMediaTypes(), runtime.ContentTypeJSON)
encoder := ns.EncoderForVersion(info.Serializer, groupVersion) encoder := ns.EncoderForVersion(info.Serializer, groupVersion)
......
...@@ -24,13 +24,18 @@ import ( ...@@ -24,13 +24,18 @@ import (
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
func TestCreateConfigMap(t *testing.T) { func TestCreateConfigMap(t *testing.T) {
configMap := &v1.ConfigMap{} configMap := &v1.ConfigMap{}
configMap.Name = "my-configmap" configMap.Name = "my-configmap"
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Group: "", Version: "v1"}, GroupVersion: schema.GroupVersion{Group: "", Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
......
...@@ -26,6 +26,7 @@ import ( ...@@ -26,6 +26,7 @@ import (
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
...@@ -73,7 +74,9 @@ func Test_generatorFromName(t *testing.T) { ...@@ -73,7 +74,9 @@ func Test_generatorFromName(t *testing.T) {
func TestCreateDeployment(t *testing.T) { func TestCreateDeployment(t *testing.T) {
depName := "jonny-dep" depName := "jonny-dep"
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -100,7 +103,9 @@ func TestCreateDeployment(t *testing.T) { ...@@ -100,7 +103,9 @@ func TestCreateDeployment(t *testing.T) {
func TestCreateDeploymentNoImage(t *testing.T) { func TestCreateDeploymentNoImage(t *testing.T) {
depName := "jonny-dep" depName := "jonny-dep"
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
......
...@@ -24,13 +24,18 @@ import ( ...@@ -24,13 +24,18 @@ import (
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
func TestCreateNamespace(t *testing.T) { func TestCreateNamespace(t *testing.T) {
namespaceObject := &v1.Namespace{} namespaceObject := &v1.Namespace{}
namespaceObject.Name = "my-namespace" namespaceObject.Name = "my-namespace"
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
......
...@@ -25,12 +25,15 @@ import ( ...@@ -25,12 +25,15 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
func TestCreatePdb(t *testing.T) { func TestCreatePdb(t *testing.T) {
pdbName := "my-pdb" pdbName := "my-pdb"
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Group: "policy", Version: "v1beta1"}, GroupVersion: schema.GroupVersion{Group: "policy", Version: "v1beta1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
......
...@@ -25,12 +25,15 @@ import ( ...@@ -25,12 +25,15 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
func TestCreatePriorityClass(t *testing.T) { func TestCreatePriorityClass(t *testing.T) {
pcName := "my-pc" pcName := "my-pc"
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Group: "scheduling.k8s.io", Version: "v1alpha1"}, GroupVersion: schema.GroupVersion{Group: "scheduling.k8s.io", Version: "v1alpha1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
......
...@@ -24,13 +24,18 @@ import ( ...@@ -24,13 +24,18 @@ import (
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
func TestCreateQuota(t *testing.T) { func TestCreateQuota(t *testing.T) {
resourceQuotaObject := &v1.ResourceQuota{} resourceQuotaObject := &v1.ResourceQuota{}
resourceQuotaObject.Name = "my-quota" resourceQuotaObject.Name = "my-quota"
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
......
...@@ -34,7 +34,7 @@ import ( ...@@ -34,7 +34,7 @@ import (
func TestCreateRole(t *testing.T) { func TestCreateRole(t *testing.T) {
roleName := "my-role" roleName := "my-role"
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.Namespace = "test" tf.Namespace = "test"
tf.Client = &fake.RESTClient{} tf.Client = &fake.RESTClient{}
tf.ClientConfig = defaultClientConfig() tf.ClientConfig = defaultClientConfig()
...@@ -146,7 +146,7 @@ func TestCreateRole(t *testing.T) { ...@@ -146,7 +146,7 @@ func TestCreateRole(t *testing.T) {
} }
func TestValidate(t *testing.T) { func TestValidate(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.Namespace = "test" tf.Namespace = "test"
tests := map[string]struct { tests := map[string]struct {
...@@ -345,7 +345,7 @@ func TestValidate(t *testing.T) { ...@@ -345,7 +345,7 @@ func TestValidate(t *testing.T) {
func TestComplete(t *testing.T) { func TestComplete(t *testing.T) {
roleName := "my-role" roleName := "my-role"
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.Namespace = "test" tf.Namespace = "test"
tf.Client = &fake.RESTClient{} tf.Client = &fake.RESTClient{}
tf.ClientConfig = defaultClientConfig() tf.ClientConfig = defaultClientConfig()
......
...@@ -30,6 +30,7 @@ import ( ...@@ -30,6 +30,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
...@@ -68,7 +69,8 @@ func TestCreateRoleBinding(t *testing.T) { ...@@ -68,7 +69,8 @@ func TestCreateRoleBinding(t *testing.T) {
}, },
} }
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
info, _ := runtime.SerializerInfoForMediaType(ns.SupportedMediaTypes(), runtime.ContentTypeJSON) info, _ := runtime.SerializerInfoForMediaType(ns.SupportedMediaTypes(), runtime.ContentTypeJSON)
encoder := ns.EncoderForVersion(info.Serializer, groupVersion) encoder := ns.EncoderForVersion(info.Serializer, groupVersion)
......
...@@ -24,7 +24,9 @@ import ( ...@@ -24,7 +24,9 @@ import (
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
func TestCreateSecretGeneric(t *testing.T) { func TestCreateSecretGeneric(t *testing.T) {
...@@ -35,7 +37,10 @@ func TestCreateSecretGeneric(t *testing.T) { ...@@ -35,7 +37,10 @@ func TestCreateSecretGeneric(t *testing.T) {
}, },
} }
secretObject.Name = "my-secret" secretObject.Name = "my-secret"
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
...@@ -65,7 +70,10 @@ func TestCreateSecretGeneric(t *testing.T) { ...@@ -65,7 +70,10 @@ func TestCreateSecretGeneric(t *testing.T) {
func TestCreateSecretDockerRegistry(t *testing.T) { func TestCreateSecretDockerRegistry(t *testing.T) {
secretObject := &v1.Secret{} secretObject := &v1.Secret{}
secretObject.Name = "my-secret" secretObject.Name = "my-secret"
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
......
...@@ -24,13 +24,18 @@ import ( ...@@ -24,13 +24,18 @@ import (
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
func TestCreateService(t *testing.T) { func TestCreateService(t *testing.T) {
service := &v1.Service{} service := &v1.Service{}
service.Name = "my-service" service.Name = "my-service"
f, tf, codec, negSer := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
negSer := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: negSer, NegotiatedSerializer: negSer,
...@@ -59,7 +64,10 @@ func TestCreateService(t *testing.T) { ...@@ -59,7 +64,10 @@ func TestCreateService(t *testing.T) {
func TestCreateServiceNodePort(t *testing.T) { func TestCreateServiceNodePort(t *testing.T) {
service := &v1.Service{} service := &v1.Service{}
service.Name = "my-node-port-service" service.Name = "my-node-port-service"
f, tf, codec, negSer := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
negSer := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: negSer, NegotiatedSerializer: negSer,
...@@ -88,7 +96,10 @@ func TestCreateServiceNodePort(t *testing.T) { ...@@ -88,7 +96,10 @@ func TestCreateServiceNodePort(t *testing.T) {
func TestCreateServiceExternalName(t *testing.T) { func TestCreateServiceExternalName(t *testing.T) {
service := &v1.Service{} service := &v1.Service{}
service.Name = "my-external-name-service" service.Name = "my-external-name-service"
f, tf, codec, negSer := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
negSer := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: negSer, NegotiatedSerializer: negSer,
......
...@@ -24,13 +24,18 @@ import ( ...@@ -24,13 +24,18 @@ import (
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
func TestCreateServiceAccount(t *testing.T) { func TestCreateServiceAccount(t *testing.T) {
serviceAccountObject := &v1.ServiceAccount{} serviceAccountObject := &v1.ServiceAccount{}
serviceAccountObject.Name = "my-service-account" serviceAccountObject.Name = "my-service-account"
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
......
...@@ -23,7 +23,9 @@ import ( ...@@ -23,7 +23,9 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
func TestExtraArgsFail(t *testing.T) { func TestExtraArgsFail(t *testing.T) {
...@@ -31,7 +33,7 @@ func TestExtraArgsFail(t *testing.T) { ...@@ -31,7 +33,7 @@ func TestExtraArgsFail(t *testing.T) {
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
errBuf := bytes.NewBuffer([]byte{}) errBuf := bytes.NewBuffer([]byte{})
f, _, _, _ := cmdtesting.NewAPIFactory() f, _ := cmdtesting.NewAPIFactory()
c := NewCmdCreate(f, buf, errBuf) c := NewCmdCreate(f, buf, errBuf)
options := CreateOptions{} options := CreateOptions{}
if options.ValidateArgs(c, []string{"rc"}) == nil { if options.ValidateArgs(c, []string{"rc"}) == nil {
...@@ -44,7 +46,9 @@ func TestCreateObject(t *testing.T) { ...@@ -44,7 +46,9 @@ func TestCreateObject(t *testing.T) {
_, _, rc := testData() _, _, rc := testData()
rc.Items[0].Name = "redis-master-controller" rc.Items[0].Name = "redis-master-controller"
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -77,7 +81,9 @@ func TestCreateMultipleObject(t *testing.T) { ...@@ -77,7 +81,9 @@ func TestCreateMultipleObject(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
_, svc, rc := testData() _, svc, rc := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -114,7 +120,9 @@ func TestCreateDirectory(t *testing.T) { ...@@ -114,7 +120,9 @@ func TestCreateDirectory(t *testing.T) {
_, _, rc := testData() _, _, rc := testData()
rc.Items[0].Name = "name" rc.Items[0].Name = "name"
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
......
...@@ -33,11 +33,13 @@ import ( ...@@ -33,11 +33,13 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/dynamic" "k8s.io/client-go/dynamic"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/resource" "k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
var unstructuredSerializer = dynamic.ContentConfig().NegotiatedSerializer var unstructuredSerializer = dynamic.ContentConfig().NegotiatedSerializer
...@@ -54,7 +56,9 @@ func TestDeleteObjectByTuple(t *testing.T) { ...@@ -54,7 +56,9 @@ func TestDeleteObjectByTuple(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
_, _, rc := testData() _, _, rc := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -116,7 +120,9 @@ func TestOrphanDependentsInDeleteObject(t *testing.T) { ...@@ -116,7 +120,9 @@ func TestOrphanDependentsInDeleteObject(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
_, _, rc := testData() _, _, rc := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
var expectedOrphanDependents *bool var expectedOrphanDependents *bool
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -164,7 +170,9 @@ func TestDeleteNamedObject(t *testing.T) { ...@@ -164,7 +170,9 @@ func TestDeleteNamedObject(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
_, _, rc := testData() _, _, rc := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -213,7 +221,9 @@ func TestDeleteObject(t *testing.T) { ...@@ -213,7 +221,9 @@ func TestDeleteObject(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
_, _, rc := testData() _, _, rc := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -270,7 +280,9 @@ func TestDeleteObjectGraceZero(t *testing.T) { ...@@ -270,7 +280,9 @@ func TestDeleteObjectGraceZero(t *testing.T) {
objectDeletionWaitInterval = time.Millisecond objectDeletionWaitInterval = time.Millisecond
count := 0 count := 0
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -318,7 +330,7 @@ func TestDeleteObjectGraceZero(t *testing.T) { ...@@ -318,7 +330,7 @@ func TestDeleteObjectGraceZero(t *testing.T) {
func TestDeleteObjectNotFound(t *testing.T) { func TestDeleteObjectNotFound(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -354,7 +366,7 @@ func TestDeleteObjectNotFound(t *testing.T) { ...@@ -354,7 +366,7 @@ func TestDeleteObjectNotFound(t *testing.T) {
func TestDeleteObjectIgnoreNotFound(t *testing.T) { func TestDeleteObjectIgnoreNotFound(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -389,7 +401,8 @@ func TestDeleteAllNotFound(t *testing.T) { ...@@ -389,7 +401,8 @@ func TestDeleteAllNotFound(t *testing.T) {
svc.Items = append(svc.Items, api.Service{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}) svc.Items = append(svc.Items, api.Service{ObjectMeta: metav1.ObjectMeta{Name: "foo"}})
notFoundError := &errors.NewNotFound(api.Resource("services"), "foo").ErrStatus notFoundError := &errors.NewNotFound(api.Resource("services"), "foo").ErrStatus
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -433,7 +446,8 @@ func TestDeleteAllIgnoreNotFound(t *testing.T) { ...@@ -433,7 +446,8 @@ func TestDeleteAllIgnoreNotFound(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
_, svc, _ := testData() _, svc, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
// Add an item to the list which will result in a 404 on delete // Add an item to the list which will result in a 404 on delete
svc.Items = append(svc.Items, api.Service{ObjectMeta: metav1.ObjectMeta{Name: "foo"}}) svc.Items = append(svc.Items, api.Service{ObjectMeta: metav1.ObjectMeta{Name: "foo"}})
...@@ -473,7 +487,9 @@ func TestDeleteMultipleObject(t *testing.T) { ...@@ -473,7 +487,9 @@ func TestDeleteMultipleObject(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
_, svc, rc := testData() _, svc, rc := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -507,7 +523,9 @@ func TestDeleteMultipleObjectContinueOnMissing(t *testing.T) { ...@@ -507,7 +523,9 @@ func TestDeleteMultipleObjectContinueOnMissing(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
_, svc, _ := testData() _, svc, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -550,7 +568,9 @@ func TestDeleteMultipleObjectContinueOnMissing(t *testing.T) { ...@@ -550,7 +568,9 @@ func TestDeleteMultipleObjectContinueOnMissing(t *testing.T) {
func TestDeleteMultipleResourcesWithTheSameName(t *testing.T) { func TestDeleteMultipleResourcesWithTheSameName(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
_, svc, rc := testData() _, svc, rc := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -587,7 +607,9 @@ func TestDeleteDirectory(t *testing.T) { ...@@ -587,7 +607,9 @@ func TestDeleteDirectory(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
_, _, rc := testData() _, _, rc := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -618,7 +640,9 @@ func TestDeleteMultipleSelector(t *testing.T) { ...@@ -618,7 +640,9 @@ func TestDeleteMultipleSelector(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
pods, svc, _ := testData() pods, svc, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -682,7 +706,7 @@ func TestResourceErrors(t *testing.T) { ...@@ -682,7 +706,7 @@ func TestResourceErrors(t *testing.T) {
} }
for k, testCase := range testCases { for k, testCase := range testCases {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = defaultClientConfig() tf.ClientConfig = defaultClientConfig()
......
...@@ -24,13 +24,16 @@ import ( ...@@ -24,13 +24,16 @@ import (
"testing" "testing"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
// Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get. // Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get.
func TestDescribeUnknownSchemaObject(t *testing.T) { func TestDescribeUnknownSchemaObject(t *testing.T) {
d := &testDescriber{Output: "test output"} d := &testDescriber{Output: "test output"}
f, tf, codec, _ := cmdtesting.NewTestFactory() f, tf := cmdtesting.NewTestFactory()
_, _, codec := cmdtesting.NewExternalScheme()
tf.Describer = d tf.Describer = d
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -54,7 +57,9 @@ func TestDescribeUnknownSchemaObject(t *testing.T) { ...@@ -54,7 +57,9 @@ func TestDescribeUnknownSchemaObject(t *testing.T) {
// Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get. // Verifies that schemas that are not in the master tree of Kubernetes can be retrieved via Get.
func TestDescribeUnknownNamespacedSchemaObject(t *testing.T) { func TestDescribeUnknownNamespacedSchemaObject(t *testing.T) {
d := &testDescriber{Output: "test output"} d := &testDescriber{Output: "test output"}
f, tf, codec, _ := cmdtesting.NewTestFactory() f, tf := cmdtesting.NewTestFactory()
_, _, codec := cmdtesting.NewExternalScheme()
tf.Describer = d tf.Describer = d
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -77,7 +82,9 @@ func TestDescribeUnknownNamespacedSchemaObject(t *testing.T) { ...@@ -77,7 +82,9 @@ func TestDescribeUnknownNamespacedSchemaObject(t *testing.T) {
func TestDescribeObject(t *testing.T) { func TestDescribeObject(t *testing.T) {
_, _, rc := testData() _, _, rc := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
d := &testDescriber{Output: "test output"} d := &testDescriber{Output: "test output"}
tf.Describer = d tf.Describer = d
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
...@@ -110,7 +117,9 @@ func TestDescribeObject(t *testing.T) { ...@@ -110,7 +117,9 @@ func TestDescribeObject(t *testing.T) {
func TestDescribeListObjects(t *testing.T) { func TestDescribeListObjects(t *testing.T) {
pods, _, _ := testData() pods, _, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
d := &testDescriber{Output: "test output"} d := &testDescriber{Output: "test output"}
tf.Describer = d tf.Describer = d
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
...@@ -130,7 +139,9 @@ func TestDescribeListObjects(t *testing.T) { ...@@ -130,7 +139,9 @@ func TestDescribeListObjects(t *testing.T) {
func TestDescribeObjectShowEvents(t *testing.T) { func TestDescribeObjectShowEvents(t *testing.T) {
pods, _, _ := testData() pods, _, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
d := &testDescriber{Output: "test output"} d := &testDescriber{Output: "test output"}
tf.Describer = d tf.Describer = d
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
...@@ -151,7 +162,9 @@ func TestDescribeObjectShowEvents(t *testing.T) { ...@@ -151,7 +162,9 @@ func TestDescribeObjectShowEvents(t *testing.T) {
func TestDescribeObjectSkipEvents(t *testing.T) { func TestDescribeObjectSkipEvents(t *testing.T) {
pods, _, _ := testData() pods, _, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
d := &testDescriber{Output: "test output"} d := &testDescriber{Output: "test output"}
tf.Describer = d tf.Describer = d
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
...@@ -171,7 +184,7 @@ func TestDescribeObjectSkipEvents(t *testing.T) { ...@@ -171,7 +184,7 @@ func TestDescribeObjectSkipEvents(t *testing.T) {
} }
func TestDescribeHelpMessage(t *testing.T) { func TestDescribeHelpMessage(t *testing.T) {
f, _, _, _ := cmdtesting.NewAPIFactory() f, _ := cmdtesting.NewAPIFactory()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
buferr := bytes.NewBuffer([]byte{}) buferr := bytes.NewBuffer([]byte{})
......
...@@ -439,7 +439,7 @@ func RunDiff(f cmdutil.Factory, diff *DiffProgram, options *DiffOptions, from, t ...@@ -439,7 +439,7 @@ func RunDiff(f cmdutil.Factory, diff *DiffProgram, options *DiffOptions, from, t
obj := InfoObject{ obj := InfoObject{
Info: info, Info: info,
Parser: parser, Parser: parser,
Encoder: f.JSONEncoder(), Encoder: cmdutil.InternalVersionJSONEncoder(),
} }
return differ.Diff(obj, printer) return differ.Diff(obj, printer)
......
...@@ -50,6 +50,7 @@ import ( ...@@ -50,6 +50,7 @@ import (
"k8s.io/kubernetes/pkg/apis/extensions" "k8s.io/kubernetes/pkg/apis/extensions"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
const ( const (
...@@ -149,7 +150,10 @@ func TestCordon(t *testing.T) { ...@@ -149,7 +150,10 @@ func TestCordon(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
new_node := &corev1.Node{} new_node := &corev1.Node{}
updated := false updated := false
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
...@@ -596,7 +600,10 @@ func TestDrain(t *testing.T) { ...@@ -596,7 +600,10 @@ func TestDrain(t *testing.T) {
new_node := &corev1.Node{} new_node := &corev1.Node{}
deleted := false deleted := false
evicted := false evicted := false
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
...@@ -817,7 +824,7 @@ func TestDeletePods(t *testing.T) { ...@@ -817,7 +824,7 @@ func TestDeletePods(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
f, _, _, _ := cmdtesting.NewAPIFactory() f, _ := cmdtesting.NewAPIFactory()
o := DrainOptions{Factory: f} o := DrainOptions{Factory: f}
o.mapper, _ = f.Object() o.mapper, _ = f.Object()
o.Out = os.Stdout o.Out = os.Stdout
......
...@@ -206,7 +206,7 @@ func TestEdit(t *testing.T) { ...@@ -206,7 +206,7 @@ func TestEdit(t *testing.T) {
t.Fatalf("%s: %v", name, err) t.Fatalf("%s: %v", name, err)
} }
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClientForMappingFunc = func(mapping *meta.RESTMapping) (resource.RESTClient, error) { tf.UnstructuredClientForMappingFunc = func(mapping *meta.RESTMapping) (resource.RESTClient, error) {
versionedAPIPath := "" versionedAPIPath := ""
if mapping.GroupVersionKind.Group == "" { if mapping.GroupVersionKind.Group == "" {
......
...@@ -33,8 +33,10 @@ import ( ...@@ -33,8 +33,10 @@ import (
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/client-go/tools/remotecommand" "k8s.io/client-go/tools/remotecommand"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/term" "k8s.io/kubernetes/pkg/kubectl/util/term"
) )
...@@ -128,7 +130,9 @@ func TestPodAndContainer(t *testing.T) { ...@@ -128,7 +130,9 @@ func TestPodAndContainer(t *testing.T) {
}, },
} }
for _, test := range tests { for _, test := range tests {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { return nil, nil }), Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { return nil, nil }),
...@@ -182,7 +186,10 @@ func TestExec(t *testing.T) { ...@@ -182,7 +186,10 @@ func TestExec(t *testing.T) {
}, },
} }
for _, test := range tests { for _, test := range tests {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
......
...@@ -230,7 +230,7 @@ func RunExpose(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri ...@@ -230,7 +230,7 @@ func RunExpose(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri
} }
if inline := cmdutil.GetFlagString(cmd, "overrides"); len(inline) > 0 { if inline := cmdutil.GetFlagString(cmd, "overrides"); len(inline) > 0 {
codec := runtime.NewCodec(f.JSONEncoder(), f.Decoder(true)) codec := runtime.NewCodec(cmdutil.InternalVersionJSONEncoder(), cmdutil.InternalVersionDecoder())
object, err = cmdutil.Merge(codec, object, inline) object, err = cmdutil.Merge(codec, object, inline)
if err != nil { if err != nil {
return err return err
...@@ -241,7 +241,7 @@ func RunExpose(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri ...@@ -241,7 +241,7 @@ func RunExpose(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri
ObjectTyper: typer, ObjectTyper: typer,
RESTMapper: mapper, RESTMapper: mapper,
ClientMapper: resource.ClientMapperFunc(f.ClientForMapping), ClientMapper: resource.ClientMapperFunc(f.ClientForMapping),
Decoder: f.Decoder(true), Decoder: cmdutil.InternalVersionDecoder(),
} }
info, err = resourceMapper.InfoForObject(object, nil) info, err = resourceMapper.InfoForObject(object, nil)
if err != nil { if err != nil {
...@@ -260,7 +260,7 @@ func RunExpose(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri ...@@ -260,7 +260,7 @@ func RunExpose(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []stri
cmdutil.PrintSuccess(false, out, info.Object, true, "exposed") cmdutil.PrintSuccess(false, out, info.Object, true, "exposed")
return nil return nil
} }
if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), info, f.JSONEncoder()); err != nil { if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), info, cmdutil.InternalVersionJSONEncoder()); err != nil {
return err return err
} }
......
...@@ -28,6 +28,7 @@ import ( ...@@ -28,6 +28,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme" "k8s.io/kubernetes/pkg/kubectl/scheme"
...@@ -465,7 +466,10 @@ func TestRunExposeService(t *testing.T) { ...@@ -465,7 +466,10 @@ func TestRunExposeService(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
......
...@@ -27,8 +27,10 @@ import ( ...@@ -27,8 +27,10 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/resource" "k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
func TestValidateLabels(t *testing.T) { func TestValidateLabels(t *testing.T) {
...@@ -319,7 +321,7 @@ func TestLabelErrors(t *testing.T) { ...@@ -319,7 +321,7 @@ func TestLabelErrors(t *testing.T) {
} }
for k, testCase := range testCases { for k, testCase := range testCases {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = defaultClientConfig() tf.ClientConfig = defaultClientConfig()
...@@ -350,7 +352,9 @@ func TestLabelErrors(t *testing.T) { ...@@ -350,7 +352,9 @@ func TestLabelErrors(t *testing.T) {
func TestLabelForResourceFromFile(t *testing.T) { func TestLabelForResourceFromFile(t *testing.T) {
pods, _, _ := testData() pods, _, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -400,7 +404,7 @@ func TestLabelForResourceFromFile(t *testing.T) { ...@@ -400,7 +404,7 @@ func TestLabelForResourceFromFile(t *testing.T) {
} }
func TestLabelLocal(t *testing.T) { func TestLabelLocal(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -433,7 +437,9 @@ func TestLabelLocal(t *testing.T) { ...@@ -433,7 +437,9 @@ func TestLabelLocal(t *testing.T) {
func TestLabelMultipleObjects(t *testing.T) { func TestLabelMultipleObjects(t *testing.T) {
pods, _, _ := testData() pods, _, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
......
...@@ -28,8 +28,10 @@ import ( ...@@ -28,8 +28,10 @@ import (
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
func TestLog(t *testing.T) { func TestLog(t *testing.T) {
...@@ -47,7 +49,10 @@ func TestLog(t *testing.T) { ...@@ -47,7 +49,10 @@ func TestLog(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
logContent := "test log content" logContent := "test log content"
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -95,7 +100,7 @@ func testPod() *api.Pod { ...@@ -95,7 +100,7 @@ func testPod() *api.Pod {
} }
func TestValidateLogFlags(t *testing.T) { func TestValidateLogFlags(t *testing.T) {
f, _, _, _ := cmdtesting.NewAPIFactory() f, _ := cmdtesting.NewAPIFactory()
tests := []struct { tests := []struct {
name string name string
...@@ -145,7 +150,7 @@ func TestValidateLogFlags(t *testing.T) { ...@@ -145,7 +150,7 @@ func TestValidateLogFlags(t *testing.T) {
} }
func TestLogComplete(t *testing.T) { func TestLogComplete(t *testing.T) {
f, _, _, _ := cmdtesting.NewAPIFactory() f, _ := cmdtesting.NewAPIFactory()
tests := []struct { tests := []struct {
name string name string
......
...@@ -23,13 +23,17 @@ import ( ...@@ -23,13 +23,17 @@ import (
"testing" "testing"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
func TestPatchObject(t *testing.T) { func TestPatchObject(t *testing.T) {
_, svc, _ := testData() _, svc, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -67,7 +71,9 @@ func TestPatchObject(t *testing.T) { ...@@ -67,7 +71,9 @@ func TestPatchObject(t *testing.T) {
func TestPatchObjectFromFile(t *testing.T) { func TestPatchObjectFromFile(t *testing.T) {
_, svc, _ := testData() _, svc, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -101,7 +107,9 @@ func TestPatchNoop(t *testing.T) { ...@@ -101,7 +107,9 @@ func TestPatchNoop(t *testing.T) {
getObject := &svc.Items[0] getObject := &svc.Items[0]
patchObject := &svc.Items[0] patchObject := &svc.Items[0]
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -145,7 +153,9 @@ func TestPatchObjectFromFileOutput(t *testing.T) { ...@@ -145,7 +153,9 @@ func TestPatchObjectFromFileOutput(t *testing.T) {
} }
svcCopy.Labels["post-patch"] = "post-patch-value" svcCopy.Labels["post-patch"] = "post-patch-value"
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
......
...@@ -92,7 +92,7 @@ func TestPluginCmd(t *testing.T) { ...@@ -92,7 +92,7 @@ func TestPluginCmd(t *testing.T) {
success: test.expectedSuccess, success: test.expectedSuccess,
} }
f, _, _, _ := cmdtesting.NewAPIFactory() f, _ := cmdtesting.NewAPIFactory()
cmd := NewCmdForPlugin(f, test.plugin, runner, inBuf, outBuf, errBuf) cmd := NewCmdForPlugin(f, test.plugin, runner, inBuf, outBuf, errBuf)
if cmd == nil { if cmd == nil {
if !test.expectedNilCmd { if !test.expectedNilCmd {
......
...@@ -29,8 +29,10 @@ import ( ...@@ -29,8 +29,10 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
type fakePortForwarder struct { type fakePortForwarder struct {
...@@ -70,7 +72,10 @@ func testPortForward(t *testing.T, flags map[string]string, args []string) { ...@@ -70,7 +72,10 @@ func testPortForward(t *testing.T, flags map[string]string, args []string) {
} }
for _, test := range tests { for _, test := range tests {
var err error var err error
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
VersionedAPIPath: "/api/v1", VersionedAPIPath: "/api/v1",
GroupVersion: schema.GroupVersion{Group: ""}, GroupVersion: schema.GroupVersion{Group: ""},
......
...@@ -137,7 +137,7 @@ func RunReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []str ...@@ -137,7 +137,7 @@ func RunReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []str
return err return err
} }
if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), info, f.JSONEncoder()); err != nil { if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), info, cmdutil.InternalVersionJSONEncoder()); err != nil {
return cmdutil.AddSourceToErr("replacing", info.Source, err) return cmdutil.AddSourceToErr("replacing", info.Source, err)
} }
...@@ -259,7 +259,7 @@ func forceReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s ...@@ -259,7 +259,7 @@ func forceReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []s
return err return err
} }
if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), info, f.JSONEncoder()); err != nil { if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), info, cmdutil.InternalVersionJSONEncoder()); err != nil {
return err return err
} }
......
...@@ -23,14 +23,18 @@ import ( ...@@ -23,14 +23,18 @@ import (
"testing" "testing"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
func TestReplaceObject(t *testing.T) { func TestReplaceObject(t *testing.T) {
_, _, rc := testData() _, _, rc := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
deleted := false deleted := false
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -84,7 +88,9 @@ func TestReplaceObject(t *testing.T) { ...@@ -84,7 +88,9 @@ func TestReplaceObject(t *testing.T) {
func TestReplaceMultipleObject(t *testing.T) { func TestReplaceMultipleObject(t *testing.T) {
_, svc, rc := testData() _, svc, rc := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
redisMasterDeleted := false redisMasterDeleted := false
frontendDeleted := false frontendDeleted := false
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
...@@ -152,7 +158,9 @@ func TestReplaceMultipleObject(t *testing.T) { ...@@ -152,7 +158,9 @@ func TestReplaceMultipleObject(t *testing.T) {
func TestReplaceDirectory(t *testing.T) { func TestReplaceDirectory(t *testing.T) {
_, _, rc := testData() _, _, rc := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
created := map[string]bool{} created := map[string]bool{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
...@@ -207,7 +215,9 @@ func TestReplaceDirectory(t *testing.T) { ...@@ -207,7 +215,9 @@ func TestReplaceDirectory(t *testing.T) {
func TestForceReplaceObjectNotFound(t *testing.T) { func TestForceReplaceObjectNotFound(t *testing.T) {
_, _, rc := testData() _, _, rc := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
......
...@@ -39,6 +39,7 @@ go_test( ...@@ -39,6 +39,7 @@ go_test(
], ],
embed = [":go_default_library"], embed = [":go_default_library"],
deps = [ deps = [
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library", "//pkg/api/testapi:go_default_library",
"//pkg/api/testing:go_default_library", "//pkg/api/testing:go_default_library",
"//pkg/apis/core:go_default_library", "//pkg/apis/core:go_default_library",
......
...@@ -295,7 +295,7 @@ func (options *GetOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []str ...@@ -295,7 +295,7 @@ func (options *GetOptions) Run(f cmdutil.Factory, cmd *cobra.Command, args []str
var sorter *kubectl.RuntimeSort var sorter *kubectl.RuntimeSort
if len(sorting) > 0 && len(objs) > 1 { if len(sorting) > 0 && len(objs) > 1 {
// TODO: questionable // TODO: questionable
if sorter, err = kubectl.SortObjects(f.Decoder(true), objs, sorting); err != nil { if sorter, err = kubectl.SortObjects(cmdutil.InternalVersionDecoder(), objs, sorting); err != nil {
return err return err
} }
} }
......
...@@ -24,7 +24,7 @@ import ( ...@@ -24,7 +24,7 @@ import (
) )
func TestValidateArgs(t *testing.T) { func TestValidateArgs(t *testing.T) {
f, _, _, _ := cmdtesting.NewAPIFactory() f, _ := cmdtesting.NewAPIFactory()
tests := []struct { tests := []struct {
testName string testName string
......
...@@ -39,11 +39,10 @@ import ( ...@@ -39,11 +39,10 @@ import (
type PauseConfig struct { type PauseConfig struct {
resource.FilenameOptions resource.FilenameOptions
Pauser func(info *resource.Info) ([]byte, error) Pauser func(info *resource.Info) ([]byte, error)
Mapper meta.RESTMapper Mapper meta.RESTMapper
Typer runtime.ObjectTyper Typer runtime.ObjectTyper
Encoder runtime.Encoder Infos []*resource.Info
Infos []*resource.Info
Out io.Writer Out io.Writer
} }
...@@ -102,7 +101,6 @@ func (o *PauseConfig) CompletePause(f cmdutil.Factory, cmd *cobra.Command, out i ...@@ -102,7 +101,6 @@ func (o *PauseConfig) CompletePause(f cmdutil.Factory, cmd *cobra.Command, out i
} }
o.Mapper, o.Typer = f.Object() o.Mapper, o.Typer = f.Object()
o.Encoder = f.JSONEncoder()
o.Pauser = f.Pauser o.Pauser = f.Pauser
o.Out = out o.Out = out
...@@ -135,7 +133,7 @@ func (o *PauseConfig) CompletePause(f cmdutil.Factory, cmd *cobra.Command, out i ...@@ -135,7 +133,7 @@ func (o *PauseConfig) CompletePause(f cmdutil.Factory, cmd *cobra.Command, out i
func (o PauseConfig) RunPause() error { func (o PauseConfig) RunPause() error {
allErrs := []error{} allErrs := []error{}
for _, patch := range set.CalculatePatches(o.Infos, o.Encoder, o.Pauser) { for _, patch := range set.CalculatePatches(o.Infos, cmdutil.InternalVersionJSONEncoder(), o.Pauser) {
info := patch.Info info := patch.Info
if patch.Err != nil { if patch.Err != nil {
allErrs = append(allErrs, fmt.Errorf("error: %s %q %v", info.Mapping.Resource, info.Name, patch.Err)) allErrs = append(allErrs, fmt.Errorf("error: %s %q %v", info.Mapping.Resource, info.Name, patch.Err))
......
...@@ -42,7 +42,6 @@ type ResumeConfig struct { ...@@ -42,7 +42,6 @@ type ResumeConfig struct {
Resumer func(object *resource.Info) ([]byte, error) Resumer func(object *resource.Info) ([]byte, error)
Mapper meta.RESTMapper Mapper meta.RESTMapper
Typer runtime.ObjectTyper Typer runtime.ObjectTyper
Encoder runtime.Encoder
Infos []*resource.Info Infos []*resource.Info
Out io.Writer Out io.Writer
...@@ -100,7 +99,6 @@ func (o *ResumeConfig) CompleteResume(f cmdutil.Factory, cmd *cobra.Command, out ...@@ -100,7 +99,6 @@ func (o *ResumeConfig) CompleteResume(f cmdutil.Factory, cmd *cobra.Command, out
} }
o.Mapper, o.Typer = f.Object() o.Mapper, o.Typer = f.Object()
o.Encoder = f.JSONEncoder()
o.Resumer = f.Resumer o.Resumer = f.Resumer
o.Out = out o.Out = out
...@@ -139,7 +137,7 @@ func (o *ResumeConfig) CompleteResume(f cmdutil.Factory, cmd *cobra.Command, out ...@@ -139,7 +137,7 @@ func (o *ResumeConfig) CompleteResume(f cmdutil.Factory, cmd *cobra.Command, out
func (o ResumeConfig) RunResume() error { func (o ResumeConfig) RunResume() error {
allErrs := []error{} allErrs := []error{}
for _, patch := range set.CalculatePatches(o.Infos, o.Encoder, o.Resumer) { for _, patch := range set.CalculatePatches(o.Infos, cmdutil.InternalVersionJSONEncoder(), o.Resumer) {
info := patch.Info info := patch.Info
if patch.Err != nil { if patch.Err != nil {
......
...@@ -590,7 +590,7 @@ func createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command, generator kube ...@@ -590,7 +590,7 @@ func createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command, generator kube
groupVersionKind := groupVersionKinds[0] groupVersionKind := groupVersionKinds[0]
if len(overrides) > 0 { if len(overrides) > 0 {
codec := runtime.NewCodec(f.JSONEncoder(), f.Decoder(true)) codec := runtime.NewCodec(cmdutil.InternalVersionJSONEncoder(), cmdutil.InternalVersionDecoder())
obj, err = cmdutil.Merge(codec, obj, overrides) obj, err = cmdutil.Merge(codec, obj, overrides)
if err != nil { if err != nil {
return nil, err return nil, err
...@@ -620,14 +620,14 @@ func createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command, generator kube ...@@ -620,14 +620,14 @@ func createGeneratedObject(f cmdutil.Factory, cmd *cobra.Command, generator kube
ObjectTyper: typer, ObjectTyper: typer,
RESTMapper: mapper, RESTMapper: mapper,
ClientMapper: resource.ClientMapperFunc(f.ClientForMapping), ClientMapper: resource.ClientMapperFunc(f.ClientForMapping),
Decoder: f.Decoder(true), Decoder: cmdutil.InternalVersionDecoder(),
} }
info, err := resourceMapper.InfoForObject(obj, nil) info, err := resourceMapper.InfoForObject(obj, nil)
if err != nil { if err != nil {
return nil, err return nil, err
} }
if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), info, f.JSONEncoder()); err != nil { if err := kubectl.CreateOrUpdateAnnotation(cmdutil.GetFlagBool(cmd, cmdutil.ApplyAnnotationsFlag), info, cmdutil.InternalVersionJSONEncoder()); err != nil {
return nil, err return nil, err
} }
......
...@@ -35,6 +35,7 @@ import ( ...@@ -35,6 +35,7 @@ import (
"k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
api "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
...@@ -167,7 +168,10 @@ func TestRunArgsFollowDashRules(t *testing.T) { ...@@ -167,7 +168,10 @@ func TestRunArgsFollowDashRules(t *testing.T) {
}, },
} }
for _, test := range tests { for _, test := range tests {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
...@@ -289,7 +293,10 @@ func TestGenerateService(t *testing.T) { ...@@ -289,7 +293,10 @@ func TestGenerateService(t *testing.T) {
} }
for _, test := range tests { for _, test := range tests {
sawPOST := false sawPOST := false
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.ClientConfig = defaultClientConfig() tf.ClientConfig = defaultClientConfig()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
...@@ -430,9 +437,10 @@ func TestRunValidations(t *testing.T) { ...@@ -430,9 +437,10 @@ func TestRunValidations(t *testing.T) {
}, },
} }
for _, test := range tests { for _, test := range tests {
f, tf, codec, ns := cmdtesting.NewTestFactory() f, tf := cmdtesting.NewTestFactory()
_, _, codec := cmdtesting.NewExternalScheme()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: scheme.Codecs,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, cmdtesting.NewInternalType("", "", ""))}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, cmdtesting.NewInternalType("", "", ""))},
} }
tf.Namespace = "test" tf.Namespace = "test"
......
...@@ -58,6 +58,7 @@ go_test( ...@@ -58,6 +58,7 @@ go_test(
], ],
embed = [":go_default_library"], embed = [":go_default_library"],
deps = [ deps = [
"//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library", "//pkg/api/testapi:go_default_library",
"//pkg/apis/rbac:go_default_library", "//pkg/apis/rbac:go_default_library",
"//pkg/kubectl/categories:go_default_library", "//pkg/kubectl/categories:go_default_library",
......
...@@ -117,7 +117,6 @@ type EnvOptions struct { ...@@ -117,7 +117,6 @@ type EnvOptions struct {
Builder *resource.Builder Builder *resource.Builder
Infos []*resource.Info Infos []*resource.Info
Encoder runtime.Encoder
Cmd *cobra.Command Cmd *cobra.Command
...@@ -187,7 +186,6 @@ func (o *EnvOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []stri ...@@ -187,7 +186,6 @@ func (o *EnvOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []stri
} }
o.UpdatePodSpecForObject = f.UpdatePodSpecForObject o.UpdatePodSpecForObject = f.UpdatePodSpecForObject
o.Encoder = f.JSONEncoder()
o.ContainerSelector = cmdutil.GetFlagString(cmd, "containers") o.ContainerSelector = cmdutil.GetFlagString(cmd, "containers")
o.List = cmdutil.GetFlagBool(cmd, "list") o.List = cmdutil.GetFlagBool(cmd, "list")
o.Resolve = cmdutil.GetFlagBool(cmd, "resolve") o.Resolve = cmdutil.GetFlagBool(cmd, "resolve")
...@@ -320,7 +318,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error { ...@@ -320,7 +318,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
if err != nil { if err != nil {
return err return err
} }
patches := CalculatePatches(o.Infos, o.Encoder, func(info *resource.Info) ([]byte, error) { patches := CalculatePatches(o.Infos, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
info.Object = info.AsVersioned() info.Object = info.AsVersioned()
_, err := o.UpdatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error { _, err := o.UpdatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error {
resolutionErrorsEncountered := false resolutionErrorsEncountered := false
...@@ -388,7 +386,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error { ...@@ -388,7 +386,7 @@ func (o *EnvOptions) RunEnv(f cmdutil.Factory) error {
}) })
if err == nil { if err == nil {
return runtime.Encode(o.Encoder, info.Object) return runtime.Encode(cmdutil.InternalVersionJSONEncoder(), info.Object)
} }
return nil, err return nil, err
}) })
......
...@@ -38,6 +38,7 @@ import ( ...@@ -38,6 +38,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/kubectl/categories" "k8s.io/kubernetes/pkg/kubectl/categories"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
...@@ -46,7 +47,8 @@ import ( ...@@ -46,7 +47,8 @@ import (
) )
func TestSetEnvLocal(t *testing.T) { func TestSetEnvLocal(t *testing.T) {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: ""}, GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
...@@ -81,7 +83,9 @@ func TestSetEnvLocal(t *testing.T) { ...@@ -81,7 +83,9 @@ func TestSetEnvLocal(t *testing.T) {
} }
func TestSetMultiResourcesEnvLocal(t *testing.T) { func TestSetMultiResourcesEnvLocal(t *testing.T) {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: ""}, GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
...@@ -428,8 +432,9 @@ func TestSetEnvRemote(t *testing.T) { ...@@ -428,8 +432,9 @@ func TestSetEnvRemote(t *testing.T) {
for _, input := range inputs { for _, input := range inputs {
groupVersion := schema.GroupVersion{Group: input.apiGroup, Version: input.apiVersion} groupVersion := schema.GroupVersion{Group: input.apiGroup, Version: input.apiVersion}
testapi.Default = testapi.Groups[input.testAPIGroup] testapi.Default = testapi.Groups[input.testAPIGroup]
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion) codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
ns := legacyscheme.Codecs
tf.Namespace = "test" tf.Namespace = "test"
tf.CategoryExpander = categories.LegacyCategoryExpander tf.CategoryExpander = categories.LegacyCategoryExpander
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
......
...@@ -37,8 +37,6 @@ type ImageOptions struct { ...@@ -37,8 +37,6 @@ type ImageOptions struct {
resource.FilenameOptions resource.FilenameOptions
Infos []*resource.Info Infos []*resource.Info
Encoder runtime.Encoder
Decoder runtime.Decoder
Selector string Selector string
Out io.Writer Out io.Writer
Err io.Writer Err io.Writer
...@@ -114,8 +112,6 @@ func NewCmdImage(f cmdutil.Factory, out, err io.Writer) *cobra.Command { ...@@ -114,8 +112,6 @@ func NewCmdImage(f cmdutil.Factory, out, err io.Writer) *cobra.Command {
func (o *ImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { func (o *ImageOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error {
o.UpdatePodSpecForObject = f.UpdatePodSpecForObject o.UpdatePodSpecForObject = f.UpdatePodSpecForObject
o.Encoder = f.JSONEncoder()
o.Decoder = f.Decoder(true)
o.ShortOutput = cmdutil.GetFlagString(cmd, "output") == "name" o.ShortOutput = cmdutil.GetFlagString(cmd, "output") == "name"
o.Record = cmdutil.GetRecordFlag(cmd) o.Record = cmdutil.GetRecordFlag(cmd)
o.ChangeCause = f.Command(cmd, false) o.ChangeCause = f.Command(cmd, false)
...@@ -184,7 +180,7 @@ func (o *ImageOptions) Validate() error { ...@@ -184,7 +180,7 @@ func (o *ImageOptions) Validate() error {
func (o *ImageOptions) Run() error { func (o *ImageOptions) Run() error {
allErrs := []error{} allErrs := []error{}
patches := CalculatePatches(o.Infos, o.Encoder, func(info *resource.Info) ([]byte, error) { patches := CalculatePatches(o.Infos, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
transformed := false transformed := false
info.Object = info.AsVersioned() info.Object = info.AsVersioned()
_, err := o.UpdatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error { _, err := o.UpdatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error {
...@@ -224,7 +220,7 @@ func (o *ImageOptions) Run() error { ...@@ -224,7 +220,7 @@ func (o *ImageOptions) Run() error {
return nil return nil
}) })
if transformed && err == nil { if transformed && err == nil {
return runtime.Encode(o.Encoder, info.Object) return runtime.Encode(cmdutil.InternalVersionJSONEncoder(), info.Object)
} }
return nil, err return nil, err
}) })
......
...@@ -37,6 +37,7 @@ import ( ...@@ -37,6 +37,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/kubectl/categories" "k8s.io/kubernetes/pkg/kubectl/categories"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
...@@ -45,7 +46,9 @@ import ( ...@@ -45,7 +46,9 @@ import (
) )
func TestImageLocal(t *testing.T) { func TestImageLocal(t *testing.T) {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: ""}, GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
...@@ -146,7 +149,9 @@ func TestSetImageValidation(t *testing.T) { ...@@ -146,7 +149,9 @@ func TestSetImageValidation(t *testing.T) {
} }
func TestSetMultiResourcesImageLocal(t *testing.T) { func TestSetMultiResourcesImageLocal(t *testing.T) {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: ""}, GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
...@@ -495,8 +500,9 @@ func TestSetImageRemote(t *testing.T) { ...@@ -495,8 +500,9 @@ func TestSetImageRemote(t *testing.T) {
for _, input := range inputs { for _, input := range inputs {
groupVersion := schema.GroupVersion{Group: input.apiGroup, Version: input.apiVersion} groupVersion := schema.GroupVersion{Group: input.apiGroup, Version: input.apiVersion}
testapi.Default = testapi.Groups[input.testAPIGroup] testapi.Default = testapi.Groups[input.testAPIGroup]
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion) codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
ns := legacyscheme.Codecs
tf.Namespace = "test" tf.Namespace = "test"
tf.CategoryExpander = categories.LegacyCategoryExpander tf.CategoryExpander = categories.LegacyCategoryExpander
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
......
...@@ -62,7 +62,6 @@ type ResourcesOptions struct { ...@@ -62,7 +62,6 @@ type ResourcesOptions struct {
resource.FilenameOptions resource.FilenameOptions
Infos []*resource.Info Infos []*resource.Info
Encoder runtime.Encoder
Out io.Writer Out io.Writer
Err io.Writer Err io.Writer
Selector string Selector string
...@@ -125,7 +124,6 @@ func NewCmdResources(f cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra. ...@@ -125,7 +124,6 @@ func NewCmdResources(f cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.
func (o *ResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { func (o *ResourcesOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error {
o.UpdatePodSpecForObject = f.UpdatePodSpecForObject o.UpdatePodSpecForObject = f.UpdatePodSpecForObject
o.Encoder = f.JSONEncoder()
o.Output = cmdutil.GetFlagString(cmd, "output") o.Output = cmdutil.GetFlagString(cmd, "output")
o.Record = cmdutil.GetRecordFlag(cmd) o.Record = cmdutil.GetRecordFlag(cmd)
o.ChangeCause = f.Command(cmd, false) o.ChangeCause = f.Command(cmd, false)
...@@ -187,7 +185,7 @@ func (o *ResourcesOptions) Validate() error { ...@@ -187,7 +185,7 @@ func (o *ResourcesOptions) Validate() error {
func (o *ResourcesOptions) Run() error { func (o *ResourcesOptions) Run() error {
allErrs := []error{} allErrs := []error{}
patches := CalculatePatches(o.Infos, o.Encoder, func(info *resource.Info) ([]byte, error) { patches := CalculatePatches(o.Infos, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
transformed := false transformed := false
info.Object = info.AsVersioned() info.Object = info.AsVersioned()
_, err := o.UpdatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error { _, err := o.UpdatePodSpecForObject(info.Object, func(spec *v1.PodSpec) error {
...@@ -215,7 +213,7 @@ func (o *ResourcesOptions) Run() error { ...@@ -215,7 +213,7 @@ func (o *ResourcesOptions) Run() error {
return nil return nil
}) })
if transformed && err == nil { if transformed && err == nil {
return runtime.Encode(o.Encoder, info.Object) return runtime.Encode(cmdutil.InternalVersionJSONEncoder(), info.Object)
} }
return nil, err return nil, err
}) })
......
...@@ -37,6 +37,7 @@ import ( ...@@ -37,6 +37,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/kubectl/categories" "k8s.io/kubernetes/pkg/kubectl/categories"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
...@@ -45,7 +46,9 @@ import ( ...@@ -45,7 +46,9 @@ import (
) )
func TestResourcesLocal(t *testing.T) { func TestResourcesLocal(t *testing.T) {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: ""}, GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
...@@ -87,7 +90,9 @@ func TestResourcesLocal(t *testing.T) { ...@@ -87,7 +90,9 @@ func TestResourcesLocal(t *testing.T) {
} }
func TestSetMultiResourcesLimitsLocal(t *testing.T) { func TestSetMultiResourcesLimitsLocal(t *testing.T) {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: ""}, GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
...@@ -441,8 +446,9 @@ func TestSetResourcesRemote(t *testing.T) { ...@@ -441,8 +446,9 @@ func TestSetResourcesRemote(t *testing.T) {
t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) {
groupVersion := schema.GroupVersion{Group: input.apiGroup, Version: input.apiVersion} groupVersion := schema.GroupVersion{Group: input.apiGroup, Version: input.apiVersion}
testapi.Default = testapi.Groups[input.testAPIGroup] testapi.Default = testapi.Groups[input.testAPIGroup]
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion) codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
ns := legacyscheme.Codecs
tf.Namespace = "test" tf.Namespace = "test"
tf.CategoryExpander = categories.LegacyCategoryExpander tf.CategoryExpander = categories.LegacyCategoryExpander
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
......
...@@ -54,7 +54,6 @@ type SelectorOptions struct { ...@@ -54,7 +54,6 @@ type SelectorOptions struct {
builder *resource.Builder builder *resource.Builder
mapper meta.RESTMapper mapper meta.RESTMapper
encoder runtime.Encoder
} }
var ( var (
...@@ -118,7 +117,6 @@ func (o *SelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [ ...@@ -118,7 +117,6 @@ func (o *SelectorOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args [
o.changeCause = f.Command(cmd, false) o.changeCause = f.Command(cmd, false)
mapper, _ := f.Object() mapper, _ := f.Object()
o.mapper = mapper o.mapper = mapper
o.encoder = f.JSONEncoder()
o.resources, o.selector, err = getResourcesAndSelector(args) o.resources, o.selector, err = getResourcesAndSelector(args)
if err != nil { if err != nil {
...@@ -178,13 +176,13 @@ func (o *SelectorOptions) RunSelector() error { ...@@ -178,13 +176,13 @@ func (o *SelectorOptions) RunSelector() error {
return r.Visit(func(info *resource.Info, err error) error { return r.Visit(func(info *resource.Info, err error) error {
patch := &Patch{Info: info} patch := &Patch{Info: info}
CalculatePatch(patch, o.encoder, func(info *resource.Info) ([]byte, error) { CalculatePatch(patch, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
versioned := info.AsVersioned() versioned := info.AsVersioned()
patch.Info.Object = versioned patch.Info.Object = versioned
selectErr := updateSelectorForObject(info.Object, *o.selector) selectErr := updateSelectorForObject(info.Object, *o.selector)
if selectErr == nil { if selectErr == nil {
return runtime.Encode(o.encoder, info.Object) return runtime.Encode(cmdutil.InternalVersionJSONEncoder(), info.Object)
} }
return nil, selectErr return nil, selectErr
}) })
......
...@@ -32,6 +32,7 @@ import ( ...@@ -32,6 +32,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
...@@ -315,7 +316,8 @@ func TestGetResourcesAndSelector(t *testing.T) { ...@@ -315,7 +316,8 @@ func TestGetResourcesAndSelector(t *testing.T) {
} }
func TestSelectorTest(t *testing.T) { func TestSelectorTest(t *testing.T) {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: ""}, GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
......
...@@ -55,7 +55,6 @@ var ( ...@@ -55,7 +55,6 @@ var (
// serviceAccountConfig encapsulates the data required to perform the operation. // serviceAccountConfig encapsulates the data required to perform the operation.
type serviceAccountConfig struct { type serviceAccountConfig struct {
fileNameOptions resource.FilenameOptions fileNameOptions resource.FilenameOptions
encoder runtime.Encoder
out io.Writer out io.Writer
err io.Writer err io.Writer
dryRun bool dryRun bool
...@@ -104,7 +103,6 @@ func NewCmdServiceAccount(f cmdutil.Factory, out, err io.Writer) *cobra.Command ...@@ -104,7 +103,6 @@ func NewCmdServiceAccount(f cmdutil.Factory, out, err io.Writer) *cobra.Command
// Complete configures serviceAccountConfig from command line args. // Complete configures serviceAccountConfig from command line args.
func (saConfig *serviceAccountConfig) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { func (saConfig *serviceAccountConfig) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error {
saConfig.encoder = f.JSONEncoder()
saConfig.shortOutput = cmdutil.GetFlagString(cmd, "output") == "name" saConfig.shortOutput = cmdutil.GetFlagString(cmd, "output") == "name"
saConfig.record = cmdutil.GetRecordFlag(cmd) saConfig.record = cmdutil.GetRecordFlag(cmd)
saConfig.changeCause = f.Command(cmd, false) saConfig.changeCause = f.Command(cmd, false)
...@@ -151,9 +149,9 @@ func (saConfig *serviceAccountConfig) Run() error { ...@@ -151,9 +149,9 @@ func (saConfig *serviceAccountConfig) Run() error {
podSpec.ServiceAccountName = saConfig.serviceAccountName podSpec.ServiceAccountName = saConfig.serviceAccountName
return nil return nil
}) })
return runtime.Encode(saConfig.encoder, info.Object) return runtime.Encode(cmdutil.InternalVersionJSONEncoder(), info.Object)
} }
patches := CalculatePatches(saConfig.infos, saConfig.encoder, patchFn) patches := CalculatePatches(saConfig.infos, cmdutil.InternalVersionJSONEncoder(), patchFn)
for _, patch := range patches { for _, patch := range patches {
info := patch.Info info := patch.Info
if patch.Err != nil { if patch.Err != nil {
......
...@@ -37,6 +37,7 @@ import ( ...@@ -37,6 +37,7 @@ import (
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
"k8s.io/kubernetes/pkg/kubectl/categories" "k8s.io/kubernetes/pkg/kubectl/categories"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
...@@ -67,7 +68,7 @@ func TestSetServiceAccountLocal(t *testing.T) { ...@@ -67,7 +68,7 @@ func TestSetServiceAccountLocal(t *testing.T) {
for i, input := range inputs { for i, input := range inputs {
t.Run(fmt.Sprintf("%d", i), func(t *testing.T) { t.Run(fmt.Sprintf("%d", i), func(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -97,7 +98,8 @@ func TestSetServiceAccountLocal(t *testing.T) { ...@@ -97,7 +98,8 @@ func TestSetServiceAccountLocal(t *testing.T) {
func TestSetServiceAccountMultiLocal(t *testing.T) { func TestSetServiceAccountMultiLocal(t *testing.T) {
testapi.Default = testapi.Groups[""] testapi.Default = testapi.Groups[""]
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: ""}, GroupVersion: schema.GroupVersion{Version: ""},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
...@@ -311,8 +313,9 @@ func TestSetServiceAccountRemote(t *testing.T) { ...@@ -311,8 +313,9 @@ func TestSetServiceAccountRemote(t *testing.T) {
for _, input := range inputs { for _, input := range inputs {
groupVersion := schema.GroupVersion{Group: input.apiGroup, Version: input.apiVersion} groupVersion := schema.GroupVersion{Group: input.apiGroup, Version: input.apiVersion}
testapi.Default = testapi.Groups[input.testAPIGroup] testapi.Default = testapi.Groups[input.testAPIGroup]
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion) codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
ns := legacyscheme.Codecs
tf.Namespace = "test" tf.Namespace = "test"
tf.CategoryExpander = categories.LegacyCategoryExpander tf.CategoryExpander = categories.LegacyCategoryExpander
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
...@@ -364,7 +367,7 @@ func TestServiceAccountValidation(t *testing.T) { ...@@ -364,7 +367,7 @@ func TestServiceAccountValidation(t *testing.T) {
{args: []string{serviceAccount}, errorString: resourceMissingErrString}, {args: []string{serviceAccount}, errorString: resourceMissingErrString},
} }
for _, input := range inputs { for _, input := range inputs {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"}, GroupVersion: schema.GroupVersion{Version: "v1"},
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
......
...@@ -57,7 +57,6 @@ type SubjectOptions struct { ...@@ -57,7 +57,6 @@ type SubjectOptions struct {
resource.FilenameOptions resource.FilenameOptions
Infos []*resource.Info Infos []*resource.Info
Encoder runtime.Encoder
Out io.Writer Out io.Writer
Err io.Writer Err io.Writer
Selector string Selector string
...@@ -108,7 +107,6 @@ func NewCmdSubject(f cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.Co ...@@ -108,7 +107,6 @@ func NewCmdSubject(f cmdutil.Factory, out io.Writer, errOut io.Writer) *cobra.Co
} }
func (o *SubjectOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error { func (o *SubjectOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args []string) error {
o.Encoder = f.JSONEncoder()
o.Output = cmdutil.GetFlagString(cmd, "output") o.Output = cmdutil.GetFlagString(cmd, "output")
o.DryRun = cmdutil.GetDryRunFlag(cmd) o.DryRun = cmdutil.GetDryRunFlag(cmd)
o.PrintObject = func(obj runtime.Object, out io.Writer) error { o.PrintObject = func(obj runtime.Object, out io.Writer) error {
...@@ -179,7 +177,7 @@ func (o *SubjectOptions) Validate() error { ...@@ -179,7 +177,7 @@ func (o *SubjectOptions) Validate() error {
func (o *SubjectOptions) Run(f cmdutil.Factory, fn updateSubjects) error { func (o *SubjectOptions) Run(f cmdutil.Factory, fn updateSubjects) error {
var err error var err error
patches := CalculatePatches(o.Infos, o.Encoder, func(info *resource.Info) ([]byte, error) { patches := CalculatePatches(o.Infos, cmdutil.InternalVersionJSONEncoder(), func(info *resource.Info) ([]byte, error) {
subjects := []rbac.Subject{} subjects := []rbac.Subject{}
for _, user := range sets.NewString(o.Users...).List() { for _, user := range sets.NewString(o.Users...).List() {
subject := rbac.Subject{ subject := rbac.Subject{
...@@ -218,7 +216,7 @@ func (o *SubjectOptions) Run(f cmdutil.Factory, fn updateSubjects) error { ...@@ -218,7 +216,7 @@ func (o *SubjectOptions) Run(f cmdutil.Factory, fn updateSubjects) error {
transformed, err := updateSubjectForObject(info.Object, subjects, fn) transformed, err := updateSubjectForObject(info.Object, subjects, fn)
if transformed && err == nil { if transformed && err == nil {
// TODO: switch UpdatePodSpecForObject to work on v1.PodSpec // TODO: switch UpdatePodSpecForObject to work on v1.PodSpec
return runtime.Encode(o.Encoder, info.AsVersioned()) return runtime.Encode(cmdutil.InternalVersionJSONEncoder(), info.AsVersioned())
} }
return nil, err return nil, err
}) })
......
...@@ -28,7 +28,7 @@ import ( ...@@ -28,7 +28,7 @@ import (
) )
func TestValidate(t *testing.T) { func TestValidate(t *testing.T) {
_, tf, _, _ := cmdtesting.NewAPIFactory() _, tf := cmdtesting.NewAPIFactory()
tf.Namespace = "test" tf.Namespace = "test"
tests := map[string]struct { tests := map[string]struct {
......
...@@ -29,8 +29,10 @@ import ( ...@@ -29,8 +29,10 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/strategicpatch" "k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
func generateNodeAndTaintedNode(oldTaints []v1.Taint, newTaints []v1.Taint) (*v1.Node, *v1.Node) { func generateNodeAndTaintedNode(oldTaints []v1.Taint, newTaints []v1.Taint) (*v1.Node, *v1.Node) {
...@@ -237,7 +239,9 @@ func TestTaint(t *testing.T) { ...@@ -237,7 +239,9 @@ func TestTaint(t *testing.T) {
oldNode, expectNewNode := generateNodeAndTaintedNode(test.oldTaints, test.newTaints) oldNode, expectNewNode := generateNodeAndTaintedNode(test.oldTaints, test.newTaints)
new_node := &v1.Node{} new_node := &v1.Node{}
tainted := false tainted := false
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
......
...@@ -15,7 +15,6 @@ go_library( ...@@ -15,7 +15,6 @@ go_library(
], ],
deps = [ deps = [
"//pkg/api/legacyscheme:go_default_library", "//pkg/api/legacyscheme:go_default_library",
"//pkg/api/testapi:go_default_library",
"//pkg/apis/core:go_default_library", "//pkg/apis/core:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/kubectl:go_default_library", "//pkg/kubectl:go_default_library",
...@@ -25,6 +24,7 @@ go_library( ...@@ -25,6 +24,7 @@ go_library(
"//pkg/kubectl/cmd/util/openapi/testing:go_default_library", "//pkg/kubectl/cmd/util/openapi/testing:go_default_library",
"//pkg/kubectl/plugins:go_default_library", "//pkg/kubectl/plugins:go_default_library",
"//pkg/kubectl/resource:go_default_library", "//pkg/kubectl/resource:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/kubectl/validation:go_default_library", "//pkg/kubectl/validation:go_default_library",
"//pkg/printers:go_default_library", "//pkg/printers:go_default_library",
"//vendor/github.com/spf13/cobra:go_default_library", "//vendor/github.com/spf13/cobra:go_default_library",
......
...@@ -38,7 +38,6 @@ import ( ...@@ -38,7 +38,6 @@ import (
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api/legacyscheme" "k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi"
api "k8s.io/kubernetes/pkg/apis/core" api "k8s.io/kubernetes/pkg/apis/core"
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset" "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
...@@ -48,6 +47,7 @@ import ( ...@@ -48,6 +47,7 @@ import (
openapitesting "k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi/testing" openapitesting "k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi/testing"
"k8s.io/kubernetes/pkg/kubectl/plugins" "k8s.io/kubernetes/pkg/kubectl/plugins"
"k8s.io/kubernetes/pkg/kubectl/resource" "k8s.io/kubernetes/pkg/kubectl/resource"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/validation" "k8s.io/kubernetes/pkg/kubectl/validation"
"k8s.io/kubernetes/pkg/printers" "k8s.io/kubernetes/pkg/printers"
metricsclientset "k8s.io/metrics/pkg/client/clientset_generated/clientset" metricsclientset "k8s.io/metrics/pkg/client/clientset_generated/clientset"
...@@ -183,7 +183,7 @@ var InternalGV = schema.GroupVersion{Group: "apitest", Version: runtime.APIVersi ...@@ -183,7 +183,7 @@ var InternalGV = schema.GroupVersion{Group: "apitest", Version: runtime.APIVersi
var UnlikelyGV = schema.GroupVersion{Group: "apitest", Version: "unlikelyversion"} var UnlikelyGV = schema.GroupVersion{Group: "apitest", Version: "unlikelyversion"}
var ValidVersionGV = schema.GroupVersion{Group: "apitest", Version: ValidVersion} var ValidVersionGV = schema.GroupVersion{Group: "apitest", Version: ValidVersion}
func newExternalScheme() (*runtime.Scheme, meta.RESTMapper, runtime.Codec) { func NewExternalScheme() (*runtime.Scheme, meta.RESTMapper, runtime.Codec) {
scheme := runtime.NewScheme() scheme := runtime.NewScheme()
mapper, codec := AddToScheme(scheme) mapper, codec := AddToScheme(scheme)
return scheme, mapper, codec return scheme, mapper, codec
...@@ -236,8 +236,6 @@ func (d *fakeCachedDiscoveryClient) ServerResources() ([]*metav1.APIResourceList ...@@ -236,8 +236,6 @@ func (d *fakeCachedDiscoveryClient) ServerResources() ([]*metav1.APIResourceList
} }
type TestFactory struct { type TestFactory struct {
Mapper meta.RESTMapper
Typer runtime.ObjectTyper
Client kubectl.RESTClient Client kubectl.RESTClient
UnstructuredClient kubectl.RESTClient UnstructuredClient kubectl.RESTClient
Describer printers.Describer Describer printers.Describer
...@@ -248,7 +246,6 @@ type TestFactory struct { ...@@ -248,7 +246,6 @@ type TestFactory struct {
Command string Command string
TmpDir string TmpDir string
CategoryExpander categories.CategoryExpander CategoryExpander categories.CategoryExpander
SkipDiscovery bool
MetricsClientSet metricsclientset.Interface MetricsClientSet metricsclientset.Interface
ClientForMappingFunc func(mapping *meta.RESTMapping) (resource.RESTClient, error) ClientForMappingFunc func(mapping *meta.RESTMapping) (resource.RESTClient, error)
...@@ -257,22 +254,16 @@ type TestFactory struct { ...@@ -257,22 +254,16 @@ type TestFactory struct {
} }
type FakeFactory struct { type FakeFactory struct {
tf *TestFactory tf *TestFactory
Codec runtime.Codec
} }
func NewTestFactory() (cmdutil.Factory, *TestFactory, runtime.Codec, runtime.NegotiatedSerializer) { func NewTestFactory() (cmdutil.Factory, *TestFactory) {
scheme, mapper, codec := newExternalScheme()
t := &TestFactory{ t := &TestFactory{
Validator: validation.NullSchema{}, Validator: validation.NullSchema{},
Mapper: mapper,
Typer: scheme,
} }
negotiatedSerializer := serializer.NegotiatedSerializerWrapper(runtime.SerializerInfo{Serializer: codec})
return &FakeFactory{ return &FakeFactory{
tf: t, tf: t,
Codec: codec, }, t
}, t, codec, negotiatedSerializer
} }
func (f *FakeFactory) DiscoveryClient() (discovery.CachedDiscoveryInterface, error) { func (f *FakeFactory) DiscoveryClient() (discovery.CachedDiscoveryInterface, error) {
...@@ -288,9 +279,6 @@ func (f *FakeFactory) FlagSet() *pflag.FlagSet { ...@@ -288,9 +279,6 @@ func (f *FakeFactory) FlagSet() *pflag.FlagSet {
} }
func (f *FakeFactory) Object() (meta.RESTMapper, runtime.ObjectTyper) { func (f *FakeFactory) Object() (meta.RESTMapper, runtime.ObjectTyper) {
if f.tf.SkipDiscovery {
return legacyscheme.Registry.RESTMapper(), f.tf.Typer
}
groupResources := testDynamicResources() groupResources := testDynamicResources()
mapper := discovery.NewRESTMapper(groupResources, meta.InterfacesForUnstructuredConversion(legacyscheme.Registry.InterfacesFor)) mapper := discovery.NewRESTMapper(groupResources, meta.InterfacesForUnstructuredConversion(legacyscheme.Registry.InterfacesFor))
typer := discovery.NewUnstructuredObjectTyper(groupResources, legacyscheme.Scheme) typer := discovery.NewUnstructuredObjectTyper(groupResources, legacyscheme.Scheme)
...@@ -304,14 +292,6 @@ func (f *FakeFactory) CategoryExpander() categories.CategoryExpander { ...@@ -304,14 +292,6 @@ func (f *FakeFactory) CategoryExpander() categories.CategoryExpander {
return categories.LegacyCategoryExpander return categories.LegacyCategoryExpander
} }
func (f *FakeFactory) Decoder(bool) runtime.Decoder {
return f.Codec
}
func (f *FakeFactory) JSONEncoder() runtime.Encoder {
return f.Codec
}
func (f *FakeFactory) RESTClient() (*restclient.RESTClient, error) { func (f *FakeFactory) RESTClient() (*restclient.RESTClient, error) {
return nil, nil return nil, nil
} }
...@@ -481,7 +461,7 @@ func (f *FakeFactory) NewBuilder() *resource.Builder { ...@@ -481,7 +461,7 @@ func (f *FakeFactory) NewBuilder() *resource.Builder {
RESTMapper: mapper, RESTMapper: mapper,
ObjectTyper: typer, ObjectTyper: typer,
ClientMapper: resource.ClientMapperFunc(f.ClientForMapping), ClientMapper: resource.ClientMapperFunc(f.ClientForMapping),
Decoder: f.Decoder(true), Decoder: cmdutil.InternalVersionDecoder(),
}, },
&resource.Mapper{ &resource.Mapper{
RESTMapper: mapper, RESTMapper: mapper,
...@@ -513,56 +493,12 @@ func (f *FakeFactory) PluginRunner() plugins.PluginRunner { ...@@ -513,56 +493,12 @@ func (f *FakeFactory) PluginRunner() plugins.PluginRunner {
return &plugins.ExecPluginRunner{} return &plugins.ExecPluginRunner{}
} }
type fakeMixedFactory struct {
cmdutil.Factory
tf *TestFactory
apiClient resource.RESTClient
}
func (f *fakeMixedFactory) Object() (meta.RESTMapper, runtime.ObjectTyper) {
var multiRESTMapper meta.MultiRESTMapper
multiRESTMapper = append(multiRESTMapper, f.tf.Mapper)
multiRESTMapper = append(multiRESTMapper, testapi.Default.RESTMapper())
priorityRESTMapper := meta.PriorityRESTMapper{
Delegate: multiRESTMapper,
ResourcePriority: []schema.GroupVersionResource{
{Group: meta.AnyGroup, Version: "v1", Resource: meta.AnyResource},
},
KindPriority: []schema.GroupVersionKind{
{Group: meta.AnyGroup, Version: "v1", Kind: meta.AnyKind},
},
}
return priorityRESTMapper, runtime.MultiObjectTyper{f.tf.Typer, legacyscheme.Scheme}
}
func (f *fakeMixedFactory) ClientForMapping(m *meta.RESTMapping) (resource.RESTClient, error) {
if m.ObjectConvertor == legacyscheme.Scheme {
return f.apiClient, f.tf.Err
}
if f.tf.ClientForMappingFunc != nil {
return f.tf.ClientForMappingFunc(m)
}
return f.tf.Client, f.tf.Err
}
func NewMixedFactory(apiClient resource.RESTClient) (cmdutil.Factory, *TestFactory, runtime.Codec) {
f, t, c, _ := NewAPIFactory()
return &fakeMixedFactory{
Factory: f,
tf: t,
apiClient: apiClient,
}, t, c
}
type fakeAPIFactory struct { type fakeAPIFactory struct {
cmdutil.Factory cmdutil.Factory
tf *TestFactory tf *TestFactory
} }
func (f *fakeAPIFactory) Object() (meta.RESTMapper, runtime.ObjectTyper) { func (f *fakeAPIFactory) Object() (meta.RESTMapper, runtime.ObjectTyper) {
if f.tf.SkipDiscovery {
return testapi.Default.RESTMapper(), legacyscheme.Scheme
}
groupResources := testDynamicResources() groupResources := testDynamicResources()
mapper := discovery.NewRESTMapper( mapper := discovery.NewRESTMapper(
groupResources, groupResources,
...@@ -571,7 +507,7 @@ func (f *fakeAPIFactory) Object() (meta.RESTMapper, runtime.ObjectTyper) { ...@@ -571,7 +507,7 @@ func (f *fakeAPIFactory) Object() (meta.RESTMapper, runtime.ObjectTyper) {
// provide typed objects for these two versions // provide typed objects for these two versions
case ValidVersionGV, UnlikelyGV: case ValidVersionGV, UnlikelyGV:
return &meta.VersionInterfaces{ return &meta.VersionInterfaces{
ObjectConvertor: f.tf.Typer.(*runtime.Scheme), ObjectConvertor: scheme.Scheme,
MetadataAccessor: meta.NewAccessor(), MetadataAccessor: meta.NewAccessor(),
}, nil }, nil
// otherwise fall back to the legacy scheme // otherwise fall back to the legacy scheme
...@@ -596,14 +532,6 @@ func (f *fakeAPIFactory) Object() (meta.RESTMapper, runtime.ObjectTyper) { ...@@ -596,14 +532,6 @@ func (f *fakeAPIFactory) Object() (meta.RESTMapper, runtime.ObjectTyper) {
return expander, typer return expander, typer
} }
func (f *fakeAPIFactory) Decoder(bool) runtime.Decoder {
return testapi.Default.Codec()
}
func (f *fakeAPIFactory) JSONEncoder() runtime.Encoder {
return testapi.Default.Codec()
}
func (f *fakeAPIFactory) KubernetesClientSet() (*kubernetes.Clientset, error) { func (f *fakeAPIFactory) KubernetesClientSet() (*kubernetes.Clientset, error) {
fakeClient := f.tf.Client.(*fake.RESTClient) fakeClient := f.tf.Client.(*fake.RESTClient)
clientset := kubernetes.NewForConfigOrDie(f.tf.ClientConfig) clientset := kubernetes.NewForConfigOrDie(f.tf.ClientConfig)
...@@ -763,7 +691,7 @@ func (f *fakeAPIFactory) NewBuilder() *resource.Builder { ...@@ -763,7 +691,7 @@ func (f *fakeAPIFactory) NewBuilder() *resource.Builder {
RESTMapper: mapper, RESTMapper: mapper,
ObjectTyper: typer, ObjectTyper: typer,
ClientMapper: resource.ClientMapperFunc(f.ClientForMapping), ClientMapper: resource.ClientMapperFunc(f.ClientForMapping),
Decoder: f.Decoder(true), Decoder: cmdutil.InternalVersionDecoder(),
}, },
&resource.Mapper{ &resource.Mapper{
RESTMapper: mapper, RESTMapper: mapper,
...@@ -786,7 +714,7 @@ func (f *fakeAPIFactory) OpenAPISchema() (openapi.Resources, error) { ...@@ -786,7 +714,7 @@ func (f *fakeAPIFactory) OpenAPISchema() (openapi.Resources, error) {
return openapitesting.EmptyResources{}, nil return openapitesting.EmptyResources{}, nil
} }
func NewAPIFactory() (cmdutil.Factory, *TestFactory, runtime.Codec, runtime.NegotiatedSerializer) { func NewAPIFactory() (cmdutil.Factory, *TestFactory) {
t := &TestFactory{ t := &TestFactory{
Validator: validation.NullSchema{}, Validator: validation.NullSchema{},
} }
...@@ -794,18 +722,7 @@ func NewAPIFactory() (cmdutil.Factory, *TestFactory, runtime.Codec, runtime.Nego ...@@ -794,18 +722,7 @@ func NewAPIFactory() (cmdutil.Factory, *TestFactory, runtime.Codec, runtime.Nego
return &fakeAPIFactory{ return &fakeAPIFactory{
Factory: rf, Factory: rf,
tf: t, tf: t,
}, t, testapi.Default.Codec(), testapi.Default.NegotiatedSerializer() }, t
}
func (f *TestFactory) WithCustomScheme() *TestFactory {
scheme, _, _ := newExternalScheme()
f.Typer = scheme
return f
}
func (f *TestFactory) WithLegacyScheme() *TestFactory {
f.Typer = legacyscheme.Scheme
return f
} }
func testDynamicResources() []*discovery.APIGroupResources { func testDynamicResources() []*discovery.APIGroupResources {
......
...@@ -30,7 +30,9 @@ import ( ...@@ -30,7 +30,9 @@ import (
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
core "k8s.io/client-go/testing" core "k8s.io/client-go/testing"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/scheme"
metricsv1alpha1api "k8s.io/metrics/pkg/apis/metrics/v1alpha1" metricsv1alpha1api "k8s.io/metrics/pkg/apis/metrics/v1alpha1"
metricsv1beta1api "k8s.io/metrics/pkg/apis/metrics/v1beta1" metricsv1beta1api "k8s.io/metrics/pkg/apis/metrics/v1beta1"
metricsfake "k8s.io/metrics/pkg/client/clientset_generated/clientset/fake" metricsfake "k8s.io/metrics/pkg/client/clientset_generated/clientset/fake"
...@@ -47,7 +49,10 @@ func TestTopNodeAllMetrics(t *testing.T) { ...@@ -47,7 +49,10 @@ func TestTopNodeAllMetrics(t *testing.T) {
expectedMetricsPath := fmt.Sprintf("%s/%s/nodes", baseMetricsAddress, metricsApiVersion) expectedMetricsPath := fmt.Sprintf("%s/%s/nodes", baseMetricsAddress, metricsApiVersion)
expectedNodePath := fmt.Sprintf("/%s/%s/nodes", apiPrefix, apiVersion) expectedNodePath := fmt.Sprintf("/%s/%s/nodes", apiPrefix, apiVersion)
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -95,7 +100,10 @@ func TestTopNodeAllMetricsCustomDefaults(t *testing.T) { ...@@ -95,7 +100,10 @@ func TestTopNodeAllMetricsCustomDefaults(t *testing.T) {
expectedMetricsPath := fmt.Sprintf("%s/%s/nodes", customBaseMetricsAddress, metricsApiVersion) expectedMetricsPath := fmt.Sprintf("%s/%s/nodes", customBaseMetricsAddress, metricsApiVersion)
expectedNodePath := fmt.Sprintf("/%s/%s/nodes", apiPrefix, apiVersion) expectedNodePath := fmt.Sprintf("/%s/%s/nodes", apiPrefix, apiVersion)
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -153,7 +161,10 @@ func TestTopNodeWithNameMetrics(t *testing.T) { ...@@ -153,7 +161,10 @@ func TestTopNodeWithNameMetrics(t *testing.T) {
expectedPath := fmt.Sprintf("%s/%s/nodes/%s", baseMetricsAddress, metricsApiVersion, expectedMetrics.Name) expectedPath := fmt.Sprintf("%s/%s/nodes/%s", baseMetricsAddress, metricsApiVersion, expectedMetrics.Name)
expectedNodePath := fmt.Sprintf("/%s/%s/nodes/%s", apiPrefix, apiVersion, expectedMetrics.Name) expectedNodePath := fmt.Sprintf("/%s/%s/nodes/%s", apiPrefix, apiVersion, expectedMetrics.Name)
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -215,7 +226,10 @@ func TestTopNodeWithLabelSelectorMetrics(t *testing.T) { ...@@ -215,7 +226,10 @@ func TestTopNodeWithLabelSelectorMetrics(t *testing.T) {
expectedQuery := fmt.Sprintf("labelSelector=%s", url.QueryEscape(label)) expectedQuery := fmt.Sprintf("labelSelector=%s", url.QueryEscape(label))
expectedNodePath := fmt.Sprintf("/%s/%s/nodes", apiPrefix, apiVersion) expectedNodePath := fmt.Sprintf("/%s/%s/nodes", apiPrefix, apiVersion)
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -265,7 +279,10 @@ func TestTopNodeAllMetricsFromMetricsServer(t *testing.T) { ...@@ -265,7 +279,10 @@ func TestTopNodeAllMetricsFromMetricsServer(t *testing.T) {
expectedMetrics, nodes := testNodeV1beta1MetricsData() expectedMetrics, nodes := testNodeV1beta1MetricsData()
expectedNodePath := fmt.Sprintf("/%s/%s/nodes", apiPrefix, apiVersion) expectedNodePath := fmt.Sprintf("/%s/%s/nodes", apiPrefix, apiVersion)
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -314,7 +331,10 @@ func TestTopNodeWithNameMetricsFromMetricsServer(t *testing.T) { ...@@ -314,7 +331,10 @@ func TestTopNodeWithNameMetricsFromMetricsServer(t *testing.T) {
} }
expectedNodePath := fmt.Sprintf("/%s/%s/nodes/%s", apiPrefix, apiVersion, expectedMetrics.Name) expectedNodePath := fmt.Sprintf("/%s/%s/nodes/%s", apiPrefix, apiVersion, expectedMetrics.Name)
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -373,7 +393,10 @@ func TestTopNodeWithLabelSelectorMetricsFromMetricsServer(t *testing.T) { ...@@ -373,7 +393,10 @@ func TestTopNodeWithLabelSelectorMetricsFromMetricsServer(t *testing.T) {
label := "key=value" label := "key=value"
expectedNodePath := fmt.Sprintf("/%s/%s/nodes", apiPrefix, apiVersion) expectedNodePath := fmt.Sprintf("/%s/%s/nodes", apiPrefix, apiVersion)
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
codec := legacyscheme.Codecs.LegacyCodec(scheme.Versions...)
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
......
...@@ -35,6 +35,7 @@ import ( ...@@ -35,6 +35,7 @@ import (
restclient "k8s.io/client-go/rest" restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
core "k8s.io/client-go/testing" core "k8s.io/client-go/testing"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
metricsv1alpha1api "k8s.io/metrics/pkg/apis/metrics/v1alpha1" metricsv1alpha1api "k8s.io/metrics/pkg/apis/metrics/v1alpha1"
metricsv1beta1api "k8s.io/metrics/pkg/apis/metrics/v1beta1" metricsv1beta1api "k8s.io/metrics/pkg/apis/metrics/v1beta1"
...@@ -161,7 +162,9 @@ func TestTopPod(t *testing.T) { ...@@ -161,7 +162,9 @@ func TestTopPod(t *testing.T) {
} }
} }
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -301,7 +304,9 @@ func TestTopPodWithMetricsServer(t *testing.T) { ...@@ -301,7 +304,9 @@ func TestTopPodWithMetricsServer(t *testing.T) {
}) })
} }
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
...@@ -479,7 +484,9 @@ func TestTopPodCustomDefaults(t *testing.T) { ...@@ -479,7 +484,9 @@ func TestTopPodCustomDefaults(t *testing.T) {
} }
} }
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf := cmdtesting.NewAPIFactory()
ns := legacyscheme.Codecs
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
......
...@@ -43,7 +43,7 @@ const ( ...@@ -43,7 +43,7 @@ const (
func TestTopSubcommandsExist(t *testing.T) { func TestTopSubcommandsExist(t *testing.T) {
initTestErrorHandler(t) initTestErrorHandler(t)
f, _, _, _ := cmdtesting.NewAPIFactory() f, _ := cmdtesting.NewAPIFactory()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdTop(f, buf, buf) cmd := NewCmdTop(f, buf, buf)
......
...@@ -62,7 +62,6 @@ type EditOptions struct { ...@@ -62,7 +62,6 @@ type EditOptions struct {
ResourceMapper *resource.Mapper ResourceMapper *resource.Mapper
OriginalResult *resource.Result OriginalResult *resource.Result
Encoder runtime.Encoder
EditMode EditMode EditMode EditMode
...@@ -137,7 +136,6 @@ func (o *EditOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args [] ...@@ -137,7 +136,6 @@ func (o *EditOptions) Complete(f cmdutil.Factory, out, errOut io.Writer, args []
} }
o.CmdNamespace = cmdNamespace o.CmdNamespace = cmdNamespace
o.Encoder = f.JSONEncoder()
o.f = f o.f = f
// Set up writer // Set up writer
...@@ -394,12 +392,12 @@ func (o *EditOptions) visitToApplyEditPatch(originalInfos []*resource.Info, patc ...@@ -394,12 +392,12 @@ func (o *EditOptions) visitToApplyEditPatch(originalInfos []*resource.Info, patc
return fmt.Errorf("no original object found for %#v", info.Object) return fmt.Errorf("no original object found for %#v", info.Object)
} }
originalJS, err := encodeToJson(o.Encoder, originalInfo.Object) originalJS, err := encodeToJson(cmdutil.InternalVersionJSONEncoder(), originalInfo.Object)
if err != nil { if err != nil {
return err return err
} }
editedJS, err := encodeToJson(o.Encoder, info.Object) editedJS, err := encodeToJson(cmdutil.InternalVersionJSONEncoder(), info.Object)
if err != nil { if err != nil {
return err return err
} }
...@@ -420,7 +418,7 @@ func (o *EditOptions) visitToApplyEditPatch(originalInfos []*resource.Info, patc ...@@ -420,7 +418,7 @@ func (o *EditOptions) visitToApplyEditPatch(originalInfos []*resource.Info, patc
} }
func (o *EditOptions) annotationPatch(update *resource.Info) error { func (o *EditOptions) annotationPatch(update *resource.Info) error {
patch, _, patchType, err := GetApplyPatch(update.Object, o.Encoder) patch, _, patchType, err := GetApplyPatch(update.Object, cmdutil.InternalVersionJSONEncoder())
if err != nil { if err != nil {
return err return err
} }
...@@ -519,12 +517,12 @@ func (o *EditOptions) visitToPatch(originalInfos []*resource.Info, patchVisitor ...@@ -519,12 +517,12 @@ func (o *EditOptions) visitToPatch(originalInfos []*resource.Info, patchVisitor
return fmt.Errorf("no original object found for %#v", info.Object) return fmt.Errorf("no original object found for %#v", info.Object)
} }
originalJS, err := encodeToJson(o.Encoder, originalInfo.Object) originalJS, err := encodeToJson(cmdutil.InternalVersionJSONEncoder(), originalInfo.Object)
if err != nil { if err != nil {
return err return err
} }
editedJS, err := encodeToJson(o.Encoder, info.Object) editedJS, err := encodeToJson(cmdutil.InternalVersionJSONEncoder(), info.Object)
if err != nil { if err != nil {
return err return err
} }
...@@ -607,7 +605,7 @@ func (o *EditOptions) visitAnnotation(annotationVisitor resource.Visitor) error ...@@ -607,7 +605,7 @@ func (o *EditOptions) visitAnnotation(annotationVisitor resource.Visitor) error
err := annotationVisitor.Visit(func(info *resource.Info, incomingErr error) error { err := annotationVisitor.Visit(func(info *resource.Info, incomingErr error) error {
// put configuration annotation in "updates" // put configuration annotation in "updates"
if o.ApplyAnnotation { if o.ApplyAnnotation {
if err := kubectl.CreateOrUpdateAnnotation(true, info, o.Encoder); err != nil { if err := kubectl.CreateOrUpdateAnnotation(true, info, cmdutil.InternalVersionJSONEncoder()); err != nil {
return err return err
} }
} }
......
...@@ -112,13 +112,6 @@ type ClientAccessFactory interface { ...@@ -112,13 +112,6 @@ type ClientAccessFactory interface {
// TODO remove. This should be rolled into `ClientConfig` // TODO remove. This should be rolled into `ClientConfig`
ClientConfigForVersion(requiredVersion *schema.GroupVersion) (*restclient.Config, error) ClientConfigForVersion(requiredVersion *schema.GroupVersion) (*restclient.Config, error)
// Returns interfaces for decoding objects - if toInternal is set, decoded objects will be converted
// into their internal form (if possible). Eventually the internal form will be removed as an option,
// and only versioned objects will be returned.
Decoder(toInternal bool) runtime.Decoder
// Returns an encoder capable of encoding a provided object into JSON in the default desired version.
JSONEncoder() runtime.Encoder
// UpdatePodSpecForObject will call the provided function on the pod spec this object supports, // UpdatePodSpecForObject will call the provided function on the pod spec this object supports,
// return false if no pod spec is supported, or return an error. // return false if no pod spec is supported, or return an error.
UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.PodSpec) error) (bool, error) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.PodSpec) error) (bool, error)
......
...@@ -54,7 +54,7 @@ func (f *ring2Factory) NewBuilder() *resource.Builder { ...@@ -54,7 +54,7 @@ func (f *ring2Factory) NewBuilder() *resource.Builder {
RESTMapper: mapper, RESTMapper: mapper,
ObjectTyper: typer, ObjectTyper: typer,
ClientMapper: clientMapperFunc, ClientMapper: clientMapperFunc,
Decoder: f.clientAccessFactory.Decoder(true), Decoder: InternalVersionDecoder(),
}, },
&resource.Mapper{ &resource.Mapper{
RESTMapper: mapper, RESTMapper: mapper,
......
...@@ -231,20 +231,6 @@ func (f *ring0Factory) RESTClient() (*restclient.RESTClient, error) { ...@@ -231,20 +231,6 @@ func (f *ring0Factory) RESTClient() (*restclient.RESTClient, error) {
return restclient.RESTClientFor(clientConfig) return restclient.RESTClientFor(clientConfig)
} }
func (f *ring0Factory) Decoder(toInternal bool) runtime.Decoder {
var decoder runtime.Decoder
if toInternal {
decoder = legacyscheme.Codecs.UniversalDecoder()
} else {
decoder = legacyscheme.Codecs.UniversalDeserializer()
}
return decoder
}
func (f *ring0Factory) JSONEncoder() runtime.Encoder {
return legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.EnabledVersions()...)
}
func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.PodSpec) error) (bool, error) { func (f *ring0Factory) UpdatePodSpecForObject(obj runtime.Object, fn func(*v1.PodSpec) error) (bool, error) {
// TODO: replace with a swagger schema based approach (identify pod template via schema introspection) // TODO: replace with a swagger schema based approach (identify pod template via schema introspection)
switch t := obj.(type) { switch t := obj.(type) {
...@@ -451,7 +437,7 @@ func (f *ring0Factory) Pauser(info *resource.Info) ([]byte, error) { ...@@ -451,7 +437,7 @@ func (f *ring0Factory) Pauser(info *resource.Info) ([]byte, error) {
return nil, errors.New("is already paused") return nil, errors.New("is already paused")
} }
obj.Spec.Paused = true obj.Spec.Paused = true
return runtime.Encode(f.JSONEncoder(), info.Object) return runtime.Encode(InternalVersionJSONEncoder(), info.Object)
default: default:
return nil, fmt.Errorf("pausing is not supported") return nil, fmt.Errorf("pausing is not supported")
} }
...@@ -468,7 +454,7 @@ func (f *ring0Factory) Resumer(info *resource.Info) ([]byte, error) { ...@@ -468,7 +454,7 @@ func (f *ring0Factory) Resumer(info *resource.Info) ([]byte, error) {
return nil, errors.New("is not paused") return nil, errors.New("is not paused")
} }
obj.Spec.Paused = false obj.Spec.Paused = false
return runtime.Encode(f.JSONEncoder(), info.Object) return runtime.Encode(InternalVersionJSONEncoder(), info.Object)
default: default:
return nil, fmt.Errorf("resuming is not supported") return nil, fmt.Errorf("resuming is not supported")
} }
...@@ -714,3 +700,12 @@ func computeDiscoverCacheDir(parentDir, host string) string { ...@@ -714,3 +700,12 @@ func computeDiscoverCacheDir(parentDir, host string) string {
return filepath.Join(parentDir, safeHost) return filepath.Join(parentDir, safeHost)
} }
// this method exists to help us find the points still relying on internal types.
func InternalVersionDecoder() runtime.Decoder {
return legacyscheme.Codecs.UniversalDecoder()
}
func InternalVersionJSONEncoder() runtime.Encoder {
return legacyscheme.Codecs.LegacyCodec(legacyscheme.Registry.EnabledVersions()...)
}
...@@ -49,9 +49,8 @@ go_test( ...@@ -49,9 +49,8 @@ go_test(
data = ["test-swagger.json"], data = ["test-swagger.json"],
embed = [":go_default_library"], embed = [":go_default_library"],
deps = [ deps = [
"//pkg/kubectl/cmd/testing:go_default_library",
"//pkg/kubectl/cmd/util/openapi/testing:go_default_library", "//pkg/kubectl/cmd/util/openapi/testing:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//pkg/kubectl/scheme:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library", "//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
], ],
) )
...@@ -20,8 +20,7 @@ import ( ...@@ -20,8 +20,7 @@ import (
"reflect" "reflect"
"testing" "testing"
"k8s.io/apimachinery/pkg/api/meta" "k8s.io/kubernetes/pkg/kubectl/scheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
func TestSplitAndParseResourceRequest(t *testing.T) { func TestSplitAndParseResourceRequest(t *testing.T) {
...@@ -57,7 +56,7 @@ func TestSplitAndParseResourceRequest(t *testing.T) { ...@@ -57,7 +56,7 @@ func TestSplitAndParseResourceRequest(t *testing.T) {
}, },
} }
mapper := getMapper() mapper := scheme.Registry.RESTMapper(scheme.Versions...)
for _, test := range tests { for _, test := range tests {
gotInResource, gotFieldsPath, err := SplitAndParseResourceRequest(test.inresource, mapper) gotInResource, gotFieldsPath, err := SplitAndParseResourceRequest(test.inresource, mapper)
if err != nil { if err != nil {
...@@ -73,9 +72,3 @@ func TestSplitAndParseResourceRequest(t *testing.T) { ...@@ -73,9 +72,3 @@ func TestSplitAndParseResourceRequest(t *testing.T) {
} }
} }
} }
func getMapper() meta.RESTMapper {
f, _, _, _ := cmdtesting.NewTestFactory()
mapper, _ := f.Object()
return mapper
}
...@@ -47,3 +47,8 @@ var ParameterCodec = runtime.NewParameterCodec(Scheme) ...@@ -47,3 +47,8 @@ var ParameterCodec = runtime.NewParameterCodec(Scheme)
// from the server for use in the client, but that gives conflicting lists of non-existent versions. This only needs to // from the server for use in the client, but that gives conflicting lists of non-existent versions. This only needs to
// live until we stop attempting to perform any conversion client-side and is only valid for items existent in our scheme. // live until we stop attempting to perform any conversion client-side and is only valid for items existent in our scheme.
var Versions = []schema.GroupVersion{} var Versions = []schema.GroupVersion{}
// DefaultJSONEncoder returns a default encoder for our scheme
func DefaultJSONEncoder() runtime.Encoder {
return Codecs.LegacyCodec(Versions...)
}
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