Merge pull request #54533 from mengqiy/kubectl_scheme

Automatic merge from submit-queue (batch tested with PRs 54533, 54777, 54763, 54806, 54703). 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>.

Create kubectl's own instance of Scheme and Registry

Create kubectl's own instance of Registry and Scheme.
Switch most command that doesn't depend on internal types to use kubectl's own scheme and register.

There are some hack of registering the internal types in some of unit test now, they should be gone after switch to the external type.

Switch kubectl's factory code to use kubectl's scheme will create a lot of ripples.
I don't want make this PR a super giant PR, so I will do it in a followup PR.

Partially addressed #48564.

Copy the summary from https://github.com/kubernetes/kubernetes/pull/54533#issuecomment-340522302:
- creates pkg/kubectl/scheme (install.go and scheme.go) with
deps on properly vendored k8s.io packages.
- deletes about 80% percent of dependence on pkg/api/legacyscheme
- replaces direct dependence from pkg/kubectl on
pkg/apis/rbac
to a vendor style dependence on
k8s.io/api/rbac
and removes dependencies on rbac paths containing internalversion
- replaces almost 50% of direct dependence on pkg/api with (properly vendored)
k8s.io/api/core/v1
- deletes all of dependence on pkg/apis/policy and k8s.io/api/policy/v1beta1

```release-note
NONE
```

/assign @monopole @apelisse
cc: @pwittrock
This commit is contained in:
Kubernetes Submit Queue 2017-10-30 17:38:14 -07:00 committed by GitHub
commit 812f1a3edb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
67 changed files with 774 additions and 450 deletions

View File

