Module: RightScale::CloudApi::RequestAnalyzer::ClassMethods
- Defined in:
- lib/base/routines/request_analyzer.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#error_pattern(action, error_pattern) ⇒ Object
Adds a new error pattern.
Class Method Details
.extended(base) ⇒ Object
63 64 65 66 67 |
# File 'lib/base/routines/request_analyzer.rb', line 63 def self.extended(base) unless base.respond_to?(:options) && base..is_a?(Hash) fail Error::new("RequestAnalyzer routine assumes class being extended responds to :options and returns a hash") end end |
Instance Method Details
#error_pattern(action, error_pattern) ⇒ Object
Adds a new error pattern. Patterns are analyzed in order of their definition. If one pattern hits the rest are not analyzed.
@xample:
error_pattern :abort_on_timeout, :path => /Action=(Run|Create)/
error_pattern :retry, :response => /InternalError|Internal Server Error|internal service error/i
error_pattern :disconnect_and_abort, :code => /5..|403|408/
error_pattern :disconnect_and_abort, :code => /4../, :if => Proc.new{ |opts| rand(100) < 10 }
85 86 87 88 89 90 91 92 |
# File 'lib/base/routines/request_analyzer.rb', line 85 def error_pattern(action, error_pattern) action = action.to_sym fail Error::new("Patterns are not set for action #{action.inspect}") if !error_pattern.is_a?(Hash) || error_pattern._blank? fail Error::new("Unsupported action #{action.inspect} for error pattern #{error_pattern.inspect}") unless ALL_ACTIONS.include?(action) unsupported_keys = REQUEST_ACTIONS.include?(action) ? error_pattern.keys - REQUEST_KEYS : error_pattern.keys - RESPONSE_KEYS fail Error::new("Unsupported keys #{unsupported_keys.inspect} for #{action.inspect} in error pattern #{error_pattern.inspect}") unless unsupported_keys._blank? ([:error_patterns] ||= []) << error_pattern.merge(:action => action) end |