Remove swagger 1.2 validation

pull/6/head
Antoine Pelisse 2017-09-28 15:39:17 -07:00
parent 566364da49
commit 80fd010e83
10 changed files with 23 additions and 61 deletions

View File

@ -188,7 +188,7 @@ func parsePruneResources(mapper meta.RESTMapper, gvks []string) ([]pruneResource
} }
func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, options *ApplyOptions) error { func RunApply(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, options *ApplyOptions) error {
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagBool(cmd, "openapi-validation"), cmdutil.GetFlagString(cmd, "schema-cache-dir")) schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"))
if err != nil { if err != nil {
return err return err
} }

View File

@ -128,7 +128,7 @@ func (o *ConvertOptions) Complete(f cmdutil.Factory, out io.Writer, cmd *cobra.C
// build the builder // build the builder
o.builder = f.NewBuilder() o.builder = f.NewBuilder()
if !o.local { if !o.local {
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagBool(cmd, "openapi-validation"), cmdutil.GetFlagString(cmd, "schema-cache-dir")) schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"))
if err != nil { if err != nil {
return err return err
} }

View File

@ -115,7 +115,7 @@ func RunCreate(f cmdutil.Factory, cmd *cobra.Command, out, errOut io.Writer, opt
if options.EditBeforeCreate { if options.EditBeforeCreate {
return RunEditOnCreate(f, out, errOut, cmd, &options.FilenameOptions) return RunEditOnCreate(f, out, errOut, cmd, &options.FilenameOptions)
} }
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagBool(cmd, "openapi-validation"), cmdutil.GetFlagString(cmd, "schema-cache-dir")) schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"))
if err != nil { if err != nil {
return err return err
} }
@ -196,7 +196,6 @@ func RunEditOnCreate(f cmdutil.Factory, out, errOut io.Writer, cmd *cobra.Comman
FilenameOptions: *options, FilenameOptions: *options,
ValidateOptions: cmdutil.ValidateOptions{ ValidateOptions: cmdutil.ValidateOptions{
EnableValidation: cmdutil.GetFlagBool(cmd, "validate"), EnableValidation: cmdutil.GetFlagBool(cmd, "validate"),
SchemaCacheDir: cmdutil.GetFlagString(cmd, "schema-cache-dir"),
}, },
Output: cmdutil.GetFlagString(cmd, "output"), Output: cmdutil.GetFlagString(cmd, "output"),
WindowsLineEndings: cmdutil.GetFlagBool(cmd, "windows-line-endings"), WindowsLineEndings: cmdutil.GetFlagBool(cmd, "windows-line-endings"),

View File

@ -92,7 +92,7 @@ func NewCmdReplace(f cmdutil.Factory, out io.Writer) *cobra.Command {
} }
func RunReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error { func RunReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, options *resource.FilenameOptions) error {
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagBool(cmd, "openapi-validation"), cmdutil.GetFlagString(cmd, "schema-cache-dir")) schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"))
if err != nil { if err != nil {
return err return err
} }
@ -167,7 +167,7 @@ func RunReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []str
} }
func forceReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, shortOutput bool, options *resource.FilenameOptions) error { func forceReplace(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args []string, shortOutput bool, options *resource.FilenameOptions) error {
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagBool(cmd, "openapi-validation"), cmdutil.GetFlagString(cmd, "schema-cache-dir")) schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"))
if err != nil { if err != nil {
return err return err
} }

View File

@ -194,7 +194,7 @@ func RunRollingUpdate(f cmdutil.Factory, out io.Writer, cmd *cobra.Command, args
mapper, typer := f.Object() mapper, typer := f.Object()
if len(filename) != 0 { if len(filename) != 0 {
schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"), cmdutil.GetFlagBool(cmd, "openapi-validation"), cmdutil.GetFlagString(cmd, "schema-cache-dir")) schema, err := f.Validator(cmdutil.GetFlagBool(cmd, "validate"))
if err != nil { if err != nil {
return err return err
} }

View File

@ -415,7 +415,7 @@ func (f *FakeFactory) ResolveImage(name string) (string, error) {
return name, nil return name, nil
} }
func (f *FakeFactory) Validator(validate bool, openapi bool, cacheDir string) (validation.Schema, error) { func (f *FakeFactory) Validator(validate bool) (validation.Schema, error) {
return f.tf.Validator, f.tf.Err return f.tf.Validator, f.tf.Err
} }
@ -718,7 +718,7 @@ func (f *fakeAPIFactory) AttachablePodForObject(object runtime.Object, timeout t
} }
} }
func (f *fakeAPIFactory) Validator(validate bool, openapi bool, cacheDir string) (validation.Schema, error) { func (f *fakeAPIFactory) Validator(validate bool) (validation.Schema, error) {
return f.tf.Validator, f.tf.Err return f.tf.Validator, f.tf.Err
} }

View File

