Unverified Commit f3314347 authored by Kubernetes Submit Queue's avatar Kubernetes Submit Queue Committed by GitHub

Merge pull request #60154 from deads2k/cli-11-decoder

Automatic merge from submit-queue (batch tested with PRs 60148, 60022, 59125, 60068, 60154). If you want to cherry-pick this change to another branch, please follow the instructions <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/cherry-picks.md">here</a>. remove unneeded factory codec methods Builds on https://github.com/kubernetes/kubernetes/pull/60117, so only the last commit is unique. After we collapsed onto our own internal scheme for managing conversion and typing, the flexibility in codecs is the next area to collapse. This pull eliminates those methods from the factory and then removes lots of dead code in the fake factories that supported this un-used flexibility @kubernetes/sig-cli-maintainers @pwittrock @adohe @soltysh looking cleaner all the time. ```release-note NONE ```
parents c0026e50 d8a5420b
...@@ -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