mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-25 04:33:26 +00:00
Merge pull request #55647 from smarterclayton/move_category
Automatic merge from submit-queue (batch tested with PRs 55697, 55631, 51905, 55647, 55826). 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>. Move category expander out of kubectl/resource Removes coupling with unstructured. Part of refactoring get.go and simplifying the builder.
This commit is contained in:
commit
cc62445844
@ -138,6 +138,7 @@ pkg/kubeapiserver/authorizer/modes
|
|||||||
pkg/kubeapiserver/options
|
pkg/kubeapiserver/options
|
||||||
pkg/kubeapiserver/server
|
pkg/kubeapiserver/server
|
||||||
pkg/kubectl
|
pkg/kubectl
|
||||||
|
pkg/kubectl/categories
|
||||||
pkg/kubectl/cmd
|
pkg/kubectl/cmd
|
||||||
pkg/kubectl/cmd/auth
|
pkg/kubectl/cmd/auth
|
||||||
pkg/kubectl/cmd/config
|
pkg/kubectl/cmd/config
|
||||||
|
@ -201,6 +201,7 @@ filegroup(
|
|||||||
":package-srcs",
|
":package-srcs",
|
||||||
"//pkg/kubectl/apply:all-srcs",
|
"//pkg/kubectl/apply:all-srcs",
|
||||||
"//pkg/kubectl/apps:all-srcs",
|
"//pkg/kubectl/apps:all-srcs",
|
||||||
|
"//pkg/kubectl/categories:all-srcs",
|
||||||
"//pkg/kubectl/cmd:all-srcs",
|
"//pkg/kubectl/cmd:all-srcs",
|
||||||
"//pkg/kubectl/explain:all-srcs",
|
"//pkg/kubectl/explain:all-srcs",
|
||||||
"//pkg/kubectl/metricsutil:all-srcs",
|
"//pkg/kubectl/metricsutil:all-srcs",
|
||||||
|
42
pkg/kubectl/categories/BUILD
Normal file
42
pkg/kubectl/categories/BUILD
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
load("@io_bazel_rules_go//go:def.bzl", "go_library", "go_test")
|
||||||
|
|
||||||
|
go_library(
|
||||||
|
name = "go_default_library",
|
||||||
|
srcs = ["categories.go"],
|
||||||
|
importpath = "k8s.io/kubernetes/pkg/kubectl/categories",
|
||||||
|
visibility = ["//visibility:public"],
|
||||||
|
deps = [
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/discovery:go_default_library",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
||||||
|
go_test(
|
||||||
|
name = "go_default_test",
|
||||||
|
srcs = ["categories_test.go"],
|
||||||
|
importpath = "k8s.io/kubernetes/pkg/kubectl/categories",
|
||||||
|
library = ":go_default_library",
|
||||||
|
deps = [
|
||||||
|
"//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/apis/meta/v1:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/runtime/schema:go_default_library",
|
||||||
|
"//vendor/k8s.io/apimachinery/pkg/version:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/discovery:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/rest:go_default_library",
|
||||||
|
"//vendor/k8s.io/client-go/rest/fake: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"],
|
||||||
|
)
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package resource
|
package categories
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
@ -14,7 +14,7 @@ See the License for the specific language governing permissions and
|
|||||||
limitations under the License.
|
limitations under the License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package resource
|
package categories
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"reflect"
|
"reflect"
|
@ -62,6 +62,7 @@ go_test(
|
|||||||
deps = [
|
deps = [
|
||||||
"//pkg/api/testapi:go_default_library",
|
"//pkg/api/testapi:go_default_library",
|
||||||
"//pkg/apis/rbac:go_default_library",
|
"//pkg/apis/rbac:go_default_library",
|
||||||
|
"//pkg/kubectl/categories:go_default_library",
|
||||||
"//pkg/kubectl/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/resource:go_default_library",
|
"//pkg/kubectl/resource:go_default_library",
|
||||||
|
@ -39,6 +39,7 @@ import (
|
|||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/rest/fake"
|
"k8s.io/client-go/rest/fake"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/categories"
|
||||||
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||||
@ -436,7 +437,7 @@ func TestSetEnvRemote(t *testing.T) {
|
|||||||
codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
|
codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
|
||||||
tf.Printer = printers.NewVersionedPrinter(&printers.YAMLPrinter{}, testapi.Default.Converter(), *testapi.Default.GroupVersion())
|
tf.Printer = printers.NewVersionedPrinter(&printers.YAMLPrinter{}, testapi.Default.Converter(), *testapi.Default.GroupVersion())
|
||||||
tf.Namespace = "test"
|
tf.Namespace = "test"
|
||||||
tf.CategoryExpander = resource.LegacyCategoryExpander
|
tf.CategoryExpander = categories.LegacyCategoryExpander
|
||||||
tf.Client = &fake.RESTClient{
|
tf.Client = &fake.RESTClient{
|
||||||
GroupVersion: groupVersion,
|
GroupVersion: groupVersion,
|
||||||
NegotiatedSerializer: ns,
|
NegotiatedSerializer: ns,
|
||||||
|
@ -38,6 +38,7 @@ import (
|
|||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/rest/fake"
|
"k8s.io/client-go/rest/fake"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/categories"
|
||||||
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||||
@ -503,7 +504,7 @@ func TestSetImageRemote(t *testing.T) {
|
|||||||
codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
|
codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
|
||||||
tf.Printer = printers.NewVersionedPrinter(&printers.YAMLPrinter{}, testapi.Default.Converter(), *testapi.Default.GroupVersion())
|
tf.Printer = printers.NewVersionedPrinter(&printers.YAMLPrinter{}, testapi.Default.Converter(), *testapi.Default.GroupVersion())
|
||||||
tf.Namespace = "test"
|
tf.Namespace = "test"
|
||||||
tf.CategoryExpander = resource.LegacyCategoryExpander
|
tf.CategoryExpander = categories.LegacyCategoryExpander
|
||||||
tf.Client = &fake.RESTClient{
|
tf.Client = &fake.RESTClient{
|
||||||
GroupVersion: groupVersion,
|
GroupVersion: groupVersion,
|
||||||
NegotiatedSerializer: ns,
|
NegotiatedSerializer: ns,
|
||||||
|
@ -38,6 +38,7 @@ import (
|
|||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/rest/fake"
|
"k8s.io/client-go/rest/fake"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/categories"
|
||||||
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||||
@ -449,7 +450,7 @@ func TestSetResourcesRemote(t *testing.T) {
|
|||||||
mapper, typer := f.Object()
|
mapper, typer := f.Object()
|
||||||
tf.Printer = &printers.NamePrinter{Decoders: []runtime.Decoder{testapi.Default.Codec()}, Typer: typer, Mapper: mapper}
|
tf.Printer = &printers.NamePrinter{Decoders: []runtime.Decoder{testapi.Default.Codec()}, Typer: typer, Mapper: mapper}
|
||||||
tf.Namespace = "test"
|
tf.Namespace = "test"
|
||||||
tf.CategoryExpander = resource.LegacyCategoryExpander
|
tf.CategoryExpander = categories.LegacyCategoryExpander
|
||||||
tf.Client = &fake.RESTClient{
|
tf.Client = &fake.RESTClient{
|
||||||
GroupVersion: groupVersion,
|
GroupVersion: groupVersion,
|
||||||
NegotiatedSerializer: ns,
|
NegotiatedSerializer: ns,
|
||||||
|
@ -38,6 +38,7 @@ import (
|
|||||||
restclient "k8s.io/client-go/rest"
|
restclient "k8s.io/client-go/rest"
|
||||||
"k8s.io/client-go/rest/fake"
|
"k8s.io/client-go/rest/fake"
|
||||||
"k8s.io/kubernetes/pkg/api/testapi"
|
"k8s.io/kubernetes/pkg/api/testapi"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/categories"
|
||||||
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
cmdtesting "k8s.io/kubernetes/pkg/kubectl/cmd/testing"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||||
@ -316,7 +317,7 @@ func TestSetServiceAccountRemote(t *testing.T) {
|
|||||||
codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
|
codec := scheme.Codecs.CodecForVersions(scheme.Codecs.LegacyCodec(groupVersion), scheme.Codecs.UniversalDecoder(groupVersion), groupVersion, groupVersion)
|
||||||
tf.Printer = printers.NewVersionedPrinter(&printers.YAMLPrinter{}, testapi.Default.Converter(), *testapi.Default.GroupVersion())
|
tf.Printer = printers.NewVersionedPrinter(&printers.YAMLPrinter{}, testapi.Default.Converter(), *testapi.Default.GroupVersion())
|
||||||
tf.Namespace = "test"
|
tf.Namespace = "test"
|
||||||
tf.CategoryExpander = resource.LegacyCategoryExpander
|
tf.CategoryExpander = categories.LegacyCategoryExpander
|
||||||
tf.Client = &fake.RESTClient{
|
tf.Client = &fake.RESTClient{
|
||||||
GroupVersion: groupVersion,
|
GroupVersion: groupVersion,
|
||||||
NegotiatedSerializer: ns,
|
NegotiatedSerializer: ns,
|
||||||
|
@ -19,6 +19,7 @@ go_library(
|
|||||||
"//pkg/apis/core:go_default_library",
|
"//pkg/apis/core:go_default_library",
|
||||||
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
"//pkg/client/clientset_generated/internalclientset:go_default_library",
|
||||||
"//pkg/kubectl:go_default_library",
|
"//pkg/kubectl:go_default_library",
|
||||||
|
"//pkg/kubectl/categories: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",
|
||||||
|
@ -42,6 +42,7 @@ import (
|
|||||||
api "k8s.io/kubernetes/pkg/apis/core"
|
api "k8s.io/kubernetes/pkg/apis/core"
|
||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/categories"
|
||||||
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/plugins"
|
"k8s.io/kubernetes/pkg/kubectl/plugins"
|
||||||
@ -241,7 +242,7 @@ type TestFactory struct {
|
|||||||
Err error
|
Err error
|
||||||
Command string
|
Command string
|
||||||
TmpDir string
|
TmpDir string
|
||||||
CategoryExpander resource.CategoryExpander
|
CategoryExpander categories.CategoryExpander
|
||||||
|
|
||||||
ClientForMappingFunc func(mapping *meta.RESTMapping) (resource.RESTClient, error)
|
ClientForMappingFunc func(mapping *meta.RESTMapping) (resource.RESTClient, error)
|
||||||
UnstructuredClientForMappingFunc func(mapping *meta.RESTMapping) (resource.RESTClient, error)
|
UnstructuredClientForMappingFunc func(mapping *meta.RESTMapping) (resource.RESTClient, error)
|
||||||
@ -293,8 +294,8 @@ func (f *FakeFactory) UnstructuredObject() (meta.RESTMapper, runtime.ObjectTyper
|
|||||||
return expander, typer, err
|
return expander, typer, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FakeFactory) CategoryExpander() resource.CategoryExpander {
|
func (f *FakeFactory) CategoryExpander() categories.CategoryExpander {
|
||||||
return resource.LegacyCategoryExpander
|
return categories.LegacyCategoryExpander
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *FakeFactory) Decoder(bool) runtime.Decoder {
|
func (f *FakeFactory) Decoder(bool) runtime.Decoder {
|
||||||
@ -664,7 +665,7 @@ func (f *fakeAPIFactory) DiscoveryClient() (discovery.CachedDiscoveryInterface,
|
|||||||
return cmdutil.NewCachedDiscoveryClient(discoveryClient, cacheDir, time.Duration(10*time.Minute)), nil
|
return cmdutil.NewCachedDiscoveryClient(discoveryClient, cacheDir, time.Duration(10*time.Minute)), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *fakeAPIFactory) CategoryExpander() resource.CategoryExpander {
|
func (f *fakeAPIFactory) CategoryExpander() categories.CategoryExpander {
|
||||||
if f.tf.CategoryExpander != nil {
|
if f.tf.CategoryExpander != nil {
|
||||||
return f.tf.CategoryExpander
|
return f.tf.CategoryExpander
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@ go_library(
|
|||||||
"//pkg/client/unversioned:go_default_library",
|
"//pkg/client/unversioned:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/kubectl:go_default_library",
|
"//pkg/kubectl:go_default_library",
|
||||||
|
"//pkg/kubectl/categories:go_default_library",
|
||||||
"//pkg/kubectl/cmd/templates:go_default_library",
|
"//pkg/kubectl/cmd/templates:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util/openapi:go_default_library",
|
"//pkg/kubectl/cmd/util/openapi:go_default_library",
|
||||||
"//pkg/kubectl/cmd/util/openapi/validation:go_default_library",
|
"//pkg/kubectl/cmd/util/openapi/validation:go_default_library",
|
||||||
@ -110,6 +111,7 @@ go_test(
|
|||||||
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
|
"//pkg/client/clientset_generated/internalclientset/fake:go_default_library",
|
||||||
"//pkg/controller:go_default_library",
|
"//pkg/controller:go_default_library",
|
||||||
"//pkg/kubectl:go_default_library",
|
"//pkg/kubectl:go_default_library",
|
||||||
|
"//pkg/kubectl/categories:go_default_library",
|
||||||
"//pkg/kubectl/resource:go_default_library",
|
"//pkg/kubectl/resource:go_default_library",
|
||||||
"//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
|
"//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
|
||||||
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
||||||
|
@ -42,6 +42,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset"
|
||||||
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
|
coreclient "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/categories"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/plugins"
|
"k8s.io/kubernetes/pkg/kubectl/plugins"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||||
@ -192,7 +193,7 @@ type ObjectMappingFactory interface {
|
|||||||
// runtime.Unstructured. This performs API calls to discover types.
|
// runtime.Unstructured. This performs API calls to discover types.
|
||||||
UnstructuredObject() (meta.RESTMapper, runtime.ObjectTyper, error)
|
UnstructuredObject() (meta.RESTMapper, runtime.ObjectTyper, error)
|
||||||
// Returns interface for expanding categories like `all`.
|
// Returns interface for expanding categories like `all`.
|
||||||
CategoryExpander() resource.CategoryExpander
|
CategoryExpander() categories.CategoryExpander
|
||||||
// Returns a RESTClient for working with the specified RESTMapping or an error. This is intended
|
// Returns a RESTClient for working with the specified RESTMapping or an error. This is intended
|
||||||
// for working with arbitrary resources and is not guaranteed to point to a Kubernetes APIServer.
|
// for working with arbitrary resources and is not guaranteed to point to a Kubernetes APIServer.
|
||||||
ClientForMapping(mapping *meta.RESTMapping) (resource.RESTClient, error)
|
ClientForMapping(mapping *meta.RESTMapping) (resource.RESTClient, error)
|
||||||
|
@ -43,6 +43,7 @@ import (
|
|||||||
client "k8s.io/kubernetes/pkg/client/unversioned"
|
client "k8s.io/kubernetes/pkg/client/unversioned"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/categories"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
|
"k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi"
|
||||||
openapivalidation "k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi/validation"
|
openapivalidation "k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi/validation"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||||
@ -113,17 +114,17 @@ func (f *ring1Factory) UnstructuredObject() (meta.RESTMapper, runtime.ObjectType
|
|||||||
return expander, typer, err
|
return expander, typer, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f *ring1Factory) CategoryExpander() resource.CategoryExpander {
|
func (f *ring1Factory) CategoryExpander() categories.CategoryExpander {
|
||||||
legacyExpander := resource.LegacyCategoryExpander
|
legacyExpander := categories.LegacyCategoryExpander
|
||||||
|
|
||||||
discoveryClient, err := f.clientAccessFactory.DiscoveryClient()
|
discoveryClient, err := f.clientAccessFactory.DiscoveryClient()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
// fallback is the legacy expander wrapped with discovery based filtering
|
// fallback is the legacy expander wrapped with discovery based filtering
|
||||||
fallbackExpander, err := resource.NewDiscoveryFilteredExpander(legacyExpander, discoveryClient)
|
fallbackExpander, err := categories.NewDiscoveryFilteredExpander(legacyExpander, discoveryClient)
|
||||||
CheckErr(err)
|
CheckErr(err)
|
||||||
|
|
||||||
// by default use the expander that discovers based on "categories" field from the API
|
// by default use the expander that discovers based on "categories" field from the API
|
||||||
discoveryCategoryExpander, err := resource.NewDiscoveryCategoryExpander(fallbackExpander, discoveryClient)
|
discoveryCategoryExpander, err := categories.NewDiscoveryCategoryExpander(fallbackExpander, discoveryClient)
|
||||||
CheckErr(err)
|
CheckErr(err)
|
||||||
|
|
||||||
return discoveryCategoryExpander
|
return discoveryCategoryExpander
|
||||||
|
@ -44,6 +44,7 @@ import (
|
|||||||
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
|
"k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/fake"
|
||||||
"k8s.io/kubernetes/pkg/controller"
|
"k8s.io/kubernetes/pkg/controller"
|
||||||
"k8s.io/kubernetes/pkg/kubectl"
|
"k8s.io/kubernetes/pkg/kubectl"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/categories"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/resource"
|
"k8s.io/kubernetes/pkg/kubectl/resource"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -542,7 +543,7 @@ func TestDiscoveryReplaceAliases(t *testing.T) {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("Unable to create shortcut expander, err = %s", err.Error())
|
t.Fatalf("Unable to create shortcut expander, err = %s", err.Error())
|
||||||
}
|
}
|
||||||
b := resource.NewBuilder(mapper, resource.LegacyCategoryExpander, legacyscheme.Scheme, fakeClient(), testapi.Default.Codec())
|
b := resource.NewBuilder(mapper, categories.LegacyCategoryExpander, legacyscheme.Scheme, fakeClient(), testapi.Default.Codec())
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
replaced := b.ReplaceAliases(test.arg)
|
replaced := b.ReplaceAliases(test.arg)
|
||||||
|
@ -8,7 +8,6 @@ go_library(
|
|||||||
name = "go_default_library",
|
name = "go_default_library",
|
||||||
srcs = [
|
srcs = [
|
||||||
"builder.go",
|
"builder.go",
|
||||||
"categories.go",
|
|
||||||
"doc.go",
|
"doc.go",
|
||||||
"helper.go",
|
"helper.go",
|
||||||
"interfaces.go",
|
"interfaces.go",
|
||||||
@ -22,6 +21,7 @@ go_library(
|
|||||||
"//build/visible_to:pkg_kubectl_resource_CONSUMERS",
|
"//build/visible_to:pkg_kubectl_resource_CONSUMERS",
|
||||||
],
|
],
|
||||||
deps = [
|
deps = [
|
||||||
|
"//pkg/kubectl/categories:go_default_library",
|
||||||
"//pkg/kubectl/validation:go_default_library",
|
"//pkg/kubectl/validation:go_default_library",
|
||||||
"//vendor/golang.org/x/text/encoding/unicode:go_default_library",
|
"//vendor/golang.org/x/text/encoding/unicode:go_default_library",
|
||||||
"//vendor/golang.org/x/text/transform:go_default_library",
|
"//vendor/golang.org/x/text/transform:go_default_library",
|
||||||
@ -38,7 +38,6 @@ go_library(
|
|||||||
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/util/sets:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/util/yaml:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
|
||||||
"//vendor/k8s.io/client-go/discovery:go_default_library",
|
|
||||||
"//vendor/k8s.io/client-go/rest:go_default_library",
|
"//vendor/k8s.io/client-go/rest:go_default_library",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
@ -47,7 +46,6 @@ go_test(
|
|||||||
name = "go_default_test",
|
name = "go_default_test",
|
||||||
srcs = [
|
srcs = [
|
||||||
"builder_test.go",
|
"builder_test.go",
|
||||||
"categories_test.go",
|
|
||||||
"helper_test.go",
|
"helper_test.go",
|
||||||
"visitor_test.go",
|
"visitor_test.go",
|
||||||
],
|
],
|
||||||
@ -58,9 +56,9 @@ go_test(
|
|||||||
importpath = "k8s.io/kubernetes/pkg/kubectl/resource",
|
importpath = "k8s.io/kubernetes/pkg/kubectl/resource",
|
||||||
library = ":go_default_library",
|
library = ":go_default_library",
|
||||||
deps = [
|
deps = [
|
||||||
|
"//pkg/kubectl/categories:go_default_library",
|
||||||
"//pkg/kubectl/scheme:go_default_library",
|
"//pkg/kubectl/scheme:go_default_library",
|
||||||
"//vendor/github.com/ghodss/yaml:go_default_library",
|
"//vendor/github.com/ghodss/yaml:go_default_library",
|
||||||
"//vendor/github.com/googleapis/gnostic/OpenAPIv2:go_default_library",
|
|
||||||
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
"//vendor/github.com/stretchr/testify/assert:go_default_library",
|
||||||
"//vendor/k8s.io/api/core/v1:go_default_library",
|
"//vendor/k8s.io/api/core/v1:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/api/equality:go_default_library",
|
||||||
@ -73,11 +71,8 @@ go_test(
|
|||||||
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/runtime/serializer/streaming:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/util/errors:go_default_library",
|
||||||
"//vendor/k8s.io/apimachinery/pkg/version:go_default_library",
|
|
||||||
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
|
"//vendor/k8s.io/apimachinery/pkg/watch:go_default_library",
|
||||||
"//vendor/k8s.io/client-go/discovery:go_default_library",
|
|
||||||
"//vendor/k8s.io/client-go/kubernetes/scheme:go_default_library",
|
"//vendor/k8s.io/client-go/kubernetes/scheme: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",
|
||||||
"//vendor/k8s.io/client-go/rest/watch:go_default_library",
|
"//vendor/k8s.io/client-go/rest/watch:go_default_library",
|
||||||
"//vendor/k8s.io/client-go/util/testing:go_default_library",
|
"//vendor/k8s.io/client-go/util/testing:go_default_library",
|
||||||
|
@ -31,6 +31,7 @@ import (
|
|||||||
"k8s.io/apimachinery/pkg/runtime/schema"
|
"k8s.io/apimachinery/pkg/runtime/schema"
|
||||||
utilerrors "k8s.io/apimachinery/pkg/util/errors"
|
utilerrors "k8s.io/apimachinery/pkg/util/errors"
|
||||||
"k8s.io/apimachinery/pkg/util/sets"
|
"k8s.io/apimachinery/pkg/util/sets"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/categories"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/validation"
|
"k8s.io/kubernetes/pkg/kubectl/validation"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -44,7 +45,7 @@ const defaultHttpGetAttempts int = 3
|
|||||||
// over using the Visitor interface.
|
// over using the Visitor interface.
|
||||||
type Builder struct {
|
type Builder struct {
|
||||||
mapper *Mapper
|
mapper *Mapper
|
||||||
categoryExpander CategoryExpander
|
categoryExpander categories.CategoryExpander
|
||||||
|
|
||||||
errs []error
|
errs []error
|
||||||
|
|
||||||
@ -115,7 +116,7 @@ type resourceTuple struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// NewBuilder creates a builder that operates on generic objects.
|
// NewBuilder creates a builder that operates on generic objects.
|
||||||
func NewBuilder(mapper meta.RESTMapper, categoryExpander CategoryExpander, typer runtime.ObjectTyper, clientMapper ClientMapper, decoder runtime.Decoder) *Builder {
|
func NewBuilder(mapper meta.RESTMapper, categoryExpander categories.CategoryExpander, typer runtime.ObjectTyper, clientMapper ClientMapper, decoder runtime.Decoder) *Builder {
|
||||||
return &Builder{
|
return &Builder{
|
||||||
mapper: &Mapper{typer, mapper, clientMapper, decoder},
|
mapper: &Mapper{typer, mapper, clientMapper, decoder},
|
||||||
categoryExpander: categoryExpander,
|
categoryExpander: categoryExpander,
|
||||||
|
@ -45,6 +45,7 @@ import (
|
|||||||
"k8s.io/client-go/rest/fake"
|
"k8s.io/client-go/rest/fake"
|
||||||
restclientwatch "k8s.io/client-go/rest/watch"
|
restclientwatch "k8s.io/client-go/rest/watch"
|
||||||
utiltesting "k8s.io/client-go/util/testing"
|
utiltesting "k8s.io/client-go/util/testing"
|
||||||
|
"k8s.io/kubernetes/pkg/kubectl/categories"
|
||||||
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
"k8s.io/kubernetes/pkg/kubectl/scheme"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -262,7 +263,7 @@ var aRC string = `
|
|||||||
`
|
`
|
||||||
|
|
||||||
func TestPathBuilderAndVersionedObjectNotDefaulted(t *testing.T) {
|
func TestPathBuilderAndVersionedObjectNotDefaulted(t *testing.T) {
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{"../../../test/fixtures/pkg/kubectl/builder/kitten-rc.yaml"}})
|
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{"../../../test/fixtures/pkg/kubectl/builder/kitten-rc.yaml"}})
|
||||||
|
|
||||||
test := &testVisitor{}
|
test := &testVisitor{}
|
||||||
@ -301,7 +302,7 @@ func TestNodeBuilder(t *testing.T) {
|
|||||||
w.Write([]byte(runtime.EncodeOrDie(corev1Codec, node)))
|
w.Write([]byte(runtime.EncodeOrDie(corev1Codec, node)))
|
||||||
}()
|
}()
|
||||||
|
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
NamespaceParam("test").Stream(r, "STDIN")
|
NamespaceParam("test").Stream(r, "STDIN")
|
||||||
|
|
||||||
test := &testVisitor{}
|
test := &testVisitor{}
|
||||||
@ -365,7 +366,7 @@ func TestPathBuilderWithMultiple(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
FilenameParam(false, &FilenameOptions{Recursive: test.recursive, Filenames: []string{test.directory}}).
|
FilenameParam(false, &FilenameOptions{Recursive: test.recursive, Filenames: []string{test.directory}}).
|
||||||
NamespaceParam("test").DefaultNamespace()
|
NamespaceParam("test").DefaultNamespace()
|
||||||
|
|
||||||
@ -424,7 +425,7 @@ func TestPathBuilderWithMultipleInvalid(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
FilenameParam(false, &FilenameOptions{Recursive: test.recursive, Filenames: []string{test.directory}}).
|
FilenameParam(false, &FilenameOptions{Recursive: test.recursive, Filenames: []string{test.directory}}).
|
||||||
NamespaceParam("test").DefaultNamespace()
|
NamespaceParam("test").DefaultNamespace()
|
||||||
|
|
||||||
@ -439,7 +440,7 @@ func TestPathBuilderWithMultipleInvalid(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestDirectoryBuilder(t *testing.T) {
|
func TestDirectoryBuilder(t *testing.T) {
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{"../../../examples/guestbook/legacy"}}).
|
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{"../../../examples/guestbook/legacy"}}).
|
||||||
NamespaceParam("test").DefaultNamespace()
|
NamespaceParam("test").DefaultNamespace()
|
||||||
|
|
||||||
@ -470,7 +471,7 @@ func TestNamespaceOverride(t *testing.T) {
|
|||||||
}))
|
}))
|
||||||
defer s.Close()
|
defer s.Close()
|
||||||
|
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{s.URL}}).
|
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{s.URL}}).
|
||||||
NamespaceParam("test")
|
NamespaceParam("test")
|
||||||
|
|
||||||
@ -481,7 +482,7 @@ func TestNamespaceOverride(t *testing.T) {
|
|||||||
t.Fatalf("unexpected response: %v %#v", err, test.Infos)
|
t.Fatalf("unexpected response: %v %#v", err, test.Infos)
|
||||||
}
|
}
|
||||||
|
|
||||||
b = NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b = NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
FilenameParam(true, &FilenameOptions{Recursive: false, Filenames: []string{s.URL}}).
|
FilenameParam(true, &FilenameOptions{Recursive: false, Filenames: []string{s.URL}}).
|
||||||
NamespaceParam("test")
|
NamespaceParam("test")
|
||||||
|
|
||||||
@ -501,7 +502,7 @@ func TestURLBuilder(t *testing.T) {
|
|||||||
}))
|
}))
|
||||||
defer s.Close()
|
defer s.Close()
|
||||||
|
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{s.URL}}).
|
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{s.URL}}).
|
||||||
NamespaceParam("foo")
|
NamespaceParam("foo")
|
||||||
|
|
||||||
@ -530,7 +531,7 @@ func TestURLBuilderRequireNamespace(t *testing.T) {
|
|||||||
}))
|
}))
|
||||||
defer s.Close()
|
defer s.Close()
|
||||||
|
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{s.URL}}).
|
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{s.URL}}).
|
||||||
NamespaceParam("test").RequireNamespace()
|
NamespaceParam("test").RequireNamespace()
|
||||||
|
|
||||||
@ -545,7 +546,7 @@ func TestURLBuilderRequireNamespace(t *testing.T) {
|
|||||||
|
|
||||||
func TestResourceByName(t *testing.T) {
|
func TestResourceByName(t *testing.T) {
|
||||||
pods, _ := testData()
|
pods, _ := testData()
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
||||||
"/namespaces/test/pods/foo": runtime.EncodeOrDie(corev1Codec, &pods.Items[0]),
|
"/namespaces/test/pods/foo": runtime.EncodeOrDie(corev1Codec, &pods.Items[0]),
|
||||||
}), corev1Codec).
|
}), corev1Codec).
|
||||||
NamespaceParam("test")
|
NamespaceParam("test")
|
||||||
@ -578,7 +579,7 @@ func TestResourceByName(t *testing.T) {
|
|||||||
|
|
||||||
func TestMultipleResourceByTheSameName(t *testing.T) {
|
func TestMultipleResourceByTheSameName(t *testing.T) {
|
||||||
pods, svcs := testData()
|
pods, svcs := testData()
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
||||||
"/namespaces/test/pods/foo": runtime.EncodeOrDie(corev1Codec, &pods.Items[0]),
|
"/namespaces/test/pods/foo": runtime.EncodeOrDie(corev1Codec, &pods.Items[0]),
|
||||||
"/namespaces/test/pods/baz": runtime.EncodeOrDie(corev1Codec, &pods.Items[1]),
|
"/namespaces/test/pods/baz": runtime.EncodeOrDie(corev1Codec, &pods.Items[1]),
|
||||||
"/namespaces/test/services/foo": runtime.EncodeOrDie(corev1Codec, &svcs.Items[0]),
|
"/namespaces/test/services/foo": runtime.EncodeOrDie(corev1Codec, &svcs.Items[0]),
|
||||||
@ -610,7 +611,7 @@ func TestMultipleResourceByTheSameName(t *testing.T) {
|
|||||||
|
|
||||||
func TestResourceNames(t *testing.T) {
|
func TestResourceNames(t *testing.T) {
|
||||||
pods, svc := testData()
|
pods, svc := testData()
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
||||||
"/namespaces/test/pods/foo": runtime.EncodeOrDie(corev1Codec, &pods.Items[0]),
|
"/namespaces/test/pods/foo": runtime.EncodeOrDie(corev1Codec, &pods.Items[0]),
|
||||||
"/namespaces/test/services/baz": runtime.EncodeOrDie(corev1Codec, &svc.Items[0]),
|
"/namespaces/test/services/baz": runtime.EncodeOrDie(corev1Codec, &svc.Items[0]),
|
||||||
}), corev1Codec).
|
}), corev1Codec).
|
||||||
@ -638,7 +639,7 @@ func TestResourceNames(t *testing.T) {
|
|||||||
|
|
||||||
func TestResourceNamesWithoutResource(t *testing.T) {
|
func TestResourceNamesWithoutResource(t *testing.T) {
|
||||||
pods, svc := testData()
|
pods, svc := testData()
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
||||||
"/namespaces/test/pods/foo": runtime.EncodeOrDie(corev1Codec, &pods.Items[0]),
|
"/namespaces/test/pods/foo": runtime.EncodeOrDie(corev1Codec, &pods.Items[0]),
|
||||||
"/namespaces/test/services/baz": runtime.EncodeOrDie(corev1Codec, &svc.Items[0]),
|
"/namespaces/test/services/baz": runtime.EncodeOrDie(corev1Codec, &svc.Items[0]),
|
||||||
}), corev1Codec).
|
}), corev1Codec).
|
||||||
@ -659,7 +660,7 @@ func TestResourceNamesWithoutResource(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestResourceByNameWithoutRequireObject(t *testing.T) {
|
func TestResourceByNameWithoutRequireObject(t *testing.T) {
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{}), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{}), corev1Codec).
|
||||||
NamespaceParam("test")
|
NamespaceParam("test")
|
||||||
|
|
||||||
test := &testVisitor{}
|
test := &testVisitor{}
|
||||||
@ -693,7 +694,7 @@ func TestResourceByNameWithoutRequireObject(t *testing.T) {
|
|||||||
|
|
||||||
func TestResourceByNameAndEmptySelector(t *testing.T) {
|
func TestResourceByNameAndEmptySelector(t *testing.T) {
|
||||||
pods, _ := testData()
|
pods, _ := testData()
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
||||||
"/namespaces/test/pods/foo": runtime.EncodeOrDie(corev1Codec, &pods.Items[0]),
|
"/namespaces/test/pods/foo": runtime.EncodeOrDie(corev1Codec, &pods.Items[0]),
|
||||||
}), corev1Codec).
|
}), corev1Codec).
|
||||||
NamespaceParam("test").
|
NamespaceParam("test").
|
||||||
@ -721,7 +722,7 @@ func TestResourceByNameAndEmptySelector(t *testing.T) {
|
|||||||
func TestLabelSelector(t *testing.T) {
|
func TestLabelSelector(t *testing.T) {
|
||||||
pods, svc := testData()
|
pods, svc := testData()
|
||||||
labelKey := metav1.LabelSelectorQueryParam(corev1GV.String())
|
labelKey := metav1.LabelSelectorQueryParam(corev1GV.String())
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
||||||
"/namespaces/test/pods?" + labelKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, pods),
|
"/namespaces/test/pods?" + labelKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, pods),
|
||||||
"/namespaces/test/services?" + labelKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, svc),
|
"/namespaces/test/services?" + labelKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, svc),
|
||||||
}), corev1Codec).
|
}), corev1Codec).
|
||||||
@ -752,7 +753,7 @@ func TestLabelSelector(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestLabelSelectorRequiresKnownTypes(t *testing.T) {
|
func TestLabelSelectorRequiresKnownTypes(t *testing.T) {
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
LabelSelectorParam("a=b").
|
LabelSelectorParam("a=b").
|
||||||
NamespaceParam("test").
|
NamespaceParam("test").
|
||||||
ResourceTypes("unknown")
|
ResourceTypes("unknown")
|
||||||
@ -765,7 +766,7 @@ func TestLabelSelectorRequiresKnownTypes(t *testing.T) {
|
|||||||
func TestFieldSelector(t *testing.T) {
|
func TestFieldSelector(t *testing.T) {
|
||||||
pods, svc := testData()
|
pods, svc := testData()
|
||||||
fieldKey := metav1.FieldSelectorQueryParam(corev1GV.String())
|
fieldKey := metav1.FieldSelectorQueryParam(corev1GV.String())
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
||||||
"/namespaces/test/pods?" + fieldKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, pods),
|
"/namespaces/test/pods?" + fieldKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, pods),
|
||||||
"/namespaces/test/services?" + fieldKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, svc),
|
"/namespaces/test/services?" + fieldKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, svc),
|
||||||
}), corev1Codec).
|
}), corev1Codec).
|
||||||
@ -796,7 +797,7 @@ func TestFieldSelector(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestFieldSelectorRequiresKnownTypes(t *testing.T) {
|
func TestFieldSelectorRequiresKnownTypes(t *testing.T) {
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
FieldSelectorParam("a=b").
|
FieldSelectorParam("a=b").
|
||||||
NamespaceParam("test").
|
NamespaceParam("test").
|
||||||
ResourceTypes("unknown")
|
ResourceTypes("unknown")
|
||||||
@ -807,7 +808,7 @@ func TestFieldSelectorRequiresKnownTypes(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestSingleResourceType(t *testing.T) {
|
func TestSingleResourceType(t *testing.T) {
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
LabelSelectorParam("a=b").
|
LabelSelectorParam("a=b").
|
||||||
SingleResourceType().
|
SingleResourceType().
|
||||||
ResourceTypeOrNameArgs(true, "pods,services")
|
ResourceTypeOrNameArgs(true, "pods,services")
|
||||||
@ -877,7 +878,7 @@ func TestResourceTuple(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClientWith(k, t, expectedRequests), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClientWith(k, t, expectedRequests), corev1Codec).
|
||||||
NamespaceParam("test").DefaultNamespace().
|
NamespaceParam("test").DefaultNamespace().
|
||||||
ResourceTypeOrNameArgs(true, testCase.args...).RequireObject(requireObject)
|
ResourceTypeOrNameArgs(true, testCase.args...).RequireObject(requireObject)
|
||||||
|
|
||||||
@ -908,7 +909,7 @@ func TestResourceTuple(t *testing.T) {
|
|||||||
|
|
||||||
func TestStream(t *testing.T) {
|
func TestStream(t *testing.T) {
|
||||||
r, pods, rc := streamTestData()
|
r, pods, rc := streamTestData()
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
NamespaceParam("test").Stream(r, "STDIN").Flatten()
|
NamespaceParam("test").Stream(r, "STDIN").Flatten()
|
||||||
|
|
||||||
test := &testVisitor{}
|
test := &testVisitor{}
|
||||||
@ -925,7 +926,7 @@ func TestStream(t *testing.T) {
|
|||||||
|
|
||||||
func TestYAMLStream(t *testing.T) {
|
func TestYAMLStream(t *testing.T) {
|
||||||
r, pods, rc := streamYAMLTestData()
|
r, pods, rc := streamYAMLTestData()
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
NamespaceParam("test").Stream(r, "STDIN").Flatten()
|
NamespaceParam("test").Stream(r, "STDIN").Flatten()
|
||||||
|
|
||||||
test := &testVisitor{}
|
test := &testVisitor{}
|
||||||
@ -942,7 +943,7 @@ func TestYAMLStream(t *testing.T) {
|
|||||||
|
|
||||||
func TestMultipleObject(t *testing.T) {
|
func TestMultipleObject(t *testing.T) {
|
||||||
r, pods, svc := streamTestData()
|
r, pods, svc := streamTestData()
|
||||||
obj, err := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
obj, err := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
NamespaceParam("test").Stream(r, "STDIN").Flatten().
|
NamespaceParam("test").Stream(r, "STDIN").Flatten().
|
||||||
Do().Object()
|
Do().Object()
|
||||||
|
|
||||||
@ -964,7 +965,7 @@ func TestMultipleObject(t *testing.T) {
|
|||||||
|
|
||||||
func TestContinueOnErrorVisitor(t *testing.T) {
|
func TestContinueOnErrorVisitor(t *testing.T) {
|
||||||
r, _, _ := streamTestData()
|
r, _, _ := streamTestData()
|
||||||
req := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
req := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
ContinueOnError().
|
ContinueOnError().
|
||||||
NamespaceParam("test").Stream(r, "STDIN").Flatten().
|
NamespaceParam("test").Stream(r, "STDIN").Flatten().
|
||||||
Do()
|
Do()
|
||||||
@ -993,7 +994,7 @@ func TestContinueOnErrorVisitor(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestSingleItemImpliedObject(t *testing.T) {
|
func TestSingleItemImpliedObject(t *testing.T) {
|
||||||
obj, err := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
obj, err := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
NamespaceParam("test").DefaultNamespace().
|
NamespaceParam("test").DefaultNamespace().
|
||||||
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{"../../../examples/guestbook/legacy/redis-master-controller.yaml"}}).
|
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{"../../../examples/guestbook/legacy/redis-master-controller.yaml"}}).
|
||||||
Flatten().
|
Flatten().
|
||||||
@ -1013,7 +1014,7 @@ func TestSingleItemImpliedObject(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestSingleItemImpliedObjectNoExtension(t *testing.T) {
|
func TestSingleItemImpliedObjectNoExtension(t *testing.T) {
|
||||||
obj, err := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
obj, err := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
NamespaceParam("test").DefaultNamespace().
|
NamespaceParam("test").DefaultNamespace().
|
||||||
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{"../../../examples/pod"}}).
|
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{"../../../examples/pod"}}).
|
||||||
Flatten().
|
Flatten().
|
||||||
@ -1035,7 +1036,7 @@ func TestSingleItemImpliedObjectNoExtension(t *testing.T) {
|
|||||||
func TestSingleItemImpliedRootScopedObject(t *testing.T) {
|
func TestSingleItemImpliedRootScopedObject(t *testing.T) {
|
||||||
node := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "test"}, Spec: v1.NodeSpec{ExternalID: "test"}}
|
node := &v1.Node{ObjectMeta: metav1.ObjectMeta{Name: "test"}, Spec: v1.NodeSpec{ExternalID: "test"}}
|
||||||
r := streamTestObject(node)
|
r := streamTestObject(node)
|
||||||
infos, err := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
infos, err := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
NamespaceParam("test").DefaultNamespace().
|
NamespaceParam("test").DefaultNamespace().
|
||||||
Stream(r, "STDIN").
|
Stream(r, "STDIN").
|
||||||
Flatten().
|
Flatten().
|
||||||
@ -1060,7 +1061,7 @@ func TestSingleItemImpliedRootScopedObject(t *testing.T) {
|
|||||||
func TestListObject(t *testing.T) {
|
func TestListObject(t *testing.T) {
|
||||||
pods, _ := testData()
|
pods, _ := testData()
|
||||||
labelKey := metav1.LabelSelectorQueryParam(corev1GV.String())
|
labelKey := metav1.LabelSelectorQueryParam(corev1GV.String())
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
||||||
"/namespaces/test/pods?" + labelKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, pods),
|
"/namespaces/test/pods?" + labelKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, pods),
|
||||||
}), corev1Codec).
|
}), corev1Codec).
|
||||||
LabelSelectorParam("a=b").
|
LabelSelectorParam("a=b").
|
||||||
@ -1093,7 +1094,7 @@ func TestListObject(t *testing.T) {
|
|||||||
func TestListObjectWithDifferentVersions(t *testing.T) {
|
func TestListObjectWithDifferentVersions(t *testing.T) {
|
||||||
pods, svc := testData()
|
pods, svc := testData()
|
||||||
labelKey := metav1.LabelSelectorQueryParam(corev1GV.String())
|
labelKey := metav1.LabelSelectorQueryParam(corev1GV.String())
|
||||||
obj, err := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
obj, err := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
||||||
"/namespaces/test/pods?" + labelKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, pods),
|
"/namespaces/test/pods?" + labelKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, pods),
|
||||||
"/namespaces/test/services?" + labelKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, svc),
|
"/namespaces/test/services?" + labelKey + "=a%3Db": runtime.EncodeOrDie(corev1Codec, svc),
|
||||||
}), corev1Codec).
|
}), corev1Codec).
|
||||||
@ -1119,7 +1120,7 @@ func TestListObjectWithDifferentVersions(t *testing.T) {
|
|||||||
|
|
||||||
func TestWatch(t *testing.T) {
|
func TestWatch(t *testing.T) {
|
||||||
_, svc := testData()
|
_, svc := testData()
|
||||||
w, err := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
w, err := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
||||||
"/namespaces/test/services?fieldSelector=metadata.name%3Dredis-master&resourceVersion=12&watch=true": watchBody(watch.Event{
|
"/namespaces/test/services?fieldSelector=metadata.name%3Dredis-master&resourceVersion=12&watch=true": watchBody(watch.Event{
|
||||||
Type: watch.Added,
|
Type: watch.Added,
|
||||||
Object: &svc.Items[0],
|
Object: &svc.Items[0],
|
||||||
@ -1151,7 +1152,7 @@ func TestWatch(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestWatchMultipleError(t *testing.T) {
|
func TestWatchMultipleError(t *testing.T) {
|
||||||
_, err := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
_, err := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
NamespaceParam("test").DefaultNamespace().
|
NamespaceParam("test").DefaultNamespace().
|
||||||
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{"../../../examples/guestbook/legacy/redis-master-controller.yaml"}}).Flatten().
|
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{"../../../examples/guestbook/legacy/redis-master-controller.yaml"}}).Flatten().
|
||||||
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{"../../../examples/guestbook/legacy/redis-master-controller.yaml"}}).Flatten().
|
FilenameParam(false, &FilenameOptions{Recursive: false, Filenames: []string{"../../../examples/guestbook/legacy/redis-master-controller.yaml"}}).Flatten().
|
||||||
@ -1174,7 +1175,7 @@ func TestLatest(t *testing.T) {
|
|||||||
ObjectMeta: metav1.ObjectMeta{Name: "baz", Namespace: "test", ResourceVersion: "15"},
|
ObjectMeta: metav1.ObjectMeta{Name: "baz", Namespace: "test", ResourceVersion: "15"},
|
||||||
}
|
}
|
||||||
|
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClientWith("", t, map[string]string{
|
||||||
"/namespaces/test/pods/foo": runtime.EncodeOrDie(corev1Codec, newPod),
|
"/namespaces/test/pods/foo": runtime.EncodeOrDie(corev1Codec, newPod),
|
||||||
"/namespaces/test/pods/bar": runtime.EncodeOrDie(corev1Codec, newPod2),
|
"/namespaces/test/pods/bar": runtime.EncodeOrDie(corev1Codec, newPod2),
|
||||||
"/namespaces/test/services/baz": runtime.EncodeOrDie(corev1Codec, newSvc),
|
"/namespaces/test/services/baz": runtime.EncodeOrDie(corev1Codec, newSvc),
|
||||||
@ -1210,7 +1211,7 @@ func TestReceiveMultipleErrors(t *testing.T) {
|
|||||||
w2.Write([]byte(runtime.EncodeOrDie(corev1Codec, &svc.Items[0])))
|
w2.Write([]byte(runtime.EncodeOrDie(corev1Codec, &svc.Items[0])))
|
||||||
}()
|
}()
|
||||||
|
|
||||||
b := NewBuilder(restmapper, LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
b := NewBuilder(restmapper, categories.LegacyCategoryExpander, scheme.Scheme, fakeClient(), corev1Codec).
|
||||||
Stream(r, "1").Stream(r2, "2").
|
Stream(r, "1").Stream(r2, "2").
|
||||||
ContinueOnError()
|
ContinueOnError()
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user