@ -42,7 +42,6 @@ go_test(
"//pkg/apis/apps:go_default_library", "//pkg/apis/apps:go_default_library",
"//pkg/apis/batch:go_default_library", "//pkg/apis/batch:go_default_library",
"//pkg/apis/extensions:go_default_library", "//pkg/apis/extensions:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library", "//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/batch/internalversion:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/batch/internalversion:go_default_library",
@ -58,6 +57,7 @@ go_test(
"//vendor/k8s.io/api/batch/v2alpha1:go_default_library", "//vendor/k8s.io/api/batch/v2alpha1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library", "//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/api/rbac/v1:go_default_library",
"//vendor/k8s.io/api/rbac/v1beta1:go_default_library", "//vendor/k8s.io/api/rbac/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
@ -121,8 +121,6 @@ go_library(
"//pkg/apis/apps:go_default_library", "//pkg/apis/apps:go_default_library",
"//pkg/apis/batch:go_default_library", "//pkg/apis/batch:go_default_library",
"//pkg/apis/extensions:go_default_library", "//pkg/apis/extensions:go_default_library",
"//pkg/apis/policy:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/apps/internalversion:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/apps/internalversion:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/batch/internalversion:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/batch/internalversion:go_default_library",
@ -149,6 +147,8 @@ go_library(
"//vendor/k8s.io/api/batch/v2alpha1:go_default_library", "//vendor/k8s.io/api/batch/v2alpha1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library", "//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/api/policy/v1beta1:go_default_library",
"//vendor/k8s.io/api/rbac/v1:go_default_library",
"//vendor/k8s.io/api/rbac/v1beta1:go_default_library", "//vendor/k8s.io/api/rbac/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
@ -198,6 +198,7 @@ filegroup(
"//pkg/kubectl/plugins:all-srcs", "//pkg/kubectl/plugins:all-srcs",
"//pkg/kubectl/proxy:all-srcs", "//pkg/kubectl/proxy:all-srcs",
"//pkg/kubectl/resource:all-srcs", "//pkg/kubectl/resource:all-srcs",
"//pkg/kubectl/scheme:all-srcs",
"//pkg/kubectl/testing:all-srcs", "//pkg/kubectl/testing:all-srcs",
"//pkg/kubectl/util:all-srcs", "//pkg/kubectl/util:all-srcs",
"//pkg/kubectl/validation:all-srcs", "//pkg/kubectl/validation:all-srcs",

View File

@ -72,10 +72,8 @@ go_library(
"//pkg/api/legacyscheme:go_default_library", "//pkg/api/legacyscheme:go_default_library",
"//pkg/api/validation:go_default_library", "//pkg/api/validation:go_default_library",
"//pkg/apis/certificates:go_default_library", "//pkg/apis/certificates:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/client/clientset_generated/internalclientset:go_default_library", "//pkg/client/clientset_generated/internalclientset:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library", "//pkg/client/clientset_generated/internalclientset/typed/core/internalversion:go_default_library",
"//pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion:go_default_library",
"//pkg/client/unversioned:go_default_library", "//pkg/client/unversioned:go_default_library",
"//pkg/kubectl:go_default_library", "//pkg/kubectl:go_default_library",
"//pkg/kubectl/apply/parse:go_default_library", "//pkg/kubectl/apply/parse:go_default_library",
@ -93,6 +91,7 @@ go_library(
"//pkg/kubectl/plugins:go_default_library", "//pkg/kubectl/plugins:go_default_library",
"//pkg/kubectl/proxy:go_default_library", "//pkg/kubectl/proxy:go_default_library",
"//pkg/kubectl/resource:go_default_library", "//pkg/kubectl/resource:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/kubectl/util:go_default_library", "//pkg/kubectl/util:go_default_library",
"//pkg/kubectl/util/i18n:go_default_library", "//pkg/kubectl/util/i18n:go_default_library",
"//pkg/kubectl/util/term:go_default_library", "//pkg/kubectl/util/term:go_default_library",
@ -116,6 +115,7 @@ go_library(
"//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library", "//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/api/policy/v1beta1:go_default_library", "//vendor/k8s.io/api/policy/v1beta1:go_default_library",
"//vendor/k8s.io/api/rbac/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/meta:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library", "//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
@ -140,6 +140,7 @@ go_library(
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library", "//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
"//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library", "//vendor/k8s.io/apiserver/pkg/util/flag:go_default_library",
"//vendor/k8s.io/client-go/kubernetes:go_default_library", "//vendor/k8s.io/client-go/kubernetes:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/typed/rbac/v1:go_default_library",
"//vendor/k8s.io/client-go/rest:go_default_library", "//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/tools/clientcmd:go_default_library", "//vendor/k8s.io/client-go/tools/clientcmd:go_default_library",
"//vendor/k8s.io/client-go/tools/portforward:go_default_library", "//vendor/k8s.io/client-go/tools/portforward:go_default_library",
@ -205,15 +206,16 @@ go_test(
"//pkg/api/ref:go_default_library", "//pkg/api/ref: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/api/v1:go_default_library",
"//pkg/apis/batch:go_default_library", "//pkg/apis/batch:go_default_library",
"//pkg/apis/extensions:go_default_library", "//pkg/apis/extensions:go_default_library",
"//pkg/apis/rbac:go_default_library",
"//pkg/kubectl:go_default_library", "//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/testing:go_default_library", "//pkg/kubectl/cmd/testing:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library", "//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/cmd/util/openapi:go_default_library", "//pkg/kubectl/cmd/util/openapi: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/util/i18n:go_default_library", "//pkg/kubectl/util/i18n:go_default_library",
"//pkg/kubectl/util/term:go_default_library", "//pkg/kubectl/util/term:go_default_library",
"//pkg/printers:go_default_library", "//pkg/printers:go_default_library",
@ -224,6 +226,7 @@ go_test(
"//vendor/gopkg.in/yaml.v2:go_default_library", "//vendor/gopkg.in/yaml.v2:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library", "//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/policy/v1beta1:go_default_library", "//vendor/k8s.io/api/policy/v1beta1:go_default_library",
"//vendor/k8s.io/api/rbac/v1:go_default_library",
"//vendor/k8s.io/api/rbac/v1beta1:go_default_library", "//vendor/k8s.io/api/rbac/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library", "//vendor/k8s.io/apimachinery/pkg/api/errors:go_default_library",

View File

@ -25,10 +25,9 @@ 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"
restclient "k8s.io/client-go/rest" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
@ -419,7 +418,7 @@ func TestAnnotateErrors(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdAnnotate(f, buf) cmd := NewCmdAnnotate(f, buf)
@ -452,7 +451,7 @@ func TestAnnotateObject(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Group: "testgroup", Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch req.Method { switch req.Method {
@ -479,7 +478,7 @@ func TestAnnotateObject(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdAnnotate(f, buf) cmd := NewCmdAnnotate(f, buf)
@ -503,7 +502,7 @@ func TestAnnotateObjectFromFile(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Group: "testgroup", Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch req.Method { switch req.Method {
@ -530,7 +529,7 @@ func TestAnnotateObjectFromFile(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdAnnotate(f, buf) cmd := NewCmdAnnotate(f, buf)
@ -552,7 +551,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: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Group: "testgroup", Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
t.Fatalf("unexpected request: %s %#v\n%#v", req.Method, req.URL, req) t.Fatalf("unexpected request: %s %#v\n%#v", req.Method, req.URL, req)
@ -560,7 +559,7 @@ func TestAnnotateLocal(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdAnnotate(f, buf) cmd := NewCmdAnnotate(f, buf)
@ -585,7 +584,7 @@ func TestAnnotateMultipleObjects(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Group: "testgroup", Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch req.Method { switch req.Method {
@ -614,7 +613,7 @@ func TestAnnotateMultipleObjects(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdAnnotate(f, buf) cmd := NewCmdAnnotate(f, buf)

View File

@ -38,12 +38,12 @@ import (
"k8s.io/apimachinery/pkg/util/strategicpatch" "k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/apimachinery/pkg/util/wait" "k8s.io/apimachinery/pkg/util/wait"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"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"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates" "k8s.io/kubernetes/pkg/kubectl/cmd/templates"
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"
"k8s.io/kubernetes/pkg/kubectl/util/i18n" "k8s.io/kubernetes/pkg/kubectl/util/i18n"
) )
@ -589,7 +589,7 @@ func (p *patcher) patchSimple(obj runtime.Object, modified []byte, source, names
// Create the versioned struct from the type defined in the restmapping // Create the versioned struct from the type defined in the restmapping
// (which is the API version we'll be submitting the patch to) // (which is the API version we'll be submitting the patch to)
versionedObject, err := legacyscheme.Scheme.New(p.mapping.GroupVersionKind) versionedObject, err := scheme.Scheme.New(p.mapping.GroupVersionKind)
var patchType types.PatchType var patchType types.PatchType
var patch []byte var patch []byte
createPatchErrFormat := "creating patch with:\noriginal:\n%s\nmodified:\n%s\ncurrent:\n%s\nfor:" createPatchErrFormat := "creating patch with:\noriginal:\n%s\nmodified:\n%s\ncurrent:\n%s\nfor:"

View File

@ -33,10 +33,8 @@ import (
"k8s.io/apimachinery/pkg/apis/meta/v1/unstructured" "k8s.io/apimachinery/pkg/apis/meta/v1/unstructured"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
"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"
@ -358,7 +356,6 @@ func TestApplyObjectWithoutAnnotation(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -403,7 +400,6 @@ func TestApplyObject(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -460,7 +456,6 @@ func TestApplyObjectOutput(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &printers.YAMLPrinter{} tf.Printer = &printers.YAMLPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -505,7 +500,6 @@ func TestApplyRetry(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -559,7 +553,6 @@ func TestApplyNonExistObject(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -610,7 +603,6 @@ func testApplyMultipleObjects(t *testing.T, asList bool) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -688,7 +680,6 @@ func TestApplyNULLPreservation(t *testing.T) {
f, tf, _, _ := cmdtesting.NewTestFactory() f, tf, _, _ := cmdtesting.NewTestFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -757,7 +748,6 @@ func TestUnstructuredApply(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -821,7 +811,6 @@ func TestUnstructuredIdempotentApply(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -1035,7 +1024,6 @@ func TestForceApply(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -1093,7 +1081,7 @@ func TestForceApply(t *testing.T) {
}), }),
} }
tf.Client = tf.UnstructuredClient tf.Client = tf.UnstructuredClient
tf.ClientConfig = &restclient.Config{} tf.ClientConfig = defaultClientConfig()
tf.Namespace = "test" tf.Namespace = "test"
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
errBuf := bytes.NewBuffer([]byte{}) errBuf := bytes.NewBuffer([]byte{})

View File

@ -53,9 +53,8 @@ go_test(
importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/auth", importpath = "k8s.io/kubernetes/pkg/kubectl/cmd/auth",
library = ":go_default_library", library = ":go_default_library",
deps = [ deps = [
"//pkg/api:go_default_library",
"//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/client-go/rest:go_default_library", "//vendor/k8s.io/client-go/rest:go_default_library",
"//vendor/k8s.io/client-go/rest/fake:go_default_library", "//vendor/k8s.io/client-go/rest/fake:go_default_library",
], ],

View File

@ -24,10 +24,9 @@ import (
"strings" "strings"
"testing" "testing"
"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"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
@ -122,7 +121,7 @@ func TestRunAccessCheck(t *testing.T) {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf, _, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Group: "", Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
expectPath := "/apis/authorization.k8s.io/v1/selfsubjectaccessreviews" expectPath := "/apis/authorization.k8s.io/v1/selfsubjectaccessreviews"
@ -153,7 +152,7 @@ func TestRunAccessCheck(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &schema.GroupVersion{Group: "", Version: "v1"}}}
if err := test.o.Complete(f, test.args); err != nil { if err := test.o.Complete(f, test.args); err != nil {
t.Errorf("%s: %v", test.name, err) t.Errorf("%s: %v", test.name, err)

View File

@ -37,15 +37,20 @@ 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" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/api/testapi" "k8s.io/kubernetes/pkg/api/testapi"
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"
"k8s.io/kubernetes/pkg/printers" "k8s.io/kubernetes/pkg/printers"
printersinternal "k8s.io/kubernetes/pkg/printers/internalversion" printersinternal "k8s.io/kubernetes/pkg/printers/internalversion"
"k8s.io/kubernetes/pkg/util/strings" "k8s.io/kubernetes/pkg/util/strings"
) )
// This init should be removed after switching this command and its tests to user external types.
func init() {
api.AddToScheme(scheme.Scheme)
}
func initTestErrorHandler(t *testing.T) { func initTestErrorHandler(t *testing.T) {
cmdutil.BehaviorOnFatal(func(str string, code int) { cmdutil.BehaviorOnFatal(func(str string, code int) {
t.Errorf("Error running command (exit code %d): %s", code, str) t.Errorf("Error running command (exit code %d): %s", code, str)
@ -62,9 +67,9 @@ func defaultClientConfig() *restclient.Config {
return &restclient.Config{ return &restclient.Config{
APIPath: "/api", APIPath: "/api",
ContentConfig: restclient.ContentConfig{ ContentConfig: restclient.ContentConfig{
NegotiatedSerializer: legacyscheme.Codecs, NegotiatedSerializer: scheme.Codecs,
ContentType: runtime.ContentTypeJSON, ContentType: runtime.ContentTypeJSON,
GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: &schema.GroupVersion{Version: "v1"},
}, },
} }
} }
@ -73,7 +78,7 @@ func defaultClientConfigForVersion(version *schema.GroupVersion) *restclient.Con
return &restclient.Config{ return &restclient.Config{
APIPath: "/api", APIPath: "/api",
ContentConfig: restclient.ContentConfig{ ContentConfig: restclient.ContentConfig{
NegotiatedSerializer: legacyscheme.Codecs, NegotiatedSerializer: scheme.Codecs,
ContentType: runtime.ContentTypeJSON, ContentType: runtime.ContentTypeJSON,
GroupVersion: version, GroupVersion: version,
}, },
@ -163,7 +168,6 @@ func Example_printReplicationControllerWithNamespace() {
printersinternal.AddHandlers(p) printersinternal.AddHandlers(p)
tf.Printer = p tf.Printer = p
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
} }
@ -216,7 +220,6 @@ func Example_printMultiContainersReplicationControllerWithWide() {
printersinternal.AddHandlers(p) printersinternal.AddHandlers(p)
tf.Printer = p tf.Printer = p
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
} }
@ -270,7 +273,6 @@ func Example_printReplicationController() {
printersinternal.AddHandlers(p) printersinternal.AddHandlers(p)
tf.Printer = p tf.Printer = p
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
} }
@ -325,7 +327,6 @@ func Example_printPodWithWideFormat() {
printersinternal.AddHandlers(p) printersinternal.AddHandlers(p)
tf.Printer = p tf.Printer = p
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
} }
@ -368,7 +369,6 @@ func Example_printPodWithShowLabels() {
printersinternal.AddHandlers(p) printersinternal.AddHandlers(p)
tf.Printer = p tf.Printer = p
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
} }
@ -505,7 +505,6 @@ func Example_printPodHideTerminated() {
printersinternal.AddHandlers(p) printersinternal.AddHandlers(p)
tf.Printer = p tf.Printer = p
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
} }
@ -541,7 +540,6 @@ func Example_printPodShowAll() {
printersinternal.AddHandlers(p) printersinternal.AddHandlers(p)
tf.Printer = p tf.Printer = p
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
} }
@ -570,7 +568,6 @@ func Example_printServiceWithNamespacesAndLabels() {
printersinternal.AddHandlers(p) printersinternal.AddHandlers(p)
tf.Printer = p tf.Printer = p
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: nil, Client: nil,
} }

View File

@ -24,10 +24,10 @@ 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/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates" "k8s.io/kubernetes/pkg/kubectl/cmd/templates"
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"
"k8s.io/kubernetes/pkg/kubectl/util/i18n" "k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers" "k8s.io/kubernetes/pkg/printers"
@ -119,11 +119,11 @@ func outputVersion(cmd *cobra.Command, defaultVersion *schema.GroupVersion) (sch
// Complete collects information required to run Convert command from command line. // Complete collects information required to run Convert command from command line.
func (o *ConvertOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Command) (err error) { func (o *ConvertOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.Command) (err error) {
o.outputVersion, err = outputVersion(cmd, &legacyscheme.Registry.EnabledVersionsForGroup(api.GroupName)[0]) o.outputVersion, err = outputVersion(cmd, &scheme.Registry.EnabledVersionsForGroup(api.GroupName)[0])
if err != nil { if err != nil {
return err return err
} }
if !legacyscheme.Registry.IsEnabledVersion(o.outputVersion) { if !scheme.Registry.IsEnabledVersion(o.outputVersion) {
cmdutil.UsageErrorf(cmd, "'%s' is not a registered version.", o.outputVersion) cmdutil.UsageErrorf(cmd, "'%s' is not a registered version.", o.outputVersion)
} }
@ -208,7 +208,7 @@ func (o *ConvertOptions) RunConvert() error {
// and squashes the list's items into a single versioned runtime.Object. // and squashes the list's items into a single versioned runtime.Object.
func objectListToVersionedObject(objects []runtime.Object, version schema.GroupVersion) (runtime.Object, error) { func objectListToVersionedObject(objects []runtime.Object, version schema.GroupVersion) (runtime.Object, error) {
objectList := &api.List{Items: objects} objectList := &api.List{Items: objects}
converted, err := tryConvert(legacyscheme.Scheme, objectList, version, legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion) converted, err := tryConvert(scheme.Scheme, objectList, version, scheme.Registry.GroupOrDie(api.GroupName).GroupVersion)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -230,7 +230,7 @@ func asVersionedObject(infos []*resource.Info, forceList bool, version schema.Gr
object = objects[0] object = objects[0]
} else { } else {
object = &api.List{Items: objects} object = &api.List{Items: objects}
converted, err := tryConvert(legacyscheme.Scheme, object, version, legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion) converted, err := tryConvert(scheme.Scheme, object, version, scheme.Registry.GroupOrDie(api.GroupName).GroupVersion)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -261,7 +261,7 @@ func asVersionedObjects(infos []*resource.Info, version schema.GroupVersion, enc
// objects that are not part of api.Scheme must be converted to JSON // objects that are not part of api.Scheme must be converted to JSON
// TODO: convert to map[string]interface{}, attach to runtime.Unknown? // TODO: convert to map[string]interface{}, attach to runtime.Unknown?
if !version.Empty() { if !version.Empty() {
if _, _, err := legacyscheme.Scheme.ObjectKinds(info.Object); runtime.IsNotRegisteredError(err) { if _, _, err := scheme.Scheme.ObjectKinds(info.Object); runtime.IsNotRegisteredError(err) {
// TODO: ideally this would encode to version, but we don't expose multiple codecs here. // TODO: ideally this would encode to version, but we don't expose multiple codecs here.
data, err := runtime.Encode(encoder, info.Object) data, err := runtime.Encode(encoder, info.Object)
if err != nil { if err != nil {

View File

@ -23,7 +23,7 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/apis/rbac" rbacv1 "k8s.io/api/rbac/v1"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates" "k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/util/i18n" "k8s.io/kubernetes/pkg/kubectl/util/i18n"
@ -155,7 +155,7 @@ func (c *CreateClusterRoleOptions) Validate() error {
} }
func (c *CreateClusterRoleOptions) RunCreateRole() error { func (c *CreateClusterRoleOptions) RunCreateRole() error {
clusterRole := &rbac.ClusterRole{} clusterRole := &rbacv1.ClusterRole{}
clusterRole.Name = c.Name clusterRole.Name = c.Name
rules, err := generateResourcePolicyRules(c.Mapper, c.Verbs, c.Resources, c.ResourceNames, c.NonResourceURLs) rules, err := generateResourcePolicyRules(c.Mapper, c.Verbs, c.Resources, c.ResourceNames, c.NonResourceURLs)
if err != nil { if err != nil {

View File

@ -22,10 +22,10 @@ import (
"reflect" "reflect"
"testing" "testing"
rbac "k8s.io/api/rbac/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1" "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/apis/rbac"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )

View File

@ -30,8 +30,6 @@ 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"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
@ -78,7 +76,6 @@ func TestCreateClusterRoleBinding(t *testing.T) {
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &ClusterRoleBindingRESTClient{ tf.Client = &ClusterRoleBindingRESTClient{
RESTClient: &fake.RESTClient{ RESTClient: &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -131,7 +128,6 @@ type ClusterRoleBindingRESTClient struct {
func (c *ClusterRoleBindingRESTClient) Post() *restclient.Request { func (c *ClusterRoleBindingRESTClient) Post() *restclient.Request {
config := restclient.ContentConfig{ config := restclient.ContentConfig{
ContentType: runtime.ContentTypeJSON, ContentType: runtime.ContentTypeJSON,
GroupVersion: &schema.GroupVersion{Group: "rbac.authorization.k8s.io", Version: "v1beta1"},
NegotiatedSerializer: c.NegotiatedSerializer, NegotiatedSerializer: c.NegotiatedSerializer,
} }

View File

@ -21,19 +21,19 @@ import (
"net/http" "net/http"
"testing" "testing"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
func TestCreateConfigMap(t *testing.T) { func TestCreateConfigMap(t *testing.T) {
configMap := &api.ConfigMap{} configMap := &v1.ConfigMap{}
configMap.Name = "my-configmap" configMap.Name = "my-configmap"
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Group: "", Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {

View File

@ -26,8 +26,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"
"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"
@ -77,7 +75,6 @@ func TestCreateDeployment(t *testing.T) {
depName := "jonny-dep" depName := "jonny-dep"
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf, _, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
return &http.Response{ return &http.Response{
@ -106,7 +103,6 @@ func TestCreateDeploymentNoImage(t *testing.T) {
depName := "jonny-dep" depName := "jonny-dep"
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf, _, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
return &http.Response{ return &http.Response{

View File

@ -21,19 +21,19 @@ import (
"net/http" "net/http"
"testing" "testing"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
func TestCreateNamespace(t *testing.T) { func TestCreateNamespace(t *testing.T) {
namespaceObject := &api.Namespace{} namespaceObject := &v1.Namespace{}
namespaceObject.Name = "my-namespace" namespaceObject.Name = "my-namespace"
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {

View File

@ -22,10 +22,9 @@ import (
"net/http" "net/http"
"testing" "testing"
"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"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
@ -33,7 +32,7 @@ func TestCreatePdb(t *testing.T) {
pdbName := "my-pdb" pdbName := "my-pdb"
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf, _, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Group: "policy", Version: "v1beta1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
return &http.Response{ return &http.Response{

View File

@ -21,19 +21,19 @@ import (
"net/http" "net/http"
"testing" "testing"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
func TestCreateQuota(t *testing.T) { func TestCreateQuota(t *testing.T) {
resourceQuotaObject := &api.ResourceQuota{} resourceQuotaObject := &v1.ResourceQuota{}
resourceQuotaObject.Name = "my-quota" resourceQuotaObject.Name = "my-quota"
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {

View File

@ -23,12 +23,12 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
rbacv1 "k8s.io/api/rbac/v1"
"k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/api/meta"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kubernetes/pkg/apis/rbac" clientgorbacv1 "k8s.io/client-go/kubernetes/typed/rbac/v1"
internalversionrbac "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates" "k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/util/i18n" "k8s.io/kubernetes/pkg/kubectl/util/i18n"
@ -108,7 +108,7 @@ type CreateRoleOptions struct {
DryRun bool DryRun bool
OutputFormat string OutputFormat string
Namespace string Namespace string
Client internalversionrbac.RbacInterface Client clientgorbacv1.RbacV1Interface
Mapper meta.RESTMapper Mapper meta.RESTMapper
Out io.Writer Out io.Writer
PrintObject func(obj runtime.Object) error PrintObject func(obj runtime.Object) error
@ -206,11 +206,11 @@ func (c *CreateRoleOptions) Complete(f cmdutil.Factory, cmd *cobra.Command, args
return f.PrintObject(cmd, false, c.Mapper, obj, c.Out) return f.PrintObject(cmd, false, c.Mapper, obj, c.Out)
} }
clientSet, err := f.ClientSet() clientset, err := f.KubernetesClientSet()
if err != nil { if err != nil {
return err return err
} }
c.Client = clientSet.Rbac() c.Client = clientset.RbacV1()
return nil return nil
} }
@ -275,7 +275,7 @@ func (c *CreateRoleOptions) validateResource() error {
} }
func (c *CreateRoleOptions) RunCreateRole() error { func (c *CreateRoleOptions) RunCreateRole() error {
role := &rbac.Role{} role := &rbacv1.Role{}
role.Name = c.Name role.Name = c.Name
rules, err := generateResourcePolicyRules(c.Mapper, c.Verbs, c.Resources, c.ResourceNames, []string{}) rules, err := generateResourcePolicyRules(c.Mapper, c.Verbs, c.Resources, c.ResourceNames, []string{})
if err != nil { if err != nil {
@ -308,7 +308,7 @@ func arrayContains(s []string, e string) bool {
return false return false
} }
func generateResourcePolicyRules(mapper meta.RESTMapper, verbs []string, resources []ResourceOptions, resourceNames []string, nonResourceURLs []string) ([]rbac.PolicyRule, error) { func generateResourcePolicyRules(mapper meta.RESTMapper, verbs []string, resources []ResourceOptions, resourceNames []string, nonResourceURLs []string) ([]rbacv1.PolicyRule, error) {
// groupResourceMapping is a apigroup-resource map. The key of this map is api group, while the value // groupResourceMapping is a apigroup-resource map. The key of this map is api group, while the value
// is a string array of resources under this api group. // is a string array of resources under this api group.
// E.g. groupResourceMapping = {"extensions": ["replicasets", "deployments"], "batch":["jobs"]} // E.g. groupResourceMapping = {"extensions": ["replicasets", "deployments"], "batch":["jobs"]}
@ -334,9 +334,9 @@ func generateResourcePolicyRules(mapper meta.RESTMapper, verbs []string, resourc
} }
// Create separate rule for each of the api group. // Create separate rule for each of the api group.
rules := []rbac.PolicyRule{} rules := []rbacv1.PolicyRule{}
for _, g := range sets.StringKeySet(groupResourceMapping).List() { for _, g := range sets.StringKeySet(groupResourceMapping).List() {
rule := rbac.PolicyRule{} rule := rbacv1.PolicyRule{}
rule.Verbs = verbs rule.Verbs = verbs
rule.Resources = groupResourceMapping[g] rule.Resources = groupResourceMapping[g]
rule.APIGroups = []string{g} rule.APIGroups = []string{g}
@ -345,7 +345,7 @@ func generateResourcePolicyRules(mapper meta.RESTMapper, verbs []string, resourc
} }
if len(nonResourceURLs) > 0 { if len(nonResourceURLs) > 0 {
rule := rbac.PolicyRule{} rule := rbacv1.PolicyRule{}
rule.Verbs = verbs rule.Verbs = verbs
rule.NonResourceURLs = nonResourceURLs rule.NonResourceURLs = nonResourceURLs
rules = append(rules, rule) rules = append(rules, rule)

View File

@ -22,10 +22,10 @@ import (
"reflect" "reflect"
"testing" "testing"
rbac "k8s.io/api/rbac/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1" "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/apis/rbac"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )

View File

@ -24,21 +24,23 @@ import (
"reflect" "reflect"
"testing" "testing"
rbac "k8s.io/api/rbac/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"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"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/apis/rbac"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
var groupVersion = schema.GroupVersion{Group: "rbac.authorization.k8s.io", Version: "v1alpha1"} var groupVersion = schema.GroupVersion{Group: "rbac.authorization.k8s.io", Version: "v1"}
func TestCreateRoleBinding(t *testing.T) { func TestCreateRoleBinding(t *testing.T) {
expectBinding := &rbac.RoleBinding{ expectBinding := &rbac.RoleBinding{
TypeMeta: v1.TypeMeta{
APIVersion: "rbac.authorization.k8s.io/v1",
Kind: "RoleBinding",
},
ObjectMeta: v1.ObjectMeta{ ObjectMeta: v1.ObjectMeta{
Name: "fake-binding", Name: "fake-binding",
}, },
@ -76,7 +78,6 @@ func TestCreateRoleBinding(t *testing.T) {
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &RoleBindingRESTClient{ tf.Client = &RoleBindingRESTClient{
RESTClient: &fake.RESTClient{ RESTClient: &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {

View File

@ -21,14 +21,14 @@ import (
"net/http" "net/http"
"testing" "testing"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
func TestCreateSecretGeneric(t *testing.T) { func TestCreateSecretGeneric(t *testing.T) {
secretObject := &api.Secret{ secretObject := &v1.Secret{
Data: map[string][]byte{ Data: map[string][]byte{
"password": []byte("includes,comma"), "password": []byte("includes,comma"),
"username": []byte("test_user"), "username": []byte("test_user"),
@ -38,7 +38,7 @@ func TestCreateSecretGeneric(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -64,12 +64,12 @@ func TestCreateSecretGeneric(t *testing.T) {
} }
func TestCreateSecretDockerRegistry(t *testing.T) { func TestCreateSecretDockerRegistry(t *testing.T) {
secretObject := &api.Secret{} secretObject := &v1.Secret{}
secretObject.Name = "my-secret" secretObject.Name = "my-secret"
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {

View File

@ -21,7 +21,7 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"k8s.io/kubernetes/pkg/api" "k8s.io/api/core/v1"
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates" "k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
@ -98,7 +98,7 @@ func CreateServiceClusterIP(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Comm
generator = &kubectl.ServiceCommonGeneratorV1{ generator = &kubectl.ServiceCommonGeneratorV1{
Name: name, Name: name,
TCP: cmdutil.GetFlagStringSlice(cmd, "tcp"), TCP: cmdutil.GetFlagStringSlice(cmd, "tcp"),
Type: api.ServiceTypeClusterIP, Type: v1.ServiceTypeClusterIP,
ClusterIP: cmdutil.GetFlagString(cmd, "clusterip"), ClusterIP: cmdutil.GetFlagString(cmd, "clusterip"),
} }
default: default:
@ -154,7 +154,7 @@ func CreateServiceNodePort(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.Comma
generator = &kubectl.ServiceCommonGeneratorV1{ generator = &kubectl.ServiceCommonGeneratorV1{
Name: name, Name: name,
TCP: cmdutil.GetFlagStringSlice(cmd, "tcp"), TCP: cmdutil.GetFlagStringSlice(cmd, "tcp"),
Type: api.ServiceTypeNodePort, Type: v1.ServiceTypeNodePort,
ClusterIP: "", ClusterIP: "",
NodePort: cmdutil.GetFlagInt(cmd, "node-port"), NodePort: cmdutil.GetFlagInt(cmd, "node-port"),
} }
@ -210,7 +210,7 @@ func CreateServiceLoadBalancer(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.C
generator = &kubectl.ServiceCommonGeneratorV1{ generator = &kubectl.ServiceCommonGeneratorV1{
Name: name, Name: name,
TCP: cmdutil.GetFlagStringSlice(cmd, "tcp"), TCP: cmdutil.GetFlagStringSlice(cmd, "tcp"),
Type: api.ServiceTypeLoadBalancer, Type: v1.ServiceTypeLoadBalancer,
ClusterIP: "", ClusterIP: "",
} }
default: default:
@ -270,7 +270,7 @@ func CreateExternalNameService(f cmdutil.Factory, cmdOut io.Writer, cmd *cobra.C
case cmdutil.ServiceExternalNameGeneratorV1Name: case cmdutil.ServiceExternalNameGeneratorV1Name:
generator = &kubectl.ServiceCommonGeneratorV1{ generator = &kubectl.ServiceCommonGeneratorV1{
Name: name, Name: name,
Type: api.ServiceTypeExternalName, Type: v1.ServiceTypeExternalName,
ExternalName: cmdutil.GetFlagString(cmd, "external-name"), ExternalName: cmdutil.GetFlagString(cmd, "external-name"),
ClusterIP: "", ClusterIP: "",
} }

View File

@ -21,19 +21,19 @@ import (
"net/http" "net/http"
"testing" "testing"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
func TestCreateService(t *testing.T) { func TestCreateService(t *testing.T) {
service := &api.Service{} service := &v1.Service{}
service.Name = "my-service" service.Name = "my-service"
f, tf, codec, negSer := cmdtesting.NewAPIFactory() f, tf, codec, negSer := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: negSer, NegotiatedSerializer: negSer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -58,12 +58,12 @@ func TestCreateService(t *testing.T) {
} }
func TestCreateServiceNodePort(t *testing.T) { func TestCreateServiceNodePort(t *testing.T) {
service := &api.Service{} service := &v1.Service{}
service.Name = "my-node-port-service" service.Name = "my-node-port-service"
f, tf, codec, negSer := cmdtesting.NewAPIFactory() f, tf, codec, negSer := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: negSer, NegotiatedSerializer: negSer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -88,12 +88,12 @@ func TestCreateServiceNodePort(t *testing.T) {
} }
func TestCreateServiceExternalName(t *testing.T) { func TestCreateServiceExternalName(t *testing.T) {
service := &api.Service{} service := &v1.Service{}
service.Name = "my-external-name-service" service.Name = "my-external-name-service"
f, tf, codec, negSer := cmdtesting.NewAPIFactory() f, tf, codec, negSer := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: negSer, NegotiatedSerializer: negSer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {

View File

@ -21,19 +21,19 @@ import (
"net/http" "net/http"
"testing" "testing"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
func TestCreateServiceAccount(t *testing.T) { func TestCreateServiceAccount(t *testing.T) {
serviceAccountObject := &api.ServiceAccount{} serviceAccountObject := &v1.ServiceAccount{}
serviceAccountObject.Name = "my-service-account" serviceAccountObject.Name = "my-service-account"
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {

View File

@ -21,9 +21,8 @@ import (
"net/http" "net/http"
"testing" "testing"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
@ -48,7 +47,7 @@ func TestCreateObject(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -82,7 +81,7 @@ func TestCreateMultipleObject(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -120,7 +119,7 @@ func TestCreateDirectory(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {

View File

@ -32,10 +32,8 @@ import (
"k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/api/meta"
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"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"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"
@ -58,7 +56,6 @@ func TestDeleteObjectByTuple(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -123,7 +120,6 @@ func TestOrphanDependentsInDeleteObject(t *testing.T) {
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
var expectedOrphanDependents *bool var expectedOrphanDependents *bool
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m, b := req.URL.Path, req.Method, req.Body; { switch p, m, b := req.URL.Path, req.Method, req.Body; {
@ -172,7 +168,6 @@ func TestDeleteNamedObject(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -223,7 +218,6 @@ func TestDeleteObject(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -282,7 +276,6 @@ func TestDeleteObjectGraceZero(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
t.Logf("got request %s %s", req.Method, req.URL.Path) t.Logf("got request %s %s", req.Method, req.URL.Path)
@ -332,7 +325,6 @@ func TestDeleteObjectNotFound(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -370,7 +362,6 @@ func TestDeleteObjectIgnoreNotFound(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -408,7 +399,6 @@ func TestDeleteAllNotFound(t *testing.T) {
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -458,7 +448,6 @@ func TestDeleteAllIgnoreNotFound(t *testing.T) {
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -495,7 +484,6 @@ func TestDeleteMultipleObject(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -531,7 +519,6 @@ func TestDeleteMultipleObjectContinueOnMissing(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -576,7 +563,6 @@ func TestDeleteMultipleResourcesWithTheSameName(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -615,7 +601,6 @@ func TestDeleteDirectory(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -648,17 +633,16 @@ func TestDeleteMultipleSelector(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
case p == "/namespaces/test/pods" && m == "GET": case p == "/namespaces/test/pods" && m == "GET":
if req.URL.Query().Get(metav1.LabelSelectorQueryParam(legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String())) != "a=b" { if req.URL.Query().Get(metav1.LabelSelectorQueryParam("v1")) != "a=b" {
t.Fatalf("unexpected request: %#v\n%#v", req.URL, req) t.Fatalf("unexpected request: %#v\n%#v", req.URL, req)
} }
return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, nil return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, nil
case p == "/namespaces/test/services" && m == "GET": case p == "/namespaces/test/services" && m == "GET":
if req.URL.Query().Get(metav1.LabelSelectorQueryParam(legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String())) != "a=b" { if req.URL.Query().Get(metav1.LabelSelectorQueryParam("v1")) != "a=b" {
t.Fatalf("unexpected request: %#v\n%#v", req.URL, req) t.Fatalf("unexpected request: %#v\n%#v", req.URL, req)
} }
return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, svc)}, nil return &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, svc)}, nil
@ -714,7 +698,7 @@ func TestResourceErrors(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
buf, errBuf := bytes.NewBuffer([]byte{}), bytes.NewBuffer([]byte{}) buf, errBuf := bytes.NewBuffer([]byte{}), bytes.NewBuffer([]byte{})

View File

@ -23,8 +23,6 @@ import (
"testing" "testing"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
@ -34,7 +32,6 @@ func TestDescribeUnknownSchemaObject(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewTestFactory() f, tf, codec, _ := cmdtesting.NewTestFactory()
tf.Describer = d tf.Describer = d
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, cmdtesting.NewInternalType("", "", "foo"))}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, cmdtesting.NewInternalType("", "", "foo"))},
} }
@ -59,7 +56,6 @@ func TestDescribeUnknownNamespacedSchemaObject(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewTestFactory() f, tf, codec, _ := cmdtesting.NewTestFactory()
tf.Describer = d tf.Describer = d
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, cmdtesting.NewInternalNamespacedType("", "", "foo", "non-default"))}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, cmdtesting.NewInternalNamespacedType("", "", "foo", "non-default"))},
} }
@ -84,7 +80,6 @@ func TestDescribeObject(t *testing.T) {
d := &testDescriber{Output: "test output"} d := &testDescriber{Output: "test output"}
tf.Describer = d tf.Describer = d
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -118,7 +113,6 @@ func TestDescribeListObjects(t *testing.T) {
d := &testDescriber{Output: "test output"} d := &testDescriber{Output: "test output"}
tf.Describer = d tf.Describer = d
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)},
} }
@ -139,7 +133,6 @@ func TestDescribeObjectShowEvents(t *testing.T) {
d := &testDescriber{Output: "test output"} d := &testDescriber{Output: "test output"}
tf.Describer = d tf.Describer = d
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)},
} }
@ -161,7 +154,6 @@ func TestDescribeObjectSkipEvents(t *testing.T) {
d := &testDescriber{Output: "test output"} d := &testDescriber{Output: "test output"}
tf.Describer = d tf.Describer = d
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)},
} }

View File

@ -36,8 +36,6 @@ import (
"k8s.io/apimachinery/pkg/util/diff" "k8s.io/apimachinery/pkg/util/diff"
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"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/resource" "k8s.io/kubernetes/pkg/kubectl/resource"
@ -218,7 +216,6 @@ func TestEdit(t *testing.T) {
versionedAPIPath = "/apis/" + mapping.GroupVersionKind.Group + "/" + mapping.GroupVersionKind.Version versionedAPIPath = "/apis/" + mapping.GroupVersionKind.Group + "/" + mapping.GroupVersionKind.Version
} }
return &fake.RESTClient{ return &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
VersionedAPIPath: versionedAPIPath, VersionedAPIPath: versionedAPIPath,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(reqResp), Client: fake.CreateHTTPClient(reqResp),

View File

@ -34,7 +34,6 @@ import (
"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" "k8s.io/kubernetes/pkg/api"
"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/util/term" "k8s.io/kubernetes/pkg/kubectl/util/term"
) )
@ -131,7 +130,6 @@ func TestPodAndContainer(t *testing.T) {
for _, test := range tests { for _, test := range tests {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf, _, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
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 }),
} }
@ -163,7 +161,7 @@ func TestPodAndContainer(t *testing.T) {
} }
func TestExec(t *testing.T) { func TestExec(t *testing.T) {
version := legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.Version version := "v1"
tests := []struct { tests := []struct {
name, podPath, execPath, container string name, podPath, execPath, container string
pod *api.Pod pod *api.Pod
@ -186,7 +184,6 @@ func TestExec(t *testing.T) {
for _, test := range tests { for _, test := range tests {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {

View File

@ -23,10 +23,10 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/runtime/schema" "k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates" "k8s.io/kubernetes/pkg/kubectl/cmd/templates"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util" cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"k8s.io/kubernetes/pkg/kubectl/explain" "k8s.io/kubernetes/pkg/kubectl/explain"
"k8s.io/kubernetes/pkg/kubectl/scheme"
"k8s.io/kubernetes/pkg/kubectl/util/i18n" "k8s.io/kubernetes/pkg/kubectl/util/i18n"
) )
@ -99,7 +99,7 @@ func RunExplain(f cmdutil.Factory, out, cmdErr io.Writer, cmd *cobra.Command, ar
} }
if len(apiVersionString) == 0 { if len(apiVersionString) == 0 {
groupMeta, err := legacyscheme.Registry.Group(gvk.Group) groupMeta, err := scheme.Registry.Group(gvk.Group)
if err != nil { if err != nil {
return err return err
} }

View File

@ -25,14 +25,20 @@ 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/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" "k8s.io/kubernetes/pkg/api"
"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"
"k8s.io/kubernetes/pkg/printers" "k8s.io/kubernetes/pkg/printers"
) )
// This init should be removed after switching this command and its tests to user external types.
func init() {
api.AddToScheme(scheme.Scheme)
}
func TestRunExposeService(t *testing.T) { func TestRunExposeService(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
@ -463,7 +469,7 @@ func TestRunExposeService(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Printer = &printers.JSONPrinter{} tf.Printer = &printers.JSONPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {

View File

@ -40,13 +40,21 @@ import (
restclientwatch "k8s.io/client-go/rest/watch" restclientwatch "k8s.io/client-go/rest/watch"
"k8s.io/kube-openapi/pkg/util/proto" "k8s.io/kube-openapi/pkg/util/proto"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"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"
"k8s.io/kubernetes/pkg/api/v1"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi" "k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
"k8s.io/kubernetes/pkg/kubectl/scheme"
) )
// This init should be removed after switching this command and its tests to user external types.
func init() {
api.AddToScheme(scheme.Scheme)
scheme.Scheme.AddConversionFuncs(v1.Convert_api_PodSpec_To_v1_PodSpec)
scheme.Scheme.AddConversionFuncs(v1.Convert_v1_PodSecurityContext_To_api_PodSecurityContext)
}
func testData() (*api.PodList, *api.ServiceList, *api.ReplicationControllerList) { func testData() (*api.PodList, *api.ServiceList, *api.ReplicationControllerList) {
pods := &api.PodList{ pods := &api.PodList{
ListMeta: metav1.ListMeta{ ListMeta: metav1.ListMeta{
@ -126,12 +134,11 @@ func TestGetUnknownSchemaObject(t *testing.T) {
_, _, codec, _ := cmdtesting.NewTestFactory() _, _, codec, _ := cmdtesting.NewTestFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, cmdtesting.NewInternalType("", "", "foo"))}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, cmdtesting.NewInternalType("", "", "foo"))},
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
errBuf := bytes.NewBuffer([]byte{}) errBuf := bytes.NewBuffer([]byte{})
@ -151,7 +158,7 @@ func TestGetUnknownSchemaObject(t *testing.T) {
t.Fatal(err) t.Fatal(err)
} }
actualJSON := runtime.EncodeOrDie(legacyscheme.Codecs.LegacyCodec(), obj) actualJSON := runtime.EncodeOrDie(scheme.Codecs.LegacyCodec(), obj)
actualMap := map[string]interface{}{} actualMap := map[string]interface{}{}
if err := encjson.Unmarshal([]byte(actualJSON), &actualMap); err != nil { if err := encjson.Unmarshal([]byte(actualJSON), &actualMap); err != nil {
t.Fatal(err) t.Fatal(err)
@ -167,16 +174,15 @@ func TestGetUnknownSchemaObject(t *testing.T) {
func TestGetSchemaObject(t *testing.T) { func TestGetSchemaObject(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Mapper = testapi.Default.RESTMapper() tf.Mapper = testapi.Default.RESTMapper()
tf.Typer = legacyscheme.Scheme tf.Typer = scheme.Scheme
codec := testapi.Default.Codec() codec := testapi.Default.Codec()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &api.ReplicationController{ObjectMeta: metav1.ObjectMeta{Name: "foo"}})}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &api.ReplicationController{ObjectMeta: metav1.ObjectMeta{Name: "foo"}})},
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &schema.GroupVersion{Version: "v1"}}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
errBuf := bytes.NewBuffer([]byte{}) errBuf := bytes.NewBuffer([]byte{})
@ -197,7 +203,6 @@ func TestGetObjectsWithOpenAPIOutputFormatPresent(t *testing.T) {
// for Pod type. // for Pod type.
tf.OpenAPISchemaFunc = testOpenAPISchemaData tf.OpenAPISchemaFunc = testOpenAPISchemaData
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])},
} }
@ -251,7 +256,6 @@ func TestGetObjects(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])},
} }
@ -303,7 +307,7 @@ func TestGetObjectsFiltered(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{GenericPrinter: test.genericPrinter} tf.Printer = &testPrinter{GenericPrinter: test.genericPrinter}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, test.resp)}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, test.resp)},
} }
@ -344,7 +348,6 @@ func TestGetObjectIgnoreNotFound(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{GenericPrinter: true} tf.Printer = &testPrinter{GenericPrinter: true}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -397,7 +400,6 @@ func TestGetSortedObjects(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)},
} }
@ -434,8 +436,8 @@ func verifyObjects(t *testing.T, expected, actual []runtime.Object) {
switch obj.(type) { switch obj.(type) {
case runtime.Unstructured, *runtime.Unknown: case runtime.Unstructured, *runtime.Unknown:
actualObj, err = runtime.Decode( actualObj, err = runtime.Decode(
legacyscheme.Codecs.UniversalDecoder(), scheme.Codecs.UniversalDecoder(),
[]byte(runtime.EncodeOrDie(legacyscheme.Codecs.LegacyCodec(), obj))) []byte(runtime.EncodeOrDie(scheme.Codecs.LegacyCodec(), obj)))
default: default:
actualObj = obj actualObj = obj
err = nil err = nil
@ -456,7 +458,6 @@ func TestGetObjectsIdentifiedByFile(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{GenericPrinter: true} tf.Printer = &testPrinter{GenericPrinter: true}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])},
} }
@ -483,7 +484,6 @@ func TestGetListObjects(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)},
} }
@ -524,7 +524,6 @@ func TestGetAllListObjects(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, pods)},
} }
@ -554,7 +553,6 @@ func TestGetListComponentStatus(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, statuses)}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, statuses)},
} }
@ -596,7 +594,6 @@ func TestGetMixedGenericObjects(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{GenericPrinter: true} tf.Printer = &testPrinter{GenericPrinter: true}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch req.URL.Path { switch req.URL.Path {
@ -609,7 +606,7 @@ func TestGetMixedGenericObjects(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
errBuf := bytes.NewBuffer([]byte{}) errBuf := bytes.NewBuffer([]byte{})
@ -624,7 +621,7 @@ func TestGetMixedGenericObjects(t *testing.T) {
actual := tf.Printer.(*testPrinter).Objects actual := tf.Printer.(*testPrinter).Objects
fn := func(obj runtime.Object) unstructured.Unstructured { fn := func(obj runtime.Object) unstructured.Unstructured {
data, err := runtime.Encode(legacyscheme.Codecs.LegacyCodec(schema.GroupVersion{Version: "v1"}), obj) data, err := runtime.Encode(scheme.Codecs.LegacyCodec(schema.GroupVersion{Version: "v1"}), obj)
if err != nil { if err != nil {
panic(err) panic(err)
} }
@ -660,7 +657,6 @@ func TestGetMultipleTypeObjects(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch req.URL.Path { switch req.URL.Path {
@ -699,7 +695,6 @@ func TestGetMultipleTypeObjectsAsList(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{GenericPrinter: true} tf.Printer = &testPrinter{GenericPrinter: true}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch req.URL.Path { switch req.URL.Path {
@ -714,7 +709,7 @@ func TestGetMultipleTypeObjectsAsList(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
errBuf := bytes.NewBuffer([]byte{}) errBuf := bytes.NewBuffer([]byte{})
@ -726,7 +721,7 @@ func TestGetMultipleTypeObjectsAsList(t *testing.T) {
actual := tf.Printer.(*testPrinter).Objects actual := tf.Printer.(*testPrinter).Objects
fn := func(obj runtime.Object) unstructured.Unstructured { fn := func(obj runtime.Object) unstructured.Unstructured {
data, err := runtime.Encode(legacyscheme.Codecs.LegacyCodec(schema.GroupVersion{Version: "v1"}), obj) data, err := runtime.Encode(scheme.Codecs.LegacyCodec(schema.GroupVersion{Version: "v1"}), obj)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
@ -764,10 +759,9 @@ func TestGetMultipleTypeObjectsWithSelector(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
if req.URL.Query().Get(metav1.LabelSelectorQueryParam(legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String())) != "a=b" { if req.URL.Query().Get(metav1.LabelSelectorQueryParam("v1")) != "a=b" {
t.Fatalf("request url: %#v,and request: %#v", req.URL, req) t.Fatalf("request url: %#v,and request: %#v", req.URL, req)
} }
switch req.URL.Path { switch req.URL.Path {
@ -816,7 +810,6 @@ func TestGetMultipleTypeObjectsWithDirectReference(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch req.URL.Path { switch req.URL.Path {
@ -853,7 +846,6 @@ func TestGetByFormatForcesFlag(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{GenericPrinter: true} tf.Printer = &testPrinter{GenericPrinter: true}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])}, Resp: &http.Response{StatusCode: 200, Header: defaultHeader(), Body: objBody(codec, &pods.Items[0])},
} }
@ -954,10 +946,9 @@ func TestWatchSelector(t *testing.T) {
}, },
} }
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
if req.URL.Query().Get(metav1.LabelSelectorQueryParam(legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.String())) != "a=b" { if req.URL.Query().Get(metav1.LabelSelectorQueryParam("v1")) != "a=b" {
t.Fatalf("request url: %#v,and request: %#v", req.URL, req) t.Fatalf("request url: %#v,and request: %#v", req.URL, req)
} }
switch req.URL.Path { switch req.URL.Path {
@ -998,7 +989,6 @@ func TestWatchResource(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch req.URL.Path { switch req.URL.Path {
@ -1040,7 +1030,6 @@ func TestWatchResourceIdentifiedByFile(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch req.URL.Path { switch req.URL.Path {
@ -1083,7 +1072,6 @@ func TestWatchOnlyResource(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch req.URL.Path { switch req.URL.Path {
@ -1131,7 +1119,6 @@ func TestWatchOnlyList(t *testing.T) {
}, },
} }
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch req.URL.Path { switch req.URL.Path {

View File

@ -25,10 +25,8 @@ 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"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"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"
) )
@ -324,7 +322,7 @@ func TestLabelErrors(t *testing.T) {
f, tf, _, _ := cmdtesting.NewAPIFactory() f, tf, _, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdLabel(f, buf) cmd := NewCmdLabel(f, buf)
@ -358,7 +356,6 @@ func TestLabelForResourceFromFile(t *testing.T) {
pods, _, _ := testData() pods, _, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch req.Method { switch req.Method {
@ -385,7 +382,7 @@ func TestLabelForResourceFromFile(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdLabel(f, buf) cmd := NewCmdLabel(f, buf)
@ -409,7 +406,6 @@ 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{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
t.Fatalf("unexpected request: %s %#v\n%#v", req.Method, req.URL, req) t.Fatalf("unexpected request: %s %#v\n%#v", req.Method, req.URL, req)
@ -417,7 +413,7 @@ func TestLabelLocal(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdLabel(f, buf) cmd := NewCmdLabel(f, buf)
@ -443,7 +439,6 @@ func TestLabelMultipleObjects(t *testing.T) {
pods, _, _ := testData() pods, _, _ := testData()
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch req.Method { switch req.Method {
@ -472,7 +467,7 @@ func TestLabelMultipleObjects(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdLabel(f, buf) cmd := NewCmdLabel(f, buf)

View File

@ -27,11 +27,8 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
restclient "k8s.io/client-go/rest"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
@ -52,7 +49,6 @@ func TestLog(t *testing.T) {
logContent := "test log content" logContent := "test log content"
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -70,7 +66,7 @@ func TestLog(t *testing.T) {
}), }),
} }
tf.Namespace = "test" tf.Namespace = "test"
tf.ClientConfig = &restclient.Config{APIPath: "/api", ContentConfig: restclient.ContentConfig{NegotiatedSerializer: legacyscheme.Codecs, GroupVersion: &schema.GroupVersion{Version: test.version}}} tf.ClientConfig = defaultClientConfig()
buf := bytes.NewBuffer([]byte{}) buf := bytes.NewBuffer([]byte{})
cmd := NewCmdLogs(f, buf) cmd := NewCmdLogs(f, buf)

View File

@ -34,11 +34,11 @@ import (
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
"k8s.io/apimachinery/pkg/util/strategicpatch" "k8s.io/apimachinery/pkg/util/strategicpatch"
"k8s.io/apimachinery/pkg/util/yaml" "k8s.io/apimachinery/pkg/util/yaml"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
"k8s.io/kubernetes/pkg/kubectl/cmd/templates" "k8s.io/kubernetes/pkg/kubectl/cmd/templates"
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"
"k8s.io/kubernetes/pkg/kubectl/util/i18n" "k8s.io/kubernetes/pkg/kubectl/util/i18n"
"k8s.io/kubernetes/pkg/printers" "k8s.io/kubernetes/pkg/printers"
) )
@ -249,7 +249,7 @@ func RunPatch(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []strin
return err return err
} }
originalPatchedObjJS, err := getPatchedJSON(patchType, originalObjJS, patchBytes, mapping.GroupVersionKind, legacyscheme.Scheme) originalPatchedObjJS, err := getPatchedJSON(patchType, originalObjJS, patchBytes, mapping.GroupVersionKind, scheme.Scheme)
if err != nil { if err != nil {
return err return err
} }

View File

@ -23,8 +23,6 @@ import (
"testing" "testing"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"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/printers" "k8s.io/kubernetes/pkg/printers"
) )
@ -34,7 +32,6 @@ func TestPatchObject(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -73,7 +70,6 @@ func TestPatchObjectFromFile(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -108,7 +104,6 @@ func TestPatchNoop(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -154,7 +149,6 @@ func TestPatchObjectFromFileOutput(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &printers.YAMLPrinter{} tf.Printer = &printers.YAMLPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {

View File

@ -25,9 +25,9 @@ import (
"github.com/spf13/cobra" "github.com/spf13/cobra"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
@ -44,7 +44,7 @@ func (f *fakePortForwarder) ForwardPorts(method string, url *url.URL, opts PortF
} }
func testPortForward(t *testing.T, flags map[string]string, args []string) { func testPortForward(t *testing.T, flags map[string]string, args []string) {
version := legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion.Version version := "v1"
tests := []struct { tests := []struct {
name string name string
@ -70,7 +70,7 @@ func testPortForward(t *testing.T, flags map[string]string, args []string) {
var err error var err error
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Group: ""},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {

View File

@ -24,7 +24,6 @@ import (
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
) )
@ -35,7 +34,6 @@ func TestReplaceObject(t *testing.T) {
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
deleted := false deleted := false
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -92,7 +90,6 @@ func TestReplaceMultipleObject(t *testing.T) {
redisMasterDeleted := false redisMasterDeleted := false
frontendDeleted := false frontendDeleted := false
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -161,7 +158,6 @@ func TestReplaceDirectory(t *testing.T) {
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
created := map[string]bool{} created := map[string]bool{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -217,7 +213,6 @@ func TestForceReplaceObjectNotFound(t *testing.T) {
f, tf, codec, _ := cmdtesting.NewAPIFactory() f, tf, codec, _ := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.UnstructuredClient = &fake.RESTClient{ tf.UnstructuredClient = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: unstructuredSerializer, NegotiatedSerializer: unstructuredSerializer,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {

View File

@ -36,12 +36,17 @@ 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" "k8s.io/kubernetes/pkg/api"
"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"
"k8s.io/kubernetes/pkg/kubectl/util/i18n" "k8s.io/kubernetes/pkg/kubectl/util/i18n"
) )
// This init should be removed after switching this command and its tests to user external types.
func init() {
api.AddToScheme(scheme.Scheme)
}
func TestGetRestartPolicy(t *testing.T) { func TestGetRestartPolicy(t *testing.T) {
tests := []struct { tests := []struct {
input string input string
@ -164,7 +169,7 @@ func TestRunArgsFollowDashRules(t *testing.T) {
for _, test := range tests { for _, test := range tests {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
if req.URL.Path == "/namespaces/test/replicationcontrollers" { if req.URL.Path == "/namespaces/test/replicationcontrollers" {
@ -285,10 +290,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, codec, ns := cmdtesting.NewAPIFactory()
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion}} tf.ClientConfig = defaultClientConfig()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion, GroupVersion: schema.GroupVersion{Version: "v1"},
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -429,12 +434,11 @@ func TestRunValidations(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewTestFactory() f, tf, codec, ns := cmdtesting.NewTestFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
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"
tf.ClientConfig = &restclient.Config{ContentConfig: restclient.ContentConfig{GroupVersion: &schema.GroupVersion{Version: "v1"}}} tf.ClientConfig = defaultClientConfig()
inBuf := bytes.NewReader([]byte{}) inBuf := bytes.NewReader([]byte{})
outBuf := bytes.NewBuffer([]byte{}) outBuf := bytes.NewBuffer([]byte{})
errBuf := bytes.NewBuffer([]byte{}) errBuf := bytes.NewBuffer([]byte{})

View File

@ -29,8 +29,6 @@ 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"
"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"
) )
@ -243,7 +241,6 @@ func TestTaint(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
m := &MyReq{req} m := &MyReq{req}

View File

@ -27,7 +27,6 @@ import (
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
"k8s.io/metrics/pkg/apis/metrics/v1alpha1" "k8s.io/metrics/pkg/apis/metrics/v1alpha1"
) )
@ -46,7 +45,6 @@ func TestTopNodeAllMetrics(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -92,7 +90,6 @@ func TestTopNodeAllMetricsCustomDefaults(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -148,7 +145,6 @@ func TestTopNodeWithNameMetrics(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m := req.URL.Path, req.Method; { switch p, m := req.URL.Path, req.Method; {
@ -208,7 +204,6 @@ func TestTopNodeWithLabelSelectorMetrics(t *testing.T) {
f, tf, codec, ns := cmdtesting.NewAPIFactory() f, tf, codec, ns := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m, q := req.URL.Path, req.Method, req.URL.RawQuery; { switch p, m, q := req.URL.Path, req.Method, req.URL.RawQuery; {

View File

@ -29,8 +29,6 @@ import (
"k8s.io/apimachinery/pkg/api/resource" "k8s.io/apimachinery/pkg/api/resource"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/rest/fake" "k8s.io/client-go/rest/fake"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing" cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
metricsapi "k8s.io/metrics/pkg/apis/metrics/v1alpha1" metricsapi "k8s.io/metrics/pkg/apis/metrics/v1alpha1"
) )
@ -119,7 +117,6 @@ func TestTopPod(t *testing.T) {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf, _, ns := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m, q := req.URL.Path, req.Method, req.URL.RawQuery; { switch p, m, q := req.URL.Path, req.Method, req.URL.RawQuery; {
@ -255,7 +252,6 @@ func TestTopPodCustomDefaults(t *testing.T) {
f, tf, _, ns := cmdtesting.NewAPIFactory() f, tf, _, ns := cmdtesting.NewAPIFactory()
tf.Printer = &testPrinter{} tf.Printer = &testPrinter{}
tf.Client = &fake.RESTClient{ tf.Client = &fake.RESTClient{
GroupVersion: legacyscheme.Registry.GroupOrDie(api.GroupName).GroupVersion,
NegotiatedSerializer: ns, NegotiatedSerializer: ns,
Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) { Client: fake.CreateHTTPClient(func(req *http.Request) (*http.Response, error) {
switch p, m, q := req.URL.Path, req.Method, req.URL.RawQuery; { switch p, m, q := req.URL.Path, req.Method, req.URL.RawQuery; {

View File

@ -16,10 +16,10 @@ go_library(
], ],
deps = [ deps = [
"//pkg/api:go_default_library", "//pkg/api:go_default_library",
"//pkg/api/legacyscheme:go_default_library",
"//pkg/kubectl:go_default_library", "//pkg/kubectl:go_default_library",
"//pkg/kubectl/cmd/util:go_default_library", "//pkg/kubectl/cmd/util:go_default_library",
"//pkg/kubectl/resource:go_default_library", "//pkg/kubectl/resource:go_default_library",
"//pkg/kubectl/scheme:go_default_library",
"//pkg/kubectl/util/crlf:go_default_library", "//pkg/kubectl/util/crlf:go_default_library",
"//pkg/kubectl/util/term:go_default_library", "//pkg/kubectl/util/term:go_default_library",
"//pkg/printers:go_default_library", "//pkg/printers:go_default_library",

View File

@ -42,10 +42,10 @@ import (
"k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/apimachinery/pkg/util/validation/field"
"k8s.io/apimachinery/pkg/util/yaml" "k8s.io/apimachinery/pkg/util/yaml"
"k8s.io/kubernetes/pkg/api" "k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/api/legacyscheme"
"k8s.io/kubernetes/pkg/kubectl" "k8s.io/kubernetes/pkg/kubectl"
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"
"k8s.io/kubernetes/pkg/kubectl/util/crlf" "k8s.io/kubernetes/pkg/kubectl/util/crlf"
"k8s.io/kubernetes/pkg/printers" "k8s.io/kubernetes/pkg/printers"
) )
@ -548,7 +548,7 @@ func (o *EditOptions) visitToPatch(originalInfos []*resource.Info, patchVisitor
// Create the versioned struct from the type defined in the mapping // Create the versioned struct from the type defined in the mapping
// (which is the API version we'll be submitting the patch to) // (which is the API version we'll be submitting the patch to)
versionedObject, err := legacyscheme.Scheme.New(info.Mapping.GroupVersionKind) versionedObject, err := scheme.Scheme.New(info.Mapping.GroupVersionKind)
var patchType types.PatchType var patchType types.PatchType
var patch []byte var patch []byte
switch { switch {

View File

@ -23,9 +23,9 @@ import (
"path" "path"
"strings" "strings"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/validation" "k8s.io/apimachinery/pkg/util/validation"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/kubectl/util" "k8s.io/kubernetes/pkg/kubectl/util"
"k8s.io/kubernetes/pkg/kubectl/util/hash" "k8s.io/kubernetes/pkg/kubectl/util/hash"
) )
@ -127,7 +127,7 @@ func (s ConfigMapGeneratorV1) StructuredGenerate() (runtime.Object, error) {
if err := s.validate(); err != nil { if err := s.validate(); err != nil {
return nil, err return nil, err
} }
configMap := &api.ConfigMap{} configMap := &v1.ConfigMap{}
configMap.Name = s.Name configMap.Name = s.Name
configMap.Data = map[string]string{} configMap.Data = map[string]string{}
if len(s.FileSources) > 0 { if len(s.FileSources) > 0 {
@ -168,7 +168,7 @@ func (s ConfigMapGeneratorV1) validate() error {
// handleConfigMapFromLiteralSources adds the specified literal source // handleConfigMapFromLiteralSources adds the specified literal source
// information into the provided configMap. // information into the provided configMap.
func handleConfigMapFromLiteralSources(configMap *api.ConfigMap, literalSources []string) error { func handleConfigMapFromLiteralSources(configMap *v1.ConfigMap, literalSources []string) error {
for _, literalSource := range literalSources { for _, literalSource := range literalSources {
keyName, value, err := util.ParseLiteralSource(literalSource) keyName, value, err := util.ParseLiteralSource(literalSource)
if err != nil { if err != nil {
@ -184,7 +184,7 @@ func handleConfigMapFromLiteralSources(configMap *api.ConfigMap, literalSources
// handleConfigMapFromFileSources adds the specified file source information // handleConfigMapFromFileSources adds the specified file source information
// into the provided configMap // into the provided configMap
func handleConfigMapFromFileSources(configMap *api.ConfigMap, fileSources []string) error { func handleConfigMapFromFileSources(configMap *v1.ConfigMap, fileSources []string) error {
for _, fileSource := range fileSources { for _, fileSource := range fileSources {
keyName, filePath, err := util.ParseFileSource(fileSource) keyName, filePath, err := util.ParseFileSource(fileSource)
if err != nil { if err != nil {
@ -229,7 +229,7 @@ func handleConfigMapFromFileSources(configMap *api.ConfigMap, fileSources []stri
// handleConfigMapFromEnvFileSource adds the specified env file source information // handleConfigMapFromEnvFileSource adds the specified env file source information
// into the provided configMap // into the provided configMap
func handleConfigMapFromEnvFileSource(configMap *api.ConfigMap, envFileSource string) error { func handleConfigMapFromEnvFileSource(configMap *v1.ConfigMap, envFileSource string) error {
info, err := os.Stat(envFileSource) info, err := os.Stat(envFileSource)
if err != nil { if err != nil {
switch err := err.(type) { switch err := err.(type) {
@ -250,7 +250,7 @@ func handleConfigMapFromEnvFileSource(configMap *api.ConfigMap, envFileSource st
// addKeyFromFileToConfigMap adds a key with the given name to a ConfigMap, populating // addKeyFromFileToConfigMap adds a key with the given name to a ConfigMap, populating
// the value with the content of the given file path, or returns an error. // the value with the content of the given file path, or returns an error.
func addKeyFromFileToConfigMap(configMap *api.ConfigMap, keyName, filePath string) error { func addKeyFromFileToConfigMap(configMap *v1.ConfigMap, keyName, filePath string) error {
data, err := ioutil.ReadFile(filePath) data, err := ioutil.ReadFile(filePath)
if err != nil { if err != nil {
return err return err
@ -260,7 +260,7 @@ func addKeyFromFileToConfigMap(configMap *api.ConfigMap, keyName, filePath strin
// addKeyFromLiteralToConfigMap adds the given key and data to the given config map, // addKeyFromLiteralToConfigMap adds the given key and data to the given config map,
// returning an error if the key is not valid or if the key already exists. // returning an error if the key is not valid or if the key already exists.
func addKeyFromLiteralToConfigMap(configMap *api.ConfigMap, keyName, data string) error { func addKeyFromLiteralToConfigMap(configMap *v1.ConfigMap, keyName, data string) error {
// Note, the rules for ConfigMap keys are the exact same as the ones for SecretKeys. // Note, the rules for ConfigMap keys are the exact same as the ones for SecretKeys.
if errs := validation.IsConfigMapKey(keyName); len(errs) != 0 { if errs := validation.IsConfigMapKey(keyName); len(errs) != 0 {
return fmt.Errorf("%q is not a valid key name for a ConfigMap: %s", keyName, strings.Join(errs, ";")) return fmt.Errorf("%q is not a valid key name for a ConfigMap: %s", keyName, strings.Join(errs, ";"))

View File

@ -22,22 +22,22 @@ import (
"reflect" "reflect"
"testing" "testing"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/api"
) )
func TestConfigMapGenerate(t *testing.T) { func TestConfigMapGenerate(t *testing.T) {
tests := []struct { tests := []struct {
setup func(t *testing.T, params map[string]interface{}) func() setup func(t *testing.T, params map[string]interface{}) func()
params map[string]interface{} params map[string]interface{}
expected *api.ConfigMap expected *v1.ConfigMap
expectErr bool expectErr bool
}{ }{
{ {
params: map[string]interface{}{ params: map[string]interface{}{
"name": "foo", "name": "foo",
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
@ -50,7 +50,7 @@ func TestConfigMapGenerate(t *testing.T) {
"name": "foo", "name": "foo",
"append-hash": true, "append-hash": true,
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo-867km9574f", Name: "foo-867km9574f",
}, },
@ -63,7 +63,7 @@ func TestConfigMapGenerate(t *testing.T) {
"name": "foo", "name": "foo",
"type": "my-type", "type": "my-type",
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
@ -77,7 +77,7 @@ func TestConfigMapGenerate(t *testing.T) {
"type": "my-type", "type": "my-type",
"append-hash": true, "append-hash": true,
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo-867km9574f", Name: "foo-867km9574f",
}, },
@ -90,7 +90,7 @@ func TestConfigMapGenerate(t *testing.T) {
"name": "foo", "name": "foo",
"from-literal": []string{"key1=value1", "key2=value2"}, "from-literal": []string{"key1=value1", "key2=value2"},
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
@ -107,7 +107,7 @@ func TestConfigMapGenerate(t *testing.T) {
"from-literal": []string{"key1=value1", "key2=value2"}, "from-literal": []string{"key1=value1", "key2=value2"},
"append-hash": true, "append-hash": true,
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo-gcb75dd9gb", Name: "foo-gcb75dd9gb",
}, },
@ -144,7 +144,7 @@ func TestConfigMapGenerate(t *testing.T) {
"name": "foo", "name": "foo",
"from-literal": []string{"key1==value1"}, "from-literal": []string{"key1==value1"},
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
@ -160,7 +160,7 @@ func TestConfigMapGenerate(t *testing.T) {
"from-literal": []string{"key1==value1"}, "from-literal": []string{"key1==value1"},
"append-hash": true, "append-hash": true,
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo-bdgk9ttt7m", Name: "foo-bdgk9ttt7m",
}, },
@ -176,7 +176,7 @@ func TestConfigMapGenerate(t *testing.T) {
"name": "valid_env", "name": "valid_env",
"from-env-file": "file.env", "from-env-file": "file.env",
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "valid_env", Name: "valid_env",
}, },
@ -194,7 +194,7 @@ func TestConfigMapGenerate(t *testing.T) {
"from-env-file": "file.env", "from-env-file": "file.env",
"append-hash": true, "append-hash": true,
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "valid_env-2cgh8552ch", Name: "valid_env-2cgh8552ch",
}, },
@ -215,7 +215,7 @@ func TestConfigMapGenerate(t *testing.T) {
"name": "getenv", "name": "getenv",
"from-env-file": "file.env", "from-env-file": "file.env",
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "getenv", Name: "getenv",
}, },
@ -237,7 +237,7 @@ func TestConfigMapGenerate(t *testing.T) {
"from-env-file": "file.env", "from-env-file": "file.env",
"append-hash": true, "append-hash": true,
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "getenv-b4hh92hgdk", Name: "getenv-b4hh92hgdk",
}, },
@ -270,7 +270,7 @@ func TestConfigMapGenerate(t *testing.T) {
"name": "with_spaces", "name": "with_spaces",
"from-env-file": "file.env", "from-env-file": "file.env",
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "with_spaces", Name: "with_spaces",
}, },
@ -287,7 +287,7 @@ func TestConfigMapGenerate(t *testing.T) {
"from-env-file": "file.env", "from-env-file": "file.env",
"append-hash": true, "append-hash": true,
}, },
expected: &api.ConfigMap{ expected: &v1.ConfigMap{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "with_spaces-bfc558b4ct", Name: "with_spaces-bfc558b4ct",
}, },
@ -312,8 +312,8 @@ func TestConfigMapGenerate(t *testing.T) {
if test.expectErr && err != nil { if test.expectErr && err != nil {
continue continue
} }
if !reflect.DeepEqual(obj.(*api.ConfigMap), test.expected) { if !reflect.DeepEqual(obj.(*v1.ConfigMap), test.expected) {
t.Errorf("\ncase %d, expected:\n%#v\nsaw:\n%#v", i, test.expected, obj.(*api.ConfigMap)) t.Errorf("\ncase %d, expected:\n%#v\nsaw:\n%#v", i, test.expected, obj.(*v1.ConfigMap))
} }
} }
} }

View File

@ -20,10 +20,10 @@ import (
"fmt" "fmt"
"os" "os"
policy "k8s.io/api/policy/v1beta1"
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/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/kubernetes/pkg/apis/policy"
) )
// PodDisruptionBudgetV1Generator supports stable generation of a pod disruption budget. // PodDisruptionBudgetV1Generator supports stable generation of a pod disruption budget.

View File

@ -20,8 +20,8 @@ import (
"fmt" "fmt"
"strings" "strings"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/api"
) )
// ResourceQuotaGeneratorV1 supports stable generation of a resource quota // ResourceQuotaGeneratorV1 supports stable generation of a resource quota
@ -79,7 +79,7 @@ func (g *ResourceQuotaGeneratorV1) StructuredGenerate() (runtime.Object, error)
return nil, err return nil, err
} }
resourceList, err := populateResourceList(g.Hard) resourceList, err := populateResourceListV1(g.Hard)
if err != nil { if err != nil {
return nil, err return nil, err
} }
@ -89,7 +89,7 @@ func (g *ResourceQuotaGeneratorV1) StructuredGenerate() (runtime.Object, error)
return nil, err return nil, err
} }
resourceQuota := &api.ResourceQuota{} resourceQuota := &v1.ResourceQuota{}
resourceQuota.Name = g.Name resourceQuota.Name = g.Name
resourceQuota.Spec.Hard = resourceList resourceQuota.Spec.Hard = resourceList
resourceQuota.Spec.Scopes = scopes resourceQuota.Spec.Scopes = scopes
@ -104,14 +104,14 @@ func (r *ResourceQuotaGeneratorV1) validate() error {
return nil return nil
} }
func parseScopes(spec string) ([]api.ResourceQuotaScope, error) { func parseScopes(spec string) ([]v1.ResourceQuotaScope, error) {
// empty input gets a nil response to preserve generator test expected behaviors // empty input gets a nil response to preserve generator test expected behaviors
if spec == "" { if spec == "" {
return nil, nil return nil, nil
} }
scopes := strings.Split(spec, ",") scopes := strings.Split(spec, ",")
result := make([]api.ResourceQuotaScope, 0, len(scopes)) result := make([]v1.ResourceQuotaScope, 0, len(scopes))
for _, scope := range scopes { for _, scope := range scopes {
// intentionally do not verify the scope against the valid scope list. This is done by the apiserver anyway. // intentionally do not verify the scope against the valid scope list. This is done by the apiserver anyway.
@ -119,7 +119,7 @@ func parseScopes(spec string) ([]api.ResourceQuotaScope, error) {
return nil, fmt.Errorf("invalid resource quota scope \"\"") return nil, fmt.Errorf("invalid resource quota scope \"\"")
} }
result = append(result, api.ResourceQuotaScope(scope)) result = append(result, v1.ResourceQuotaScope(scope))
} }
return result, nil return result, nil
} }

View File

@ -20,20 +20,20 @@ import (
"reflect" "reflect"
"testing" "testing"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/api"
) )
func TestQuotaGenerate(t *testing.T) { func TestQuotaGenerate(t *testing.T) {
hard := "cpu=10,memory=5G,pods=10,services=7" hard := "cpu=10,memory=5G,pods=10,services=7"
resourceQuotaSpecList, err := populateResourceList(hard) resourceQuotaSpecList, err := populateResourceListV1(hard)
if err != nil { if err != nil {
t.Errorf("unexpected error: %v", err) t.Errorf("unexpected error: %v", err)
} }
tests := map[string]struct { tests := map[string]struct {
params map[string]interface{} params map[string]interface{}
expected *api.ResourceQuota expected *v1.ResourceQuota
expectErr bool expectErr bool
}{ }{
"test-valid-use": { "test-valid-use": {
@ -41,11 +41,11 @@ func TestQuotaGenerate(t *testing.T) {
"name": "foo", "name": "foo",
"hard": hard, "hard": hard,
}, },
expected: &api.ResourceQuota{ expected: &v1.ResourceQuota{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
Spec: api.ResourceQuotaSpec{Hard: resourceQuotaSpecList}, Spec: v1.ResourceQuotaSpec{Hard: resourceQuotaSpecList},
}, },
expectErr: false, expectErr: false,
}, },
@ -61,15 +61,15 @@ func TestQuotaGenerate(t *testing.T) {
"hard": hard, "hard": hard,
"scopes": "BestEffort,NotTerminating", "scopes": "BestEffort,NotTerminating",
}, },
expected: &api.ResourceQuota{ expected: &v1.ResourceQuota{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
Spec: api.ResourceQuotaSpec{ Spec: v1.ResourceQuotaSpec{
Hard: resourceQuotaSpecList, Hard: resourceQuotaSpecList,
Scopes: []api.ResourceQuotaScope{ Scopes: []v1.ResourceQuotaScope{
api.ResourceQuotaScopeBestEffort, v1.ResourceQuotaScopeBestEffort,
api.ResourceQuotaScopeNotTerminating, v1.ResourceQuotaScopeNotTerminating,
}, },
}, },
}, },
@ -81,11 +81,11 @@ func TestQuotaGenerate(t *testing.T) {
"hard": hard, "hard": hard,
"scopes": "", "scopes": "",
}, },
expected: &api.ResourceQuota{ expected: &v1.ResourceQuota{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
Spec: api.ResourceQuotaSpec{Hard: resourceQuotaSpecList}, Spec: v1.ResourceQuotaSpec{Hard: resourceQuotaSpecList},
}, },
expectErr: false, expectErr: false,
}, },
@ -108,8 +108,8 @@ func TestQuotaGenerate(t *testing.T) {
if test.expectErr && err != nil { if test.expectErr && err != nil {
continue continue
} }
if !reflect.DeepEqual(obj.(*api.ResourceQuota), test.expected) { if !reflect.DeepEqual(obj.(*v1.ResourceQuota), test.expected) {
t.Errorf("%s:\nexpected:\n%#v\nsaw:\n%#v", name, test.expected, obj.(*api.ResourceQuota)) t.Errorf("%s:\nexpected:\n%#v\nsaw:\n%#v", name, test.expected, obj.(*v1.ResourceQuota))
} }
} }
} }

View File

@ -21,9 +21,9 @@ import (
"strings" "strings"
rbacv1 "k8s.io/api/rbac/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/sets" "k8s.io/apimachinery/pkg/util/sets"
"k8s.io/kubernetes/pkg/apis/rbac"
) )
// RoleBindingGeneratorV1 supports stable generation of a roleBinding. // RoleBindingGeneratorV1 supports stable generation of a roleBinding.
@ -113,35 +113,35 @@ func (s RoleBindingGeneratorV1) StructuredGenerate() (runtime.Object, error) {
if err := s.validate(); err != nil { if err := s.validate(); err != nil {
return nil, err return nil, err
} }
roleBinding := &rbac.RoleBinding{} roleBinding := &rbacv1.RoleBinding{}
roleBinding.Name = s.Name roleBinding.Name = s.Name
switch { switch {
case len(s.Role) > 0: case len(s.Role) > 0:
roleBinding.RoleRef = rbac.RoleRef{ roleBinding.RoleRef = rbacv1.RoleRef{
APIGroup: rbac.GroupName, APIGroup: rbacv1.GroupName,
Kind: "Role", Kind: "Role",
Name: s.Role, Name: s.Role,
} }
case len(s.ClusterRole) > 0: case len(s.ClusterRole) > 0:
roleBinding.RoleRef = rbac.RoleRef{ roleBinding.RoleRef = rbacv1.RoleRef{
APIGroup: rbac.GroupName, APIGroup: rbacv1.GroupName,
Kind: "ClusterRole", Kind: "ClusterRole",
Name: s.ClusterRole, Name: s.ClusterRole,
} }
} }
for _, user := range sets.NewString(s.Users...).List() { for _, user := range sets.NewString(s.Users...).List() {
roleBinding.Subjects = append(roleBinding.Subjects, rbac.Subject{ roleBinding.Subjects = append(roleBinding.Subjects, rbacv1.Subject{
Kind: rbac.UserKind, Kind: rbacv1.UserKind,
APIGroup: rbac.GroupName, APIGroup: rbacv1.GroupName,
Name: user, Name: user,
}) })
} }
for _, group := range sets.NewString(s.Groups...).List() { for _, group := range sets.NewString(s.Groups...).List() {
roleBinding.Subjects = append(roleBinding.Subjects, rbac.Subject{ roleBinding.Subjects = append(roleBinding.Subjects, rbacv1.Subject{
Kind: rbac.GroupKind, Kind: rbacv1.GroupKind,
APIGroup: rbac.GroupName, APIGroup: rbacv1.GroupName,
Name: group, Name: group,
}) })
} }
@ -150,8 +150,8 @@ func (s RoleBindingGeneratorV1) StructuredGenerate() (runtime.Object, error) {
if len(tokens) != 2 || tokens[1] == "" { if len(tokens) != 2 || tokens[1] == "" {
return nil, fmt.Errorf("serviceaccount must be <namespace>:<name>") return nil, fmt.Errorf("serviceaccount must be <namespace>:<name>")
} }
roleBinding.Subjects = append(roleBinding.Subjects, rbac.Subject{ roleBinding.Subjects = append(roleBinding.Subjects, rbacv1.Subject{
Kind: rbac.ServiceAccountKind, Kind: rbacv1.ServiceAccountKind,
APIGroup: "", APIGroup: "",
Namespace: tokens[0], Namespace: tokens[0],
Name: tokens[1], Name: tokens[1],

View File

@ -20,8 +20,8 @@ import (
"reflect" "reflect"
"testing" "testing"
rbac "k8s.io/api/rbac/v1"
"k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/apis/rbac"
) )
func TestRoleBindingGenerate(t *testing.T) { func TestRoleBindingGenerate(t *testing.T) {

62
pkg/kubectl/scheme/BUILD Normal file
View File

@ -0,0 +1,62 @@
load("@io_bazel_rules_go//go:def.bzl", "go_library")
go_library(
name = "go_default_library",
srcs = [
"install.go",
"scheme.go",
],
importpath = "k8s.io/kubernetes/pkg/kubectl/scheme",
visibility = ["//visibility:public"],
deps = [
"//vendor/k8s.io/api/admission/v1alpha1:go_default_library",
"//vendor/k8s.io/api/admissionregistration/v1alpha1:go_default_library",
"//vendor/k8s.io/api/apps/v1:go_default_library",
"//vendor/k8s.io/api/apps/v1beta1:go_default_library",
"//vendor/k8s.io/api/apps/v1beta2:go_default_library",
"//vendor/k8s.io/api/authentication/v1:go_default_library",
"//vendor/k8s.io/api/authentication/v1beta1:go_default_library",
"//vendor/k8s.io/api/authorization/v1:go_default_library",
"//vendor/k8s.io/api/authorization/v1beta1:go_default_library",
"//vendor/k8s.io/api/autoscaling/v1:go_default_library",
"//vendor/k8s.io/api/autoscaling/v2beta1:go_default_library",
"//vendor/k8s.io/api/batch/v1:go_default_library",
"//vendor/k8s.io/api/batch/v1beta1:go_default_library",
"//vendor/k8s.io/api/batch/v2alpha1:go_default_library",
"//vendor/k8s.io/api/certificates/v1beta1:go_default_library",
"//vendor/k8s.io/api/core/v1:go_default_library",
"//vendor/k8s.io/api/extensions/v1beta1:go_default_library",
"//vendor/k8s.io/api/imagepolicy/v1alpha1:go_default_library",
"//vendor/k8s.io/api/networking/v1:go_default_library",
"//vendor/k8s.io/api/policy/v1beta1:go_default_library",
"//vendor/k8s.io/api/rbac/v1:go_default_library",
"//vendor/k8s.io/api/rbac/v1alpha1:go_default_library",
"//vendor/k8s.io/api/rbac/v1beta1:go_default_library",
"//vendor/k8s.io/api/scheduling/v1alpha1:go_default_library",
"//vendor/k8s.io/api/settings/v1alpha1:go_default_library",
"//vendor/k8s.io/api/storage/v1:go_default_library",
"//vendor/k8s.io/api/storage/v1beta1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apimachinery/announced:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apimachinery/registered:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
],
)
filegroup(
name = "package-srcs",
srcs = glob(["**"]),
tags = ["automanaged"],
visibility = ["//visibility:private"],
)
filegroup(
name = "all-srcs",
srcs = [":package-srcs"],
tags = ["automanaged"],
visibility = ["//visibility:public"],
)

View File

@ -0,0 +1,307 @@
/*
Copyright 2017 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package scheme
import (
admissionv1alpha1 "k8s.io/api/admission/v1alpha1"
admissionregistrationv1alpha1 "k8s.io/api/admissionregistration/v1alpha1"
appsv1 "k8s.io/api/apps/v1"
appsv1beta1 "k8s.io/api/apps/v1beta1"
appsv1beta2 "k8s.io/api/apps/v1beta2"
authenticationv1 "k8s.io/api/authentication/v1"
authenticationv1beta1 "k8s.io/api/authentication/v1beta1"
authorizationv1 "k8s.io/api/authorization/v1"
authorizationv1beta1 "k8s.io/api/authorization/v1beta1"
autoscalingv1 "k8s.io/api/autoscaling/v1"
autoscalingv2beta1 "k8s.io/api/autoscaling/v2beta1"
batchv1 "k8s.io/api/batch/v1"
batchv1beta1 "k8s.io/api/batch/v1beta1"
batchv2alpha1 "k8s.io/api/batch/v2alpha1"
certificatesv1beta1 "k8s.io/api/certificates/v1beta1"
corev1 "k8s.io/api/core/v1"
extensionsv1beta1 "k8s.io/api/extensions/v1beta1"
imagepolicyv1alpha1 "k8s.io/api/imagepolicy/v1alpha1"
networkingv1 "k8s.io/api/networking/v1"
policyv1beta1 "k8s.io/api/policy/v1beta1"
rbacv1 "k8s.io/api/rbac/v1"
rbacv1alpha1 "k8s.io/api/rbac/v1alpha1"
rbacv1beta1 "k8s.io/api/rbac/v1beta1"
schedulingv1alpha1 "k8s.io/api/scheduling/v1alpha1"
settingsv1alpha1 "k8s.io/api/settings/v1alpha1"
storagev1 "k8s.io/api/storage/v1"
storagev1beta1 "k8s.io/api/storage/v1beta1"
"k8s.io/apimachinery/pkg/apimachinery/announced"
"k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/runtime/schema"
"k8s.io/apimachinery/pkg/util/sets"
"k8s.io/client-go/kubernetes/scheme"
)
// Register all groups in the kubectl's registry, but no componentconfig group since it's not in k8s.io/api
// The code in this file mostly duplicate the install under k8s.io/kubernetes/pkg/api and k8s.io/kubernetes/pkg/apis,
// but does NOT register the internal types.
func init() {
// Register external types for Scheme
v1.AddToGroupVersion(Scheme, schema.GroupVersion{Version: "v1"})
scheme.AddToScheme(Scheme)
// Register external types for Registry
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: corev1.GroupName,
VersionPreferenceOrder: []string{corev1.SchemeGroupVersion.Version},
RootScopedKinds: sets.NewString(
"Node",
"Namespace",
"PersistentVolume",
"ComponentStatus",
),
IgnoredKinds: sets.NewString(
"ListOptions",
"DeleteOptions",
"Status",
"PodLogOptions",
"PodExecOptions",
"PodAttachOptions",
"PodPortForwardOptions",
"PodProxyOptions",
"NodeProxyOptions",
"ServiceProxyOptions",
"ThirdPartyResource",
"ThirdPartyResourceData",
"ThirdPartyResourceList",
),
},
announced.VersionToSchemeFunc{
corev1.SchemeGroupVersion.Version: corev1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: admissionv1alpha1.GroupName,
VersionPreferenceOrder: []string{admissionv1alpha1.SchemeGroupVersion.Version},
RootScopedKinds: sets.NewString("AdmissionReview"),
},
announced.VersionToSchemeFunc{
admissionv1alpha1.SchemeGroupVersion.Version: admissionv1alpha1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: admissionregistrationv1alpha1.GroupName,
RootScopedKinds: sets.NewString("InitializerConfiguration", "ExternalAdmissionHookConfiguration"),
VersionPreferenceOrder: []string{admissionregistrationv1alpha1.SchemeGroupVersion.Version},
},
announced.VersionToSchemeFunc{
admissionregistrationv1alpha1.SchemeGroupVersion.Version: admissionregistrationv1alpha1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: appsv1.GroupName,
VersionPreferenceOrder: []string{appsv1beta1.SchemeGroupVersion.Version, appsv1beta2.SchemeGroupVersion.Version, appsv1.SchemeGroupVersion.Version},
},
announced.VersionToSchemeFunc{
appsv1beta1.SchemeGroupVersion.Version: appsv1beta1.AddToScheme,
appsv1beta2.SchemeGroupVersion.Version: appsv1beta2.AddToScheme,
appsv1.SchemeGroupVersion.Version: appsv1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: authenticationv1beta1.GroupName,
VersionPreferenceOrder: []string{authenticationv1.SchemeGroupVersion.Version, authenticationv1beta1.SchemeGroupVersion.Version},
RootScopedKinds: sets.NewString("TokenReview"),
},
announced.VersionToSchemeFunc{
authenticationv1beta1.SchemeGroupVersion.Version: authenticationv1beta1.AddToScheme,
authenticationv1.SchemeGroupVersion.Version: authenticationv1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: authorizationv1.GroupName,
VersionPreferenceOrder: []string{authorizationv1.SchemeGroupVersion.Version, authorizationv1beta1.SchemeGroupVersion.Version},
RootScopedKinds: sets.NewString("SubjectAccessReview", "SelfSubjectAccessReview", "SelfSubjectRulesReview"),
},
announced.VersionToSchemeFunc{
authorizationv1beta1.SchemeGroupVersion.Version: authorizationv1beta1.AddToScheme,
authorizationv1.SchemeGroupVersion.Version: authorizationv1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: autoscalingv1.GroupName,
VersionPreferenceOrder: []string{autoscalingv1.SchemeGroupVersion.Version, autoscalingv2beta1.SchemeGroupVersion.Version},
},
announced.VersionToSchemeFunc{
autoscalingv1.SchemeGroupVersion.Version: autoscalingv1.AddToScheme,
autoscalingv2beta1.SchemeGroupVersion.Version: autoscalingv2beta1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: batchv1.GroupName,
VersionPreferenceOrder: []string{batchv1.SchemeGroupVersion.Version, batchv1beta1.SchemeGroupVersion.Version, batchv2alpha1.SchemeGroupVersion.Version},
},
announced.VersionToSchemeFunc{
batchv1.SchemeGroupVersion.Version: batchv1.AddToScheme,
batchv1beta1.SchemeGroupVersion.Version: batchv1beta1.AddToScheme,
batchv2alpha1.SchemeGroupVersion.Version: batchv2alpha1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: certificatesv1beta1.GroupName,
VersionPreferenceOrder: []string{certificatesv1beta1.SchemeGroupVersion.Version},
RootScopedKinds: sets.NewString("CertificateSigningRequest"),
},
announced.VersionToSchemeFunc{
certificatesv1beta1.SchemeGroupVersion.Version: certificatesv1beta1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: extensionsv1beta1.GroupName,
VersionPreferenceOrder: []string{extensionsv1beta1.SchemeGroupVersion.Version},
RootScopedKinds: sets.NewString("PodSecurityPolicy", "ThirdPartyResource"),
},
announced.VersionToSchemeFunc{
extensionsv1beta1.SchemeGroupVersion.Version: extensionsv1beta1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: imagepolicyv1alpha1.GroupName,
VersionPreferenceOrder: []string{imagepolicyv1alpha1.SchemeGroupVersion.Version},
RootScopedKinds: sets.NewString("ImageReview"),
},
announced.VersionToSchemeFunc{
imagepolicyv1alpha1.SchemeGroupVersion.Version: imagepolicyv1alpha1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: networkingv1.GroupName,
VersionPreferenceOrder: []string{networkingv1.SchemeGroupVersion.Version},
},
announced.VersionToSchemeFunc{
networkingv1.SchemeGroupVersion.Version: networkingv1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: policyv1beta1.GroupName,
VersionPreferenceOrder: []string{policyv1beta1.SchemeGroupVersion.Version},
},
announced.VersionToSchemeFunc{
policyv1beta1.SchemeGroupVersion.Version: policyv1beta1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: rbacv1.GroupName,
VersionPreferenceOrder: []string{rbacv1.SchemeGroupVersion.Version, rbacv1beta1.SchemeGroupVersion.Version, rbacv1alpha1.SchemeGroupVersion.Version},
RootScopedKinds: sets.NewString("ClusterRole", "ClusterRoleBinding"),
},
announced.VersionToSchemeFunc{
rbacv1.SchemeGroupVersion.Version: rbacv1.AddToScheme,
rbacv1beta1.SchemeGroupVersion.Version: rbacv1beta1.AddToScheme,
rbacv1alpha1.SchemeGroupVersion.Version: rbacv1alpha1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: schedulingv1alpha1.GroupName,
VersionPreferenceOrder: []string{schedulingv1alpha1.SchemeGroupVersion.Version},
RootScopedKinds: sets.NewString("PriorityClass"),
},
announced.VersionToSchemeFunc{
schedulingv1alpha1.SchemeGroupVersion.Version: schedulingv1alpha1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: settingsv1alpha1.GroupName,
VersionPreferenceOrder: []string{settingsv1alpha1.SchemeGroupVersion.Version},
},
announced.VersionToSchemeFunc{
settingsv1alpha1.SchemeGroupVersion.Version: settingsv1alpha1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
if err := announced.NewGroupMetaFactory(
&announced.GroupMetaFactoryArgs{
GroupName: storagev1.GroupName,
VersionPreferenceOrder: []string{storagev1.SchemeGroupVersion.Version, storagev1beta1.SchemeGroupVersion.Version},
RootScopedKinds: sets.NewString("StorageClass"),
},
announced.VersionToSchemeFunc{
storagev1.SchemeGroupVersion.Version: storagev1.AddToScheme,
storagev1beta1.SchemeGroupVersion.Version: storagev1beta1.AddToScheme,
},
).Announce(GroupFactoryRegistry).RegisterAndEnable(Registry, Scheme); err != nil {
panic(err)
}
}

View File

@ -0,0 +1,43 @@
/*
Copyright 2017 The Kubernetes Authors.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package scheme
import (
"os"
"k8s.io/apimachinery/pkg/apimachinery/announced"
"k8s.io/apimachinery/pkg/apimachinery/registered"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/runtime/serializer"
)
// All kubectl code should eventually switch to use this Registry and Scheme instead of the global ones.
// GroupFactoryRegistry is the APIGroupFactoryRegistry (overlaps a bit with Registry, see comments in package for details)
var GroupFactoryRegistry = make(announced.APIGroupFactoryRegistry)
// Registry is an instance of an API registry.
var Registry = registered.NewOrDie(os.Getenv("KUBE_API_VERSIONS"))
// Scheme is the default instance of runtime.Scheme to which types in the Kubernetes API are already registered.
var Scheme = runtime.NewScheme()
// Codecs provides access to encoding and decoding for the scheme
var Codecs = serializer.NewCodecFactory(Scheme)
// ParameterCodec handles versioning of objects that are converted to query parameters.
var ParameterCodec = runtime.NewParameterCodec(Scheme)

View File

@ -23,9 +23,9 @@ import (
"path" "path"
"strings" "strings"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/util/validation" "k8s.io/apimachinery/pkg/util/validation"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/kubectl/util" "k8s.io/kubernetes/pkg/kubectl/util"
"k8s.io/kubernetes/pkg/kubectl/util/hash" "k8s.io/kubernetes/pkg/kubectl/util/hash"
) )
@ -129,11 +129,11 @@ func (s SecretGeneratorV1) StructuredGenerate() (runtime.Object, error) {
if err := s.validate(); err != nil { if err := s.validate(); err != nil {
return nil, err return nil, err
} }
secret := &api.Secret{} secret := &v1.Secret{}
secret.Name = s.Name secret.Name = s.Name
secret.Data = map[string][]byte{} secret.Data = map[string][]byte{}
if len(s.Type) > 0 { if len(s.Type) > 0 {
secret.Type = api.SecretType(s.Type) secret.Type = v1.SecretType(s.Type)
} }
if len(s.FileSources) > 0 { if len(s.FileSources) > 0 {
if err := handleFromFileSources(secret, s.FileSources); err != nil { if err := handleFromFileSources(secret, s.FileSources); err != nil {
@ -172,7 +172,7 @@ func (s SecretGeneratorV1) validate() error {
} }
// handleFromLiteralSources adds the specified literal source information into the provided secret // handleFromLiteralSources adds the specified literal source information into the provided secret
func handleFromLiteralSources(secret *api.Secret, literalSources []string) error { func handleFromLiteralSources(secret *v1.Secret, literalSources []string) error {
for _, literalSource := range literalSources { for _, literalSource := range literalSources {
keyName, value, err := util.ParseLiteralSource(literalSource) keyName, value, err := util.ParseLiteralSource(literalSource)
if err != nil { if err != nil {
@ -186,7 +186,7 @@ func handleFromLiteralSources(secret *api.Secret, literalSources []string) error
} }
// handleFromFileSources adds the specified file source information into the provided secret // handleFromFileSources adds the specified file source information into the provided secret
func handleFromFileSources(secret *api.Secret, fileSources []string) error { func handleFromFileSources(secret *v1.Secret, fileSources []string) error {
for _, fileSource := range fileSources { for _, fileSource := range fileSources {
keyName, filePath, err := util.ParseFileSource(fileSource) keyName, filePath, err := util.ParseFileSource(fileSource)
if err != nil { if err != nil {
@ -230,7 +230,7 @@ func handleFromFileSources(secret *api.Secret, fileSources []string) error {
// handleFromEnvFileSource adds the specified env file source information // handleFromEnvFileSource adds the specified env file source information
// into the provided secret // into the provided secret
func handleFromEnvFileSource(secret *api.Secret, envFileSource string) error { func handleFromEnvFileSource(secret *v1.Secret, envFileSource string) error {
info, err := os.Stat(envFileSource) info, err := os.Stat(envFileSource)
if err != nil { if err != nil {
switch err := err.(type) { switch err := err.(type) {
@ -249,7 +249,7 @@ func handleFromEnvFileSource(secret *api.Secret, envFileSource string) error {
}) })
} }
func addKeyFromFileToSecret(secret *api.Secret, keyName, filePath string) error { func addKeyFromFileToSecret(secret *v1.Secret, keyName, filePath string) error {
data, err := ioutil.ReadFile(filePath) data, err := ioutil.ReadFile(filePath)
if err != nil { if err != nil {
return err return err
@ -257,7 +257,7 @@ func addKeyFromFileToSecret(secret *api.Secret, keyName, filePath string) error
return addKeyFromLiteralToSecret(secret, keyName, data) return addKeyFromLiteralToSecret(secret, keyName, data)
} }
func addKeyFromLiteralToSecret(secret *api.Secret, keyName string, data []byte) error { func addKeyFromLiteralToSecret(secret *v1.Secret, keyName string, data []byte) error {
if errs := validation.IsConfigMapKey(keyName); len(errs) != 0 { if errs := validation.IsConfigMapKey(keyName); len(errs) != 0 {
return fmt.Errorf("%q is not a valid key name for a Secret: %s", keyName, strings.Join(errs, ";")) return fmt.Errorf("%q is not a valid key name for a Secret: %s", keyName, strings.Join(errs, ";"))
} }

View File

@ -20,8 +20,8 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/credentialprovider" "k8s.io/kubernetes/pkg/credentialprovider"
"k8s.io/kubernetes/pkg/kubectl/util/hash" "k8s.io/kubernetes/pkg/kubectl/util/hash"
) )
@ -89,11 +89,11 @@ func (s SecretForDockerRegistryGeneratorV1) StructuredGenerate() (runtime.Object
if err != nil { if err != nil {
return nil, err return nil, err
} }
secret := &api.Secret{} secret := &v1.Secret{}
secret.Name = s.Name secret.Name = s.Name
secret.Type = api.SecretTypeDockercfg secret.Type = v1.SecretTypeDockercfg
secret.Data = map[string][]byte{} secret.Data = map[string][]byte{}
secret.Data[api.DockerConfigKey] = dockercfgContent secret.Data[v1.DockerConfigKey] = dockercfgContent
if s.AppendHash { if s.AppendHash {
h, err := hash.SecretHash(secret) h, err := hash.SecretHash(secret)
if err != nil { if err != nil {

View File

@ -20,8 +20,8 @@ import (
"reflect" "reflect"
"testing" "testing"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/api"
) )
func TestSecretForDockerRegistryGenerate(t *testing.T) { func TestSecretForDockerRegistryGenerate(t *testing.T) {
@ -37,7 +37,7 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) {
tests := map[string]struct { tests := map[string]struct {
params map[string]interface{} params map[string]interface{}
expected *api.Secret expected *v1.Secret
expectErr bool expectErr bool
}{ }{
"test-valid-use": { "test-valid-use": {
@ -48,14 +48,14 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) {
"docker-password": password, "docker-password": password,
"docker-email": email, "docker-email": email,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
Data: map[string][]byte{ Data: map[string][]byte{
api.DockerConfigKey: secretData, v1.DockerConfigKey: secretData,
}, },
Type: api.SecretTypeDockercfg, Type: v1.SecretTypeDockercfg,
}, },
expectErr: false, expectErr: false,
}, },
@ -68,14 +68,14 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) {
"docker-email": email, "docker-email": email,
"append-hash": true, "append-hash": true,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo-94759gc65b", Name: "foo-94759gc65b",
}, },
Data: map[string][]byte{ Data: map[string][]byte{
api.DockerConfigKey: secretData, v1.DockerConfigKey: secretData,
}, },
Type: api.SecretTypeDockercfg, Type: v1.SecretTypeDockercfg,
}, },
expectErr: false, expectErr: false,
}, },
@ -86,14 +86,14 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) {
"docker-username": username, "docker-username": username,
"docker-password": password, "docker-password": password,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
Data: map[string][]byte{ Data: map[string][]byte{
api.DockerConfigKey: secretDataNoEmail, v1.DockerConfigKey: secretDataNoEmail,
}, },
Type: api.SecretTypeDockercfg, Type: v1.SecretTypeDockercfg,
}, },
expectErr: false, expectErr: false,
}, },
@ -117,8 +117,8 @@ func TestSecretForDockerRegistryGenerate(t *testing.T) {
if test.expectErr && err != nil { if test.expectErr && err != nil {
continue continue
} }
if !reflect.DeepEqual(obj.(*api.Secret), test.expected) { if !reflect.DeepEqual(obj.(*v1.Secret), test.expected) {
t.Errorf("\nexpected:\n%#v\nsaw:\n%#v", test.expected, obj.(*api.Secret)) t.Errorf("\nexpected:\n%#v\nsaw:\n%#v", test.expected, obj.(*v1.Secret))
} }
} }
} }

View File

@ -21,8 +21,8 @@ import (
"fmt" "fmt"
"io/ioutil" "io/ioutil"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/api"
"k8s.io/kubernetes/pkg/kubectl/util/hash" "k8s.io/kubernetes/pkg/kubectl/util/hash"
) )
@ -87,12 +87,12 @@ func (s SecretForTLSGeneratorV1) StructuredGenerate() (runtime.Object, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
secret := &api.Secret{} secret := &v1.Secret{}
secret.Name = s.Name secret.Name = s.Name
secret.Type = api.SecretTypeTLS secret.Type = v1.SecretTypeTLS
secret.Data = map[string][]byte{} secret.Data = map[string][]byte{}
secret.Data[api.TLSCertKey] = []byte(tlsCrt) secret.Data[v1.TLSCertKey] = []byte(tlsCrt)
secret.Data[api.TLSPrivateKeyKey] = []byte(tlsKey) secret.Data[v1.TLSPrivateKeyKey] = []byte(tlsKey)
if s.AppendHash { if s.AppendHash {
h, err := hash.SecretHash(secret) h, err := hash.SecretHash(secret)
if err != nil { if err != nil {

View File

@ -23,9 +23,9 @@ import (
"reflect" "reflect"
"testing" "testing"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
utiltesting "k8s.io/client-go/util/testing" utiltesting "k8s.io/client-go/util/testing"
"k8s.io/kubernetes/pkg/api"
) )
var rsaCertPEM = `-----BEGIN CERTIFICATE----- var rsaCertPEM = `-----BEGIN CERTIFICATE-----
@ -124,7 +124,7 @@ func TestSecretForTLSGenerate(t *testing.T) {
tests := map[string]struct { tests := map[string]struct {
params map[string]interface{} params map[string]interface{}
expected *api.Secret expected *v1.Secret
expectErr bool expectErr bool
}{ }{
"test-valid-tls-secret": { "test-valid-tls-secret": {
@ -133,15 +133,15 @@ func TestSecretForTLSGenerate(t *testing.T) {
"key": validKeyPath, "key": validKeyPath,
"cert": validCertPath, "cert": validCertPath,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
Data: map[string][]byte{ Data: map[string][]byte{
api.TLSCertKey: []byte(rsaCertPEM), v1.TLSCertKey: []byte(rsaCertPEM),
api.TLSPrivateKeyKey: []byte(rsaKeyPEM), v1.TLSPrivateKeyKey: []byte(rsaKeyPEM),
}, },
Type: api.SecretTypeTLS, Type: v1.SecretTypeTLS,
}, },
expectErr: false, expectErr: false,
}, },
@ -152,15 +152,15 @@ func TestSecretForTLSGenerate(t *testing.T) {
"cert": validCertPath, "cert": validCertPath,
"append-hash": true, "append-hash": true,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo-272h6tt825", Name: "foo-272h6tt825",
}, },
Data: map[string][]byte{ Data: map[string][]byte{
api.TLSCertKey: []byte(rsaCertPEM), v1.TLSCertKey: []byte(rsaCertPEM),
api.TLSPrivateKeyKey: []byte(rsaKeyPEM), v1.TLSPrivateKeyKey: []byte(rsaKeyPEM),
}, },
Type: api.SecretTypeTLS, Type: v1.SecretTypeTLS,
}, },
expectErr: false, expectErr: false,
}, },
@ -170,15 +170,15 @@ func TestSecretForTLSGenerate(t *testing.T) {
"key": invalidKeyPath, "key": invalidKeyPath,
"cert": invalidCertPath, "cert": invalidCertPath,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
Data: map[string][]byte{ Data: map[string][]byte{
api.TLSCertKey: []byte("test"), v1.TLSCertKey: []byte("test"),
api.TLSPrivateKeyKey: []byte("test"), v1.TLSPrivateKeyKey: []byte("test"),
}, },
Type: api.SecretTypeTLS, Type: v1.SecretTypeTLS,
}, },
expectErr: true, expectErr: true,
}, },
@ -188,15 +188,15 @@ func TestSecretForTLSGenerate(t *testing.T) {
"key": mismatchKeyPath, "key": mismatchKeyPath,
"cert": mismatchCertPath, "cert": mismatchCertPath,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
Data: map[string][]byte{ Data: map[string][]byte{
api.TLSCertKey: []byte(rsaCertPEM), v1.TLSCertKey: []byte(rsaCertPEM),
api.TLSPrivateKeyKey: []byte(mismatchRSAKeyPEM), v1.TLSPrivateKeyKey: []byte(mismatchRSAKeyPEM),
}, },
Type: api.SecretTypeTLS, Type: v1.SecretTypeTLS,
}, },
expectErr: true, expectErr: true,
}, },
@ -218,8 +218,8 @@ func TestSecretForTLSGenerate(t *testing.T) {
if test.expectErr && err != nil { if test.expectErr && err != nil {
continue continue
} }
if !reflect.DeepEqual(obj.(*api.Secret), test.expected) { if !reflect.DeepEqual(obj.(*v1.Secret), test.expected) {
t.Errorf("\nexpected:\n%#v\nsaw:\n%#v", test.expected, obj.(*api.Secret)) t.Errorf("\nexpected:\n%#v\nsaw:\n%#v", test.expected, obj.(*v1.Secret))
} }
} }
} }

View File

@ -21,22 +21,22 @@ import (
"reflect" "reflect"
"testing" "testing"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/api"
) )
func TestSecretGenerate(t *testing.T) { func TestSecretGenerate(t *testing.T) {
tests := []struct { tests := []struct {
setup func(t *testing.T, params map[string]interface{}) func() setup func(t *testing.T, params map[string]interface{}) func()
params map[string]interface{} params map[string]interface{}
expected *api.Secret expected *v1.Secret
expectErr bool expectErr bool
}{ }{
{ {
params: map[string]interface{}{ params: map[string]interface{}{
"name": "foo", "name": "foo",
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
@ -49,7 +49,7 @@ func TestSecretGenerate(t *testing.T) {
"name": "foo", "name": "foo",
"append-hash": true, "append-hash": true,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo-949tdgdkgg", Name: "foo-949tdgdkgg",
}, },
@ -62,7 +62,7 @@ func TestSecretGenerate(t *testing.T) {
"name": "foo", "name": "foo",
"type": "my-type", "type": "my-type",
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
@ -77,7 +77,7 @@ func TestSecretGenerate(t *testing.T) {
"type": "my-type", "type": "my-type",
"append-hash": true, "append-hash": true,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo-dg474f9t76", Name: "foo-dg474f9t76",
}, },
@ -91,7 +91,7 @@ func TestSecretGenerate(t *testing.T) {
"name": "foo", "name": "foo",
"from-literal": []string{"key1=value1", "key2=value2"}, "from-literal": []string{"key1=value1", "key2=value2"},
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
@ -108,7 +108,7 @@ func TestSecretGenerate(t *testing.T) {
"from-literal": []string{"key1=value1", "key2=value2"}, "from-literal": []string{"key1=value1", "key2=value2"},
"append-hash": true, "append-hash": true,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo-tf72c228m4", Name: "foo-tf72c228m4",
}, },
@ -145,7 +145,7 @@ func TestSecretGenerate(t *testing.T) {
"name": "foo", "name": "foo",
"from-literal": []string{"key1==value1"}, "from-literal": []string{"key1==value1"},
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
@ -161,7 +161,7 @@ func TestSecretGenerate(t *testing.T) {
"from-literal": []string{"key1==value1"}, "from-literal": []string{"key1==value1"},
"append-hash": true, "append-hash": true,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo-fdcc8tkhh5", Name: "foo-fdcc8tkhh5",
}, },
@ -177,7 +177,7 @@ func TestSecretGenerate(t *testing.T) {
"name": "valid_env", "name": "valid_env",
"from-env-file": "file.env", "from-env-file": "file.env",
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "valid_env", Name: "valid_env",
}, },
@ -195,7 +195,7 @@ func TestSecretGenerate(t *testing.T) {
"from-env-file": "file.env", "from-env-file": "file.env",
"append-hash": true, "append-hash": true,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "valid_env-bkb2m2965h", Name: "valid_env-bkb2m2965h",
}, },
@ -216,7 +216,7 @@ func TestSecretGenerate(t *testing.T) {
"name": "getenv", "name": "getenv",
"from-env-file": "file.env", "from-env-file": "file.env",
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "getenv", Name: "getenv",
}, },
@ -238,7 +238,7 @@ func TestSecretGenerate(t *testing.T) {
"from-env-file": "file.env", "from-env-file": "file.env",
"append-hash": true, "append-hash": true,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "getenv-m7kg2khdb4", Name: "getenv-m7kg2khdb4",
}, },
@ -271,7 +271,7 @@ func TestSecretGenerate(t *testing.T) {
"name": "with_spaces", "name": "with_spaces",
"from-env-file": "file.env", "from-env-file": "file.env",
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "with_spaces", Name: "with_spaces",
}, },
@ -288,7 +288,7 @@ func TestSecretGenerate(t *testing.T) {
"from-env-file": "file.env", "from-env-file": "file.env",
"append-hash": true, "append-hash": true,
}, },
expected: &api.Secret{ expected: &v1.Secret{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "with_spaces-4488d5b57d", Name: "with_spaces-4488d5b57d",
}, },
@ -314,8 +314,8 @@ func TestSecretGenerate(t *testing.T) {
if test.expectErr && err != nil { if test.expectErr && err != nil {
continue continue
} }
if !reflect.DeepEqual(obj.(*api.Secret), test.expected) { if !reflect.DeepEqual(obj.(*v1.Secret), test.expected) {
t.Errorf("\ncase %d, expected:\n%#v\nsaw:\n%#v", i, test.expected, obj.(*api.Secret)) t.Errorf("\ncase %d, expected:\n%#v\nsaw:\n%#v", i, test.expected, obj.(*v1.Secret))
} }
} }
} }

View File

@ -21,17 +21,17 @@ import (
"strconv" "strconv"
"strings" "strings"
"k8s.io/api/core/v1"
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/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/apimachinery/pkg/util/validation" "k8s.io/apimachinery/pkg/util/validation"
"k8s.io/kubernetes/pkg/api"
) )
type ServiceCommonGeneratorV1 struct { type ServiceCommonGeneratorV1 struct {
Name string Name string
TCP []string TCP []string
Type api.ServiceType Type v1.ServiceType
ClusterIP string ClusterIP string
NodePort int NodePort int
ExternalName string ExternalName string
@ -131,7 +131,7 @@ func (s ServiceLoadBalancerGeneratorV1) Generate(params map[string]interface{})
if err != nil { if err != nil {
return nil, err return nil, err
} }
delegate := &ServiceCommonGeneratorV1{Type: api.ServiceTypeLoadBalancer, ClusterIP: ""} delegate := &ServiceCommonGeneratorV1{Type: v1.ServiceTypeLoadBalancer, ClusterIP: ""}
err = delegate.GenerateCommon(params) err = delegate.GenerateCommon(params)
if err != nil { if err != nil {
return nil, err return nil, err
@ -144,7 +144,7 @@ func (s ServiceNodePortGeneratorV1) Generate(params map[string]interface{}) (run
if err != nil { if err != nil {
return nil, err return nil, err
} }
delegate := &ServiceCommonGeneratorV1{Type: api.ServiceTypeNodePort, ClusterIP: ""} delegate := &ServiceCommonGeneratorV1{Type: v1.ServiceTypeNodePort, ClusterIP: ""}
err = delegate.GenerateCommon(params) err = delegate.GenerateCommon(params)
if err != nil { if err != nil {
return nil, err return nil, err
@ -157,7 +157,7 @@ func (s ServiceClusterIPGeneratorV1) Generate(params map[string]interface{}) (ru
if err != nil { if err != nil {
return nil, err return nil, err
} }
delegate := &ServiceCommonGeneratorV1{Type: api.ServiceTypeClusterIP, ClusterIP: ""} delegate := &ServiceCommonGeneratorV1{Type: v1.ServiceTypeClusterIP, ClusterIP: ""}
err = delegate.GenerateCommon(params) err = delegate.GenerateCommon(params)
if err != nil { if err != nil {
return nil, err return nil, err
@ -170,7 +170,7 @@ func (s ServiceExternalNameGeneratorV1) Generate(params map[string]interface{})
if err != nil { if err != nil {
return nil, err return nil, err
} }
delegate := &ServiceCommonGeneratorV1{Type: api.ServiceTypeExternalName, ClusterIP: ""} delegate := &ServiceCommonGeneratorV1{Type: v1.ServiceTypeExternalName, ClusterIP: ""}
err = delegate.GenerateCommon(params) err = delegate.GenerateCommon(params)
if err != nil { if err != nil {
return nil, err return nil, err
@ -187,13 +187,13 @@ func (s ServiceCommonGeneratorV1) validate() error {
if len(s.Type) == 0 { if len(s.Type) == 0 {
return fmt.Errorf("type must be specified") return fmt.Errorf("type must be specified")
} }
if s.ClusterIP == api.ClusterIPNone && s.Type != api.ServiceTypeClusterIP { if s.ClusterIP == v1.ClusterIPNone && s.Type != v1.ServiceTypeClusterIP {
return fmt.Errorf("ClusterIP=None can only be used with ClusterIP service type") return fmt.Errorf("ClusterIP=None can only be used with ClusterIP service type")
} }
if s.ClusterIP != api.ClusterIPNone && len(s.TCP) == 0 && s.Type != api.ServiceTypeExternalName { if s.ClusterIP != v1.ClusterIPNone && len(s.TCP) == 0 && s.Type != v1.ServiceTypeExternalName {
return fmt.Errorf("at least one tcp port specifier must be provided") return fmt.Errorf("at least one tcp port specifier must be provided")
} }
if s.Type == api.ServiceTypeExternalName { if s.Type == v1.ServiceTypeExternalName {
if errs := validation.IsDNS1123Subdomain(s.ExternalName); len(errs) != 0 { if errs := validation.IsDNS1123Subdomain(s.ExternalName); len(errs) != 0 {
return fmt.Errorf("invalid service external name %s", s.ExternalName) return fmt.Errorf("invalid service external name %s", s.ExternalName)
} }
@ -206,7 +206,7 @@ func (s ServiceCommonGeneratorV1) StructuredGenerate() (runtime.Object, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
ports := []api.ServicePort{} ports := []v1.ServicePort{}
for _, tcpString := range s.TCP { for _, tcpString := range s.TCP {
port, targetPort, err := parsePorts(tcpString) port, targetPort, err := parsePorts(tcpString)
if err != nil { if err != nil {
@ -214,11 +214,11 @@ func (s ServiceCommonGeneratorV1) StructuredGenerate() (runtime.Object, error) {
} }
portName := strings.Replace(tcpString, ":", "-", -1) portName := strings.Replace(tcpString, ":", "-", -1)
ports = append(ports, api.ServicePort{ ports = append(ports, v1.ServicePort{
Name: portName, Name: portName,
Port: port, Port: port,
TargetPort: targetPort, TargetPort: targetPort,
Protocol: api.Protocol("TCP"), Protocol: v1.Protocol("TCP"),
NodePort: int32(s.NodePort), NodePort: int32(s.NodePort),
}) })
} }
@ -229,13 +229,13 @@ func (s ServiceCommonGeneratorV1) StructuredGenerate() (runtime.Object, error) {
selector := map[string]string{} selector := map[string]string{}
selector["app"] = s.Name selector["app"] = s.Name
service := api.Service{ service := v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: s.Name, Name: s.Name,
Labels: labels, Labels: labels,
}, },
Spec: api.ServiceSpec{ Spec: v1.ServiceSpec{
Type: api.ServiceType(s.Type), Type: v1.ServiceType(s.Type),
Selector: selector, Selector: selector,
Ports: ports, Ports: ports,
ExternalName: s.ExternalName, ExternalName: s.ExternalName,

View File

@ -20,32 +20,32 @@ import (
"reflect" "reflect"
"testing" "testing"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/apimachinery/pkg/util/intstr" "k8s.io/apimachinery/pkg/util/intstr"
"k8s.io/kubernetes/pkg/api"
) )
func TestServiceBasicGenerate(t *testing.T) { func TestServiceBasicGenerate(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
serviceType api.ServiceType serviceType v1.ServiceType
tcp []string tcp []string
clusterip string clusterip string
expected *api.Service expected *v1.Service
expectErr bool expectErr bool
}{ }{
{ {
name: "clusterip-ok", name: "clusterip-ok",
tcp: []string{"456", "321:908"}, tcp: []string{"456", "321:908"},
clusterip: "", clusterip: "",
serviceType: api.ServiceTypeClusterIP, serviceType: v1.ServiceTypeClusterIP,
expected: &api.Service{ expected: &v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "clusterip-ok", Name: "clusterip-ok",
Labels: map[string]string{"app": "clusterip-ok"}, Labels: map[string]string{"app": "clusterip-ok"},
}, },
Spec: api.ServiceSpec{Type: "ClusterIP", Spec: v1.ServiceSpec{Type: "ClusterIP",
Ports: []api.ServicePort{{Name: "456", Protocol: "TCP", Port: 456, TargetPort: intstr.IntOrString{Type: 0, IntVal: 456, StrVal: ""}, NodePort: 0}, Ports: []v1.ServicePort{{Name: "456", Protocol: "TCP", Port: 456, TargetPort: intstr.IntOrString{Type: 0, IntVal: 456, StrVal: ""}, NodePort: 0},
{Name: "321-908", Protocol: "TCP", Port: 321, TargetPort: intstr.IntOrString{Type: 0, IntVal: 908, StrVal: ""}, NodePort: 0}}, {Name: "321-908", Protocol: "TCP", Port: 321, TargetPort: intstr.IntOrString{Type: 0, IntVal: 908, StrVal: ""}, NodePort: 0}},
Selector: map[string]string{"app": "clusterip-ok"}, Selector: map[string]string{"app": "clusterip-ok"},
ClusterIP: "", ExternalIPs: []string(nil), LoadBalancerIP: ""}, ClusterIP: "", ExternalIPs: []string(nil), LoadBalancerIP: ""},
@ -54,28 +54,28 @@ func TestServiceBasicGenerate(t *testing.T) {
}, },
{ {
name: "clusterip-missing", name: "clusterip-missing",
serviceType: api.ServiceTypeClusterIP, serviceType: v1.ServiceTypeClusterIP,
expectErr: true, expectErr: true,
}, },
{ {
name: "clusterip-none-wrong-type", name: "clusterip-none-wrong-type",
tcp: []string{}, tcp: []string{},
clusterip: "None", clusterip: "None",
serviceType: api.ServiceTypeNodePort, serviceType: v1.ServiceTypeNodePort,
expectErr: true, expectErr: true,
}, },
{ {
name: "clusterip-none-ok", name: "clusterip-none-ok",
tcp: []string{}, tcp: []string{},
clusterip: "None", clusterip: "None",
serviceType: api.ServiceTypeClusterIP, serviceType: v1.ServiceTypeClusterIP,
expected: &api.Service{ expected: &v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "clusterip-none-ok", Name: "clusterip-none-ok",
Labels: map[string]string{"app": "clusterip-none-ok"}, Labels: map[string]string{"app": "clusterip-none-ok"},
}, },
Spec: api.ServiceSpec{Type: "ClusterIP", Spec: v1.ServiceSpec{Type: "ClusterIP",
Ports: []api.ServicePort{}, Ports: []v1.ServicePort{},
Selector: map[string]string{"app": "clusterip-none-ok"}, Selector: map[string]string{"app": "clusterip-none-ok"},
ClusterIP: "None", ExternalIPs: []string(nil), LoadBalancerIP: ""}, ClusterIP: "None", ExternalIPs: []string(nil), LoadBalancerIP: ""},
}, },
@ -85,14 +85,14 @@ func TestServiceBasicGenerate(t *testing.T) {
name: "clusterip-none-and-port-mapping", name: "clusterip-none-and-port-mapping",
tcp: []string{"456:9898"}, tcp: []string{"456:9898"},
clusterip: "None", clusterip: "None",
serviceType: api.ServiceTypeClusterIP, serviceType: v1.ServiceTypeClusterIP,
expected: &api.Service{ expected: &v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "clusterip-none-and-port-mapping", Name: "clusterip-none-and-port-mapping",
Labels: map[string]string{"app": "clusterip-none-and-port-mapping"}, Labels: map[string]string{"app": "clusterip-none-and-port-mapping"},
}, },
Spec: api.ServiceSpec{Type: "ClusterIP", Spec: v1.ServiceSpec{Type: "ClusterIP",
Ports: []api.ServicePort{{Name: "456-9898", Protocol: "TCP", Port: 456, TargetPort: intstr.IntOrString{Type: 0, IntVal: 9898, StrVal: ""}, NodePort: 0}}, Ports: []v1.ServicePort{{Name: "456-9898", Protocol: "TCP", Port: 456, TargetPort: intstr.IntOrString{Type: 0, IntVal: 9898, StrVal: ""}, NodePort: 0}},
Selector: map[string]string{"app": "clusterip-none-and-port-mapping"}, Selector: map[string]string{"app": "clusterip-none-and-port-mapping"},
ClusterIP: "None", ExternalIPs: []string(nil), LoadBalancerIP: ""}, ClusterIP: "None", ExternalIPs: []string(nil), LoadBalancerIP: ""},
}, },
@ -102,14 +102,14 @@ func TestServiceBasicGenerate(t *testing.T) {
name: "loadbalancer-ok", name: "loadbalancer-ok",
tcp: []string{"456:9898"}, tcp: []string{"456:9898"},
clusterip: "", clusterip: "",
serviceType: api.ServiceTypeLoadBalancer, serviceType: v1.ServiceTypeLoadBalancer,
expected: &api.Service{ expected: &v1.Service{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "loadbalancer-ok", Name: "loadbalancer-ok",
Labels: map[string]string{"app": "loadbalancer-ok"}, Labels: map[string]string{"app": "loadbalancer-ok"},
}, },
Spec: api.ServiceSpec{Type: "LoadBalancer", Spec: v1.ServiceSpec{Type: "LoadBalancer",
Ports: []api.ServicePort{{Name: "456-9898", Protocol: "TCP", Port: 456, TargetPort: intstr.IntOrString{Type: 0, IntVal: 9898, StrVal: ""}, NodePort: 0}}, Ports: []v1.ServicePort{{Name: "456-9898", Protocol: "TCP", Port: 456, TargetPort: intstr.IntOrString{Type: 0, IntVal: 9898, StrVal: ""}, NodePort: 0}},
Selector: map[string]string{"app": "loadbalancer-ok"}, Selector: map[string]string{"app": "loadbalancer-ok"},
ClusterIP: "", ExternalIPs: []string(nil), LoadBalancerIP: ""}, ClusterIP: "", ExternalIPs: []string(nil), LoadBalancerIP: ""},
}, },
@ -133,8 +133,8 @@ func TestServiceBasicGenerate(t *testing.T) {
if test.expectErr && err != nil { if test.expectErr && err != nil {
continue continue
} }
if !reflect.DeepEqual(obj.(*api.Service), test.expected) { if !reflect.DeepEqual(obj.(*v1.Service), test.expected) {
t.Errorf("test: %v\nexpected:\n%#v\nsaw:\n%#v", test.name, test.expected, obj.(*api.Service)) t.Errorf("test: %v\nexpected:\n%#v\nsaw:\n%#v", test.name, test.expected, obj.(*v1.Service))
} }
} }
} }

View File

@ -19,8 +19,8 @@ package kubectl
import ( import (
"fmt" "fmt"
"k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/runtime" "k8s.io/apimachinery/pkg/runtime"
"k8s.io/kubernetes/pkg/api"
) )
// ServiceAccountGeneratorV1 supports stable generation of a service account // ServiceAccountGeneratorV1 supports stable generation of a service account
@ -37,7 +37,7 @@ func (g *ServiceAccountGeneratorV1) StructuredGenerate() (runtime.Object, error)
if err := g.validate(); err != nil { if err := g.validate(); err != nil {
return nil, err return nil, err
} }
serviceAccount := &api.ServiceAccount{} serviceAccount := &v1.ServiceAccount{}
serviceAccount.Name = g.Name serviceAccount.Name = g.Name
return serviceAccount, nil return serviceAccount, nil
} }

View File

@ -20,19 +20,19 @@ import (
"reflect" "reflect"
"testing" "testing"
"k8s.io/api/core/v1"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/kubernetes/pkg/api"
) )
func TestServiceAccountGenerate(t *testing.T) { func TestServiceAccountGenerate(t *testing.T) {
tests := []struct { tests := []struct {
name string name string
expected *api.ServiceAccount expected *v1.ServiceAccount
expectErr bool expectErr bool
}{ }{
{ {
name: "foo", name: "foo",
expected: &api.ServiceAccount{ expected: &v1.ServiceAccount{
ObjectMeta: metav1.ObjectMeta{ ObjectMeta: metav1.ObjectMeta{
Name: "foo", Name: "foo",
}, },
@ -54,8 +54,8 @@ func TestServiceAccountGenerate(t *testing.T) {
if test.expectErr && err != nil { if test.expectErr && err != nil {
continue continue
} }
if !reflect.DeepEqual(obj.(*api.ServiceAccount), test.expected) { if !reflect.DeepEqual(obj.(*v1.ServiceAccount), test.expected) {
t.Errorf("\nexpected:\n%#v\nsaw:\n%#v", test.expected, obj.(*api.ServiceAccount)) t.Errorf("\nexpected:\n%#v\nsaw:\n%#v", test.expected, obj.(*v1.ServiceAccount))
} }
} }
} }

View File

@ -11,14 +11,14 @@ go_test(
srcs = ["hash_test.go"], srcs = ["hash_test.go"],
importpath = "k8s.io/kubernetes/pkg/kubectl/util/hash", importpath = "k8s.io/kubernetes/pkg/kubectl/util/hash",
library = ":go_default_library", library = ":go_default_library",
deps = ["//pkg/api:go_default_library"], deps = ["//vendor/k8s.io/api/core/v1:go_default_library"],
) )
go_library( go_library(
name = "go_default_library", name = "go_default_library",
srcs = ["hash.go"], srcs = ["hash.go"],
importpath = "k8s.io/kubernetes/pkg/kubectl/util/hash", importpath = "k8s.io/kubernetes/pkg/kubectl/util/hash",
deps = ["//pkg/api:go_default_library"], deps = ["//vendor/k8s.io/api/core/v1:go_default_library"],
) )
filegroup( filegroup(

View File

@ -21,12 +21,12 @@ import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"k8s.io/kubernetes/pkg/api" "k8s.io/api/core/v1"
) )
// ConfigMapHash returns a hash of the ConfigMap. // ConfigMapHash returns a hash of the ConfigMap.
// The Data, Kind, and Name are taken into account. // The Data, Kind, and Name are taken into account.
func ConfigMapHash(cm *api.ConfigMap) (string, error) { func ConfigMapHash(cm *v1.ConfigMap) (string, error) {
encoded, err := encodeConfigMap(cm) encoded, err := encodeConfigMap(cm)
if err != nil { if err != nil {
return "", err return "", err
@ -40,7 +40,7 @@ func ConfigMapHash(cm *api.ConfigMap) (string, error) {
// SecretHash returns a hash of the Secret. // SecretHash returns a hash of the Secret.
// The Data, Kind, Name, and Type are taken into account. // The Data, Kind, Name, and Type are taken into account.
func SecretHash(sec *api.Secret) (string, error) { func SecretHash(sec *v1.Secret) (string, error) {
encoded, err := encodeSecret(sec) encoded, err := encodeSecret(sec)
if err != nil { if err != nil {
return "", err return "", err
@ -54,7 +54,7 @@ func SecretHash(sec *api.Secret) (string, error) {
// encodeConfigMap encodes a ConfigMap. // encodeConfigMap encodes a ConfigMap.
// Data, Kind, and Name are taken into account. // Data, Kind, and Name are taken into account.
func encodeConfigMap(cm *api.ConfigMap) (string, error) { func encodeConfigMap(cm *v1.ConfigMap) (string, error) {
// json.Marshal sorts the keys in a stable order in the encoding // json.Marshal sorts the keys in a stable order in the encoding
data, err := json.Marshal(map[string]interface{}{"kind": "ConfigMap", "name": cm.Name, "data": cm.Data}) data, err := json.Marshal(map[string]interface{}{"kind": "ConfigMap", "name": cm.Name, "data": cm.Data})
if err != nil { if err != nil {
@ -65,7 +65,7 @@ func encodeConfigMap(cm *api.ConfigMap) (string, error) {
// encodeSecret encodes a Secret. // encodeSecret encodes a Secret.
// Data, Kind, Name, and Type are taken into account. // Data, Kind, Name, and Type are taken into account.
func encodeSecret(sec *api.Secret) (string, error) { func encodeSecret(sec *v1.Secret) (string, error) {
// json.Marshal sorts the keys in a stable order in the encoding // json.Marshal sorts the keys in a stable order in the encoding
data, err := json.Marshal(map[string]interface{}{"kind": "Secret", "type": sec.Type, "name": sec.Name, "data": sec.Data}) data, err := json.Marshal(map[string]interface{}{"kind": "Secret", "type": sec.Type, "name": sec.Name, "data": sec.Data})
if err != nil { if err != nil {

View File

@ -21,22 +21,22 @@ import (
"strings" "strings"
"testing" "testing"
"k8s.io/kubernetes/pkg/api" "k8s.io/api/core/v1"
) )
func TestConfigMapHash(t *testing.T) { func TestConfigMapHash(t *testing.T) {
cases := []struct { cases := []struct {
desc string desc string
cm *api.ConfigMap cm *v1.ConfigMap
hash string hash string
err string err string
}{ }{
// empty map // empty map
{"empty data", &api.ConfigMap{Data: map[string]string{}}, "42745tchd9", ""}, {"empty data", &v1.ConfigMap{Data: map[string]string{}}, "42745tchd9", ""},
// one key // one key
{"one key", &api.ConfigMap{Data: map[string]string{"one": ""}}, "9g67k2htb6", ""}, {"one key", &v1.ConfigMap{Data: map[string]string{"one": ""}}, "9g67k2htb6", ""},
// three keys (tests sorting order) // three keys (tests sorting order)
{"three keys", &api.ConfigMap{Data: map[string]string{"two": "2", "one": "", "three": "3"}}, "f5h7t85m9b", ""}, {"three keys", &v1.ConfigMap{Data: map[string]string{"two": "2", "one": "", "three": "3"}}, "f5h7t85m9b", ""},
} }
for _, c := range cases { for _, c := range cases {
@ -53,16 +53,16 @@ func TestConfigMapHash(t *testing.T) {
func TestSecretHash(t *testing.T) { func TestSecretHash(t *testing.T) {
cases := []struct { cases := []struct {
desc string desc string
secret *api.Secret secret *v1.Secret
hash string hash string
err string err string
}{ }{
// empty map // empty map
{"empty data", &api.Secret{Type: "my-type", Data: map[string][]byte{}}, "t75bgf6ctb", ""}, {"empty data", &v1.Secret{Type: "my-type", Data: map[string][]byte{}}, "t75bgf6ctb", ""},
// one key // one key
{"one key", &api.Secret{Type: "my-type", Data: map[string][]byte{"one": []byte("")}}, "74bd68bm66", ""}, {"one key", &v1.Secret{Type: "my-type", Data: map[string][]byte{"one": []byte("")}}, "74bd68bm66", ""},
// three keys (tests sorting order) // three keys (tests sorting order)
{"three keys", &api.Secret{Type: "my-type", Data: map[string][]byte{"two": []byte("2"), "one": []byte(""), "three": []byte("3")}}, "dgcb6h9tmk", ""}, {"three keys", &v1.Secret{Type: "my-type", Data: map[string][]byte{"two": []byte("2"), "one": []byte(""), "three": []byte("3")}}, "dgcb6h9tmk", ""},
} }
for _, c := range cases { for _, c := range cases {
@ -79,16 +79,16 @@ func TestSecretHash(t *testing.T) {
func TestEncodeConfigMap(t *testing.T) { func TestEncodeConfigMap(t *testing.T) {
cases := []struct { cases := []struct {
desc string desc string
cm *api.ConfigMap cm *v1.ConfigMap
expect string expect string
err string err string
}{ }{
// empty map // empty map
{"empty data", &api.ConfigMap{Data: map[string]string{}}, `{"data":{},"kind":"ConfigMap","name":""}`, ""}, {"empty data", &v1.ConfigMap{Data: map[string]string{}}, `{"data":{},"kind":"ConfigMap","name":""}`, ""},
// one key // one key
{"one key", &api.ConfigMap{Data: map[string]string{"one": ""}}, `{"data":{"one":""},"kind":"ConfigMap","name":""}`, ""}, {"one key", &v1.ConfigMap{Data: map[string]string{"one": ""}}, `{"data":{"one":""},"kind":"ConfigMap","name":""}`, ""},
// three keys (tests sorting order) // three keys (tests sorting order)
{"three keys", &api.ConfigMap{Data: map[string]string{"two": "2", "one": "", "three": "3"}}, `{"data":{"one":"","three":"3","two":"2"},"kind":"ConfigMap","name":""}`, ""}, {"three keys", &v1.ConfigMap{Data: map[string]string{"two": "2", "one": "", "three": "3"}}, `{"data":{"one":"","three":"3","two":"2"},"kind":"ConfigMap","name":""}`, ""},
} }
for _, c := range cases { for _, c := range cases {
s, err := encodeConfigMap(c.cm) s, err := encodeConfigMap(c.cm)
@ -104,16 +104,16 @@ func TestEncodeConfigMap(t *testing.T) {
func TestEncodeSecret(t *testing.T) { func TestEncodeSecret(t *testing.T) {
cases := []struct { cases := []struct {
desc string desc string
secret *api.Secret secret *v1.Secret
expect string expect string
err string err string
}{ }{
// empty map // empty map
{"empty data", &api.Secret{Type: "my-type", Data: map[string][]byte{}}, `{"data":{},"kind":"Secret","name":"","type":"my-type"}`, ""}, {"empty data", &v1.Secret{Type: "my-type", Data: map[string][]byte{}}, `{"data":{},"kind":"Secret","name":"","type":"my-type"}`, ""},
// one key // one key
{"one key", &api.Secret{Type: "my-type", Data: map[string][]byte{"one": []byte("")}}, `{"data":{"one":""},"kind":"Secret","name":"","type":"my-type"}`, ""}, {"one key", &v1.Secret{Type: "my-type", Data: map[string][]byte{"one": []byte("")}}, `{"data":{"one":""},"kind":"Secret","name":"","type":"my-type"}`, ""},
// three keys (tests sorting order) - note json.Marshal base64 encodes the values because they come in as []byte // three keys (tests sorting order) - note json.Marshal base64 encodes the values because they come in as []byte
{"three keys", &api.Secret{Type: "my-type", Data: map[string][]byte{"two": []byte("2"), "one": []byte(""), "three": []byte("3")}}, `{"data":{"one":"","three":"Mw==","two":"Mg=="},"kind":"Secret","name":"","type":"my-type"}`, ""}, {"three keys", &v1.Secret{Type: "my-type", Data: map[string][]byte{"two": []byte("2"), "one": []byte(""), "three": []byte("3")}}, `{"data":{"one":"","three":"Mw==","two":"Mg=="},"kind":"Secret","name":"","type":"my-type"}`, ""},
} }
for _, c := range cases { for _, c := range cases {
s, err := encodeSecret(c.secret) s, err := encodeSecret(c.secret)
@ -148,8 +148,8 @@ not their metadata (e.g. the Data of a ConfigMap, but nothing in ObjectMeta).
obj interface{} obj interface{}
expect int expect int
}{ }{
{"ConfigMap", api.ConfigMap{}, 3}, {"ConfigMap", v1.ConfigMap{}, 3},
{"Secret", api.Secret{}, 4}, {"Secret", v1.Secret{}, 5},
} }
for _, c := range cases { for _, c := range cases {
val := reflect.ValueOf(c.obj) val := reflect.ValueOf(c.obj)