Skip to content

Commit 7d8d4eb

Browse files
author
Kubernetes Submit Queue
authored
Merge pull request kubernetes#38304 from deads2k/cli-13-fix-validate
Automatic merge from submit-queue (batch tested with PRs 36140, 38304) remove validation dependency on version negotiation Things that just need a REST client or a bit of discovery information should not attempt to perform negotiation. Doing so just limits the genericness of the client. @kubernetes/sig-cli @fabianofranz this blocks the kubernetes-discovery work.
2 parents 84f03ef + b658552 commit 7d8d4eb

File tree

1 file changed

+6
-26
lines changed

1 file changed

+6
-26
lines changed

pkg/kubectl/cmd/util/factory.go

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -719,34 +719,21 @@ func (f *factory) StatusViewer(mapping *meta.RESTMapping) (kubectl.StatusViewer,
719719

720720
func (f *factory) Validator(validate bool, cacheDir string) (validation.Schema, error) {
721721
if validate {
722-
clientConfig, err := f.clients.ClientConfigForVersion(nil)
723-
if err != nil {
724-
return nil, err
725-
}
726-
restclient, err := restclient.RESTClientFor(clientConfig)
727-
if err != nil {
728-
return nil, err
729-
}
730-
clientset, err := f.clients.ClientSetForVersion(nil)
722+
discovery, err := f.DiscoveryClient()
731723
if err != nil {
732724
return nil, err
733725
}
734726
dir := cacheDir
735727
if len(dir) > 0 {
736-
version, err := clientset.Discovery().ServerVersion()
728+
version, err := discovery.ServerVersion()
737729
if err == nil {
738730
dir = path.Join(cacheDir, version.String())
739731
} else {
740732
dir = "" // disable caching as a fallback
741733
}
742734
}
743-
fedClient, err := f.clients.FederationClientForVersion(nil)
744-
if err != nil {
745-
return nil, err
746-
}
747735
swaggerSchema := &clientSwaggerSchema{
748-
c: restclient,
749-
fedc: fedClient,
736+
c: discovery.RESTClient(),
750737
cacheDir: dir,
751738
}
752739
return validation.ConjunctiveSchema{
@@ -759,11 +746,11 @@ func (f *factory) Validator(validate bool, cacheDir string) (validation.Schema,
759746

760747
func (f *factory) SwaggerSchema(gvk schema.GroupVersionKind) (*swagger.ApiDeclaration, error) {
761748
version := gvk.GroupVersion()
762-
clientset, err := f.clients.ClientSetForVersion(&version)
749+
discovery, err := f.DiscoveryClient()
763750
if err != nil {
764751
return nil, err
765752
}
766-
return clientset.Discovery().SwaggerSchema(version)
753+
return discovery.SwaggerSchema(version)
767754
}
768755

769756
func (f *factory) DefaultNamespace() (string, bool, error) {
@@ -1017,8 +1004,7 @@ func getServiceProtocols(spec api.ServiceSpec) map[string]string {
10171004
}
10181005

10191006
type clientSwaggerSchema struct {
1020-
c *restclient.RESTClient
1021-
fedc *restclient.RESTClient
1007+
c restclient.Interface
10221008
cacheDir string
10231009
}
10241010

@@ -1150,12 +1136,6 @@ func (c *clientSwaggerSchema) ValidateBytes(data []byte) error {
11501136
}
11511137

11521138
switch gvk.Group {
1153-
case federation.GroupName:
1154-
if c.fedc == nil {
1155-
return errors.New("unable to validate: no federation client")
1156-
}
1157-
return getSchemaAndValidate(c.fedc, data, "apis/", gvk.GroupVersion().String(), c.cacheDir, c)
1158-
11591139
case api.GroupName:
11601140
return getSchemaAndValidate(c.c, data, "api", gvk.GroupVersion().String(), c.cacheDir, c)
11611141

0 commit comments

Comments
 (0)