Module: Dopi::CommandParser::Output
- Includes:
- DopCommon::Validator
- Included in:
- Dopi::Command::Custom, Dopi::Command::Ssh::Custom, Dopi::Command::Winrm::Cmd, PuppetRun
- Defined in:
- lib/dopi/command_parser/output.rb
Instance Method Summary collapse
- #check_output(raw_output) ⇒ Object
- #error_patterns ⇒ Object
- #fail_on_warning ⇒ Object
- #lines_with_matches(raw_output, pattern) ⇒ Object
- #parse_output ⇒ Object
- #validate_output ⇒ Object
- #warning_patterns ⇒ Object
Instance Method Details
#check_output(raw_output) ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
# File 'lib/dopi/command_parser/output.rb', line 25 def check_output(raw_output) if error_patterns.empty? && warning_patterns.empty? log(:debug, "No patterns defined to parse the output") return true end output_ok = true error_patterns.each do |pattern| lines_with_matches(raw_output, pattern).each do |line_with_error| log(:error, line_with_error) output_ok = false end end warning_patterns.each do |pattern| lines_with_matches(raw_output, pattern).each do |line_with_warning| if fail_on_warning log(:error, line_with_warning) output_ok = false else log(:warn, line_with_warning) end end end output_ok end |
#error_patterns ⇒ Object
62 63 64 65 |
# File 'lib/dopi/command_parser/output.rb', line 62 def error_patterns @error_patterns ||= parser_patterns_valid?(parse_output[:error]) ? [ parse_output[:error] ].flatten : [] end |
#fail_on_warning ⇒ Object
72 73 74 75 |
# File 'lib/dopi/command_parser/output.rb', line 72 def fail_on_warning @fail_on_warning ||= fail_on_warning_valid? ? hash[:fail_on_warning] : false end |
#lines_with_matches(raw_output, pattern) ⇒ Object
77 78 79 80 |
# File 'lib/dopi/command_parser/output.rb', line 77 def lines_with_matches(raw_output, pattern) regexp = Regexp.new(pattern) raw_output.lines.find_all{ |line| line.scan(regexp).any? } end |
#parse_output ⇒ Object
54 55 56 57 58 59 60 |
# File 'lib/dopi/command_parser/output.rb', line 54 def parse_output if parse_output_valid? Hash[hash[:parse_output].map{|k,v| [k.to_sym, v]}] else respond_to?(:parse_output_defaults) ? parse_output_defaults : {} end end |
#validate_output ⇒ Object
16 17 18 19 20 21 22 23 |
# File 'lib/dopi/command_parser/output.rb', line 16 def validate_output log_validation_method('parse_output_valid?', CommandParsingError) unless parse_output.empty? log_validation_method('error_patterns_valid?', CommandParsingError) log_validation_method('warning_patterns_valid?', CommandParsingError) end log_validation_method('fail_on_warning_valid?', CommandParsingError) end |
#warning_patterns ⇒ Object
67 68 69 70 |
# File 'lib/dopi/command_parser/output.rb', line 67 def warning_patterns @warning_patterns ||= parser_patterns_valid?(parse_output[:warning]) ? [ parse_output[:warning] ].flatten : [] end |