@ -230,7 +230,7 @@ func (o *EditOptions) Run() error {
glog.V(4).Infof("User edited:\n%s", string(edited)) glog.V(4).Infof("User edited:\n%s", string(edited))
// Apply validation // Apply validation
schema, err := o.f.Validator(o.EnableValidation, o.UseOpenAPI, o.SchemaCacheDir) schema, err := o.f.Validator(o.EnableValidation)
if err != nil { if err != nil {
return preservedFile(err, file, o.ErrOut) return preservedFile(err, file, o.ErrOut)
} }

View File

@ -233,7 +233,7 @@ type ObjectMappingFactory interface {
AttachablePodForObject(object runtime.Object, timeout time.Duration) (*api.Pod, error) AttachablePodForObject(object runtime.Object, timeout time.Duration) (*api.Pod, error)
// Returns a schema that can validate objects stored on disk. // Returns a schema that can validate objects stored on disk.
Validator(validate bool, openapi bool, cacheDir string) (validation.Schema, error) Validator(validate bool) (validation.Schema, error)
// SwaggerSchema returns the schema declaration for the provided group version kind. // SwaggerSchema returns the schema declaration for the provided group version kind.
SwaggerSchema(schema.GroupVersionKind) (*swagger.ApiDeclaration, error) SwaggerSchema(schema.GroupVersionKind) (*swagger.ApiDeclaration, error)
// OpenAPISchema returns the schema openapi schema definiton // OpenAPISchema returns the schema openapi schema definiton

View File

@ -22,13 +22,11 @@ import (
"errors" "errors"
"fmt" "fmt"
"os" "os"
"path"
"sort" "sort"
"sync" "sync"
"time" "time"
swagger "github.com/emicklei/go-restful-swagger12" swagger "github.com/emicklei/go-restful-swagger12"
"github.com/golang/glog"
"k8s.io/api/core/v1" "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/api/meta" "k8s.io/apimachinery/pkg/api/meta"
@ -409,43 +407,20 @@ func (f *ring1Factory) AttachablePodForObject(object runtime.Object, timeout tim
return pod, err return pod, err
} }
func (f *ring1Factory) Validator(validate, openapi bool, cacheDir string) (validation.Schema, error) { func (f *ring1Factory) Validator(validate bool) (validation.Schema, error) {
if validate { if !validate {
if openapi { return validation.NullSchema{}, nil
resources, err := f.OpenAPISchema()
if err == nil {
return validation.ConjunctiveSchema{
openapivalidation.NewSchemaValidation(resources),
validation.NoDoubleKeySchema{},
}, nil
}
glog.Warningf("Failed to download OpenAPI (%v), falling back to swagger", err)
}
discovery, err := f.clientAccessFactory.DiscoveryClient()
if err != nil {
return nil, err
}
dir := cacheDir
if len(dir) > 0 {
version, err := discovery.ServerVersion()
if err == nil {
dir = path.Join(cacheDir, version.String())
} else {
dir = "" // disable caching as a fallback
}
}
swaggerSchema := &clientSwaggerSchema{
c: discovery.RESTClient(),
cacheDir: dir,
}
return validation.ConjunctiveSchema{
swaggerSchema,
validation.NoDoubleKeySchema{},
}, nil
} }
return validation.NullSchema{}, nil
resources, err := f.OpenAPISchema()
if err != nil {
return nil, err
}
return validation.ConjunctiveSchema{
openapivalidation.NewSchemaValidation(resources),
validation.NoDoubleKeySchema{},
}, nil
} }
func (f *ring1Factory) SwaggerSchema(gvk schema.GroupVersionKind) (*swagger.ApiDeclaration, error) { func (f *ring1Factory) SwaggerSchema(gvk schema.GroupVersionKind) (*swagger.ApiDeclaration, error) {

View File

@ -395,20 +395,10 @@ func GetPodRunningTimeoutFlag(cmd *cobra.Command) (time.Duration, error) {
func AddValidateFlags(cmd *cobra.Command) { func AddValidateFlags(cmd *cobra.Command) {
cmd.Flags().Bool("validate", true, "If true, use a schema to validate the input before sending it") cmd.Flags().Bool("validate", true, "If true, use a schema to validate the input before sending it")
cmd.Flags().String("schema-cache-dir", fmt.Sprintf("~/%s/%s", clientcmd.RecommendedHomeDir, clientcmd.RecommendedSchemaName), fmt.Sprintf("If non-empty, load/store cached API schemas in this directory, default is '$HOME/%s/%s'", clientcmd.RecommendedHomeDir, clientcmd.RecommendedSchemaName))
cmd.Flags().Bool("openapi-validation", true, "If true, use openapi rather than swagger for validation.")
cmd.MarkFlagFilename("schema-cache-dir")
} }
func AddValidateOptionFlags(cmd *cobra.Command, options *ValidateOptions) { func AddValidateOptionFlags(cmd *cobra.Command, options *ValidateOptions) {
cmd.Flags().BoolVar(&options.EnableValidation, "validate", true, "If true, use a schema to validate the input before sending it") cmd.Flags().BoolVar(&options.EnableValidation, "validate", true, "If true, use a schema to validate the input before sending it")
cmd.Flags().StringVar(&options.SchemaCacheDir, "schema-cache-dir", fmt.Sprintf("~/%s/%s", clientcmd.RecommendedHomeDir, clientcmd.RecommendedSchemaName), fmt.Sprintf("If non-empty, load/store cached API schemas in this directory, default is '$HOME/%s/%s'", clientcmd.RecommendedHomeDir, clientcmd.RecommendedSchemaName))
cmd.Flags().BoolVar(&options.UseOpenAPI, "openapi-validation", true, "If true, use openapi rather than swagger for validation")
cmd.MarkFlagFilename("schema-cache-dir")
}
func AddOpenAPIFlags(cmd *cobra.Command) {
cmd.Flags().Bool("openapi-validation", true, "If true, use openapi rather than swagger for validation")
} }
func AddFilenameOptionFlags(cmd *cobra.Command, options *resource.FilenameOptions, usage string) { func AddFilenameOptionFlags(cmd *cobra.Command, options *resource.FilenameOptions, usage string) {
@ -446,8 +436,6 @@ func AddGeneratorFlags(cmd *cobra.Command, defaultGenerator string) {
type ValidateOptions struct { type ValidateOptions struct {
EnableValidation bool EnableValidation bool
UseOpenAPI bool
SchemaCacheDir string
} }
func ReadConfigDataFromReader(reader io.Reader, source string) ([]byte, error) { func ReadConfigDataFromReader(reader io.Reader, source string) ([]byte, error) {