Optimise the ValidateBytes function

Signed-off-by: PingWang <wang.ping5@zte.com.cn>
This commit is contained in:
PingWang 2016-08-18 19:23:10 +08:00
parent 60b7f14500
commit cd158938b9

View File

@ -1124,32 +1124,28 @@ func (c *clientSwaggerSchema) ValidateBytes(data []byte) error {
if ok := registered.IsEnabledVersion(gvk.GroupVersion()); !ok { if ok := registered.IsEnabledVersion(gvk.GroupVersion()); !ok {
return fmt.Errorf("API version %q isn't supported, only supports API versions %q", gvk.GroupVersion().String(), registered.EnabledVersions()) return fmt.Errorf("API version %q isn't supported, only supports API versions %q", gvk.GroupVersion().String(), registered.EnabledVersions())
} }
if gvk.Group == autoscaling.GroupName { switch gvk.Group {
case autoscaling.GroupName:
if c.c.AutoscalingClient == nil { if c.c.AutoscalingClient == nil {
return errors.New("unable to validate: no autoscaling client") return errors.New("unable to validate: no autoscaling client")
} }
return getSchemaAndValidate(c.c.AutoscalingClient.RESTClient, data, "apis/", gvk.GroupVersion().String(), c.cacheDir, c) return getSchemaAndValidate(c.c.AutoscalingClient.RESTClient, data, "apis/", gvk.GroupVersion().String(), c.cacheDir, c)
} case policy.GroupName:
if gvk.Group == policy.GroupName {
if c.c.PolicyClient == nil { if c.c.PolicyClient == nil {
return errors.New("unable to validate: no policy client") return errors.New("unable to validate: no policy client")
} }
return getSchemaAndValidate(c.c.PolicyClient.RESTClient, data, "apis/", gvk.GroupVersion().String(), c.cacheDir, c) return getSchemaAndValidate(c.c.PolicyClient.RESTClient, data, "apis/", gvk.GroupVersion().String(), c.cacheDir, c)
} case apps.GroupName:
if gvk.Group == apps.GroupName {
if c.c.AppsClient == nil { if c.c.AppsClient == nil {
return errors.New("unable to validate: no apps client") return errors.New("unable to validate: no apps client")
} }
return getSchemaAndValidate(c.c.AppsClient.RESTClient, data, "apis/", gvk.GroupVersion().String(), c.cacheDir, c) return getSchemaAndValidate(c.c.AppsClient.RESTClient, data, "apis/", gvk.GroupVersion().String(), c.cacheDir, c)
} case batch.GroupName:
if gvk.Group == batch.GroupName {
if c.c.BatchClient == nil { if c.c.BatchClient == nil {
return errors.New("unable to validate: no batch client") return errors.New("unable to validate: no batch client")
} }
return getSchemaAndValidate(c.c.BatchClient.RESTClient, data, "apis/", gvk.GroupVersion().String(), c.cacheDir, c) return getSchemaAndValidate(c.c.BatchClient.RESTClient, data, "apis/", gvk.GroupVersion().String(), c.cacheDir, c)
} case rbac.GroupName:
if gvk.Group == rbac.GroupName {
if c.c.RbacClient == nil { if c.c.RbacClient == nil {
return errors.New("unable to validate: no rbac client") return errors.New("unable to validate: no rbac client")
} }
@ -1159,19 +1155,18 @@ func (c *clientSwaggerSchema) ValidateBytes(data []byte) error {
// Don't attempt to validate third party objects // Don't attempt to validate third party objects
return nil return nil
} }
if gvk.Group == extensions.GroupName { switch gvk.Group {
case extensions.GroupName:
if c.c.ExtensionsClient == nil { if c.c.ExtensionsClient == nil {
return errors.New("unable to validate: no experimental client") return errors.New("unable to validate: no experimental client")
} }
return getSchemaAndValidate(c.c.ExtensionsClient.RESTClient, data, "apis/", gvk.GroupVersion().String(), c.cacheDir, c) return getSchemaAndValidate(c.c.ExtensionsClient.RESTClient, data, "apis/", gvk.GroupVersion().String(), c.cacheDir, c)
} case federation.GroupName:
if gvk.Group == federation.GroupName {
if c.fedc == nil { if c.fedc == nil {
return errors.New("unable to validate: no federation client") return errors.New("unable to validate: no federation client")
} }
return getSchemaAndValidate(c.fedc, data, "apis/", gvk.GroupVersion().String(), c.cacheDir, c) return getSchemaAndValidate(c.fedc, data, "apis/", gvk.GroupVersion().String(), c.cacheDir, c)
} case certificates.GroupName:
if gvk.Group == certificates.GroupName {
if c.c.CertificatesClient == nil { if c.c.CertificatesClient == nil {
return errors.New("unable to validate: no certificates client") return errors.New("unable to validate: no certificates client")
} }