diff --git a/pkg/kubectl/cmd/util/factory.go b/pkg/kubectl/cmd/util/factory.go index 831e448995b..34493380c3b 100644 --- a/pkg/kubectl/cmd/util/factory.go +++ b/pkg/kubectl/cmd/util/factory.go @@ -29,6 +29,7 @@ import ( "github.com/GoogleCloudPlatform/kubernetes/pkg/api" "github.com/GoogleCloudPlatform/kubernetes/pkg/api/latest" "github.com/GoogleCloudPlatform/kubernetes/pkg/api/meta" + "github.com/GoogleCloudPlatform/kubernetes/pkg/api/registered" "github.com/GoogleCloudPlatform/kubernetes/pkg/api/validation" "github.com/GoogleCloudPlatform/kubernetes/pkg/client" "github.com/GoogleCloudPlatform/kubernetes/pkg/client/clientcmd" @@ -267,6 +268,9 @@ func (c *clientSwaggerSchema) ValidateBytes(data []byte) error { if err != nil { return err } + if ok := registered.IsRegisteredAPIVersion(version); !ok { + return fmt.Errorf("API version %q isn't supported, only supports API versions %q", version, registered.RegisteredVersions) + } schemaData, err := c.c.RESTClient.Get(). AbsPath("/swaggerapi/api", version). Do(). diff --git a/pkg/kubectl/resource/mapper.go b/pkg/kubectl/resource/mapper.go index e8a1d6184c9..2e1d184296e 100644 --- a/pkg/kubectl/resource/mapper.go +++ b/pkg/kubectl/resource/mapper.go @@ -21,6 +21,7 @@ import ( "reflect" "github.com/GoogleCloudPlatform/kubernetes/pkg/api/meta" + "github.com/GoogleCloudPlatform/kubernetes/pkg/api/registered" "github.com/GoogleCloudPlatform/kubernetes/pkg/runtime" "github.com/GoogleCloudPlatform/kubernetes/pkg/util/yaml" ) @@ -46,6 +47,9 @@ func (m *Mapper) InfoForData(data []byte, source string) (*Info, error) { if err != nil { return nil, fmt.Errorf("unable to get type info from %q: %v", source, err) } + if ok := registered.IsRegisteredAPIVersion(version); !ok { + return nil, fmt.Errorf("API version %q in %q isn't supported, only supports API versions %q", version, source, registered.RegisteredVersions) + } if kind == "" { return nil, fmt.Errorf("kind not set in %q", source) }