k8s.io/kube-openapi@v0.0.0-20240228011516-70dd3763d340/pkg/validation/validate/options.go (about)

     1  // Copyright 2015 go-swagger maintainers
     2  //
     3  // Licensed under the Apache License, Version 2.0 (the "License");
     4  // you may not use this file except in compliance with the License.
     5  // You may obtain a copy of the License at
     6  //
     7  //    http://www.apache.org/licenses/LICENSE-2.0
     8  //
     9  // Unless required by applicable law or agreed to in writing, software
    10  // distributed under the License is distributed on an "AS IS" BASIS,
    11  // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    12  // See the License for the specific language governing permissions and
    13  // limitations under the License.
    14  
    15  package validate
    16  
    17  import "sync"
    18  
    19  // Opts specifies validation options for a SpecValidator.
    20  //
    21  // NOTE: other options might be needed, for example a go-swagger specific mode.
    22  type Opts struct {
    23  	ContinueOnErrors bool // true: continue reporting errors, even if spec is invalid
    24  }
    25  
    26  var (
    27  	defaultOpts      = Opts{ContinueOnErrors: false} // default is to stop validation on errors
    28  	defaultOptsMutex = &sync.Mutex{}
    29  )
    30  
    31  // SetContinueOnErrors sets global default behavior regarding spec validation errors reporting.
    32  //
    33  // For extended error reporting, you most likely want to set it to true.
    34  // For faster validation, it's better to give up early when a spec is detected as invalid: set it to false (this is the default).
    35  //
    36  // Setting this mode does NOT affect the validation status.
    37  //
    38  // NOTE: this method affects global defaults. It is not suitable for a concurrent usage.
    39  func SetContinueOnErrors(c bool) {
    40  	defer defaultOptsMutex.Unlock()
    41  	defaultOptsMutex.Lock()
    42  	defaultOpts.ContinueOnErrors = c
    43  }