Class: Stoplight::Wiring::ConfigCompatibilityValidator
- Inherits:
-
Object
- Object
- Stoplight::Wiring::ConfigCompatibilityValidator
- Defined in:
- lib/stoplight/wiring/config_compatibility_validator.rb,
sig/_private/stoplight/wiring/config_compatibility_validator.rbs
Overview
Validates that traffic control and recovery strategies are compatible with the provided configuration.
Different strategies have different configuration requirements:
- ErrorRate requires window_size and threshold ∈ [0,1]
- ConsecutiveErrors requires threshold > 0
- ConsecutiveSuccesses requires recovery_threshold > 0
Instance Attribute Summary collapse
-
#config ⇒ Domain::Config
readonly
Returns the value of attribute config.
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Domain::Config
-
#initialize(config:) ⇒ ConfigCompatibilityValidator
constructor
A new instance of ConfigCompatibilityValidator.
- #validate_traffic_control! ⇒ void
- #validate_traffic_recovery! ⇒ void
Constructor Details
#initialize(config:) ⇒ ConfigCompatibilityValidator
Returns a new instance of ConfigCompatibilityValidator.
21 22 23 |
# File 'lib/stoplight/wiring/config_compatibility_validator.rb', line 21 def initialize(config:) @config = config end |
Instance Attribute Details
#config ⇒ Domain::Config (readonly)
Returns the value of attribute config.
15 16 17 |
# File 'lib/stoplight/wiring/config_compatibility_validator.rb', line 15 def config @config end |
Class Method Details
.call(config:) ⇒ Domain::Config
18 |
# File 'lib/stoplight/wiring/config_compatibility_validator.rb', line 18 def call(config:) = new(config:).call |
Instance Method Details
#call ⇒ Domain::Config
25 26 27 28 29 |
# File 'lib/stoplight/wiring/config_compatibility_validator.rb', line 25 def call validate_traffic_control! validate_traffic_recovery! config end |
#validate_traffic_control! ⇒ void
This method returns an undefined value.
31 32 33 34 35 36 37 38 39 40 |
# File 'lib/stoplight/wiring/config_compatibility_validator.rb', line 31 private def validate_traffic_control! traffic_control = config.traffic_control traffic_control.check_compatibility(config).then do |compatibility_result| if compatibility_result.incompatible? raise Error::ConfigurationError, "#{traffic_control} incompatible with config: #{compatibility_result.}", caller(8) end end end |
#validate_traffic_recovery! ⇒ void
This method returns an undefined value.
42 43 44 45 46 47 48 49 50 51 |
# File 'lib/stoplight/wiring/config_compatibility_validator.rb', line 42 def validate_traffic_recovery! traffic_recovery = config.traffic_recovery traffic_recovery.check_compatibility(config).then do |compatibility_result| if compatibility_result.incompatible? raise Error::ConfigurationError, "#{traffic_recovery} incompatible with config: #{compatibility_result.}", caller(8) end end end |