Module: ManageIQ::ApplianceConsole::Logging

Class Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Class Attribute Details

.interactiveObject

Returns the value of attribute interactive.



8
9
10
# File 'lib/manageiq/appliance_console/logging.rb', line 8

def interactive
  @interactive
end

Class Method Details

.interactive?Boolean

Returns:

  • (Boolean)


10
11
12
# File 'lib/manageiq/appliance_console/logging.rb', line 10

def interactive?
  @interactive != false
end

Instance Method Details

#error_and_logging_from_command_result_error(error) ⇒ Object



85
86
87
88
89
# File 'lib/manageiq/appliance_console/logging.rb', line 85

def error_and_logging_from_command_result_error(error)
  result = error.result
  location = error.backtrace.detect { |loc| !loc.match(/(linux_admin|awesome_spawn)/) }
  return error.message, "Command failed: #{error.message}. Error: #{result.error}. Output: #{result.output}. At: #{location}"
end

#error_and_logging_from_standard_error(error) ⇒ Object



91
92
93
94
95
# File 'lib/manageiq/appliance_console/logging.rb', line 91

def error_and_logging_from_standard_error(error)
  debugging = "Error: #{error.class.name} with message: #{error.message}"
  logging = "#{debugging}. Failed at: #{error.backtrace[0]}"
  return debugging, logging
end

#interactiveObject



23
24
25
# File 'lib/manageiq/appliance_console/logging.rb', line 23

def interactive
  ManageIQ::ApplianceConsole::Logging.interactive
end

#interactive=(interactive) ⇒ Object



15
16
17
# File 'lib/manageiq/appliance_console/logging.rb', line 15

def interactive=(interactive)
  ManageIQ::ApplianceConsole::Logging.interactive = interactive
end

#interactive?Boolean

Returns:

  • (Boolean)


19
20
21
# File 'lib/manageiq/appliance_console/logging.rb', line 19

def interactive?
  ManageIQ::ApplianceConsole::Logging.interactive?
end

#log_and_feedback(method) ⇒ Object

Raises:

  • (ArgumentError)


48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/manageiq/appliance_console/logging.rb', line 48

def log_and_feedback(method)
  raise ArgumentError, "No block given" unless block_given?

  log_and_feedback_info(method, "starting")

  result = nil
  begin
    result = yield
  rescue => err
    log_and_feedback_exception(err, method)
  else
    log_and_feedback_info(method, "complete")
  end
  result
end

#log_and_feedback_exception(error, failed_method) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
# File 'lib/manageiq/appliance_console/logging.rb', line 73

def log_and_feedback_exception(error, failed_method)
  feedback_error, logging = case error
                            when AwesomeSpawn::CommandResultError
                              error_and_logging_from_command_result_error(error)
                            else
                              error_and_logging_from_standard_error(error)
                            end

  log_error(failed_method, logging)
  say_error(failed_method, feedback_error)
end

#log_and_feedback_info(method, message) ⇒ Object



68
69
70
71
# File 'lib/manageiq/appliance_console/logging.rb', line 68

def log_and_feedback_info(method, message)
  logger.info("#{log_prefix(method)}: #{message}")
  say_info(method, message)
end

#log_error(failed_method, debugging) ⇒ Object



97
98
99
# File 'lib/manageiq/appliance_console/logging.rb', line 97

def log_error(failed_method, debugging)
  logger.error("#{log_prefix(failed_method)} #{debugging}")
end

#log_prefix(method) ⇒ Object



64
65
66
# File 'lib/manageiq/appliance_console/logging.rb', line 64

def log_prefix(method)
  "MIQ(#{self.class.name}##{method}) "
end

#loggerObject



31
32
33
# File 'lib/manageiq/appliance_console/logging.rb', line 31

def logger
  ManageIQ::ApplianceConsole.logger
end

#logger=(logger) ⇒ Object



27
28
29
# File 'lib/manageiq/appliance_console/logging.rb', line 27

def logger=(logger)
  ManageIQ::ApplianceConsole.logger = logger
end

#say_error(method, output) ⇒ Object

TODO: move say_error and say_info to prompting module?



36
37
38
39
40
41
42
# File 'lib/manageiq/appliance_console/logging.rb', line 36

def say_error(method, output)
  log = "\nSee #{ManageIQ::ApplianceConsole::Logger.log_file} for details."
  text = "#{method.to_s.humanize} failed with error - #{output.truncate(200)}.#{log}"
  say(text)
  press_any_key if interactive?
  raise ManageIQ::ApplianceConsole::MiqSignalError
end

#say_info(method, output) ⇒ Object



44
45
46
# File 'lib/manageiq/appliance_console/logging.rb', line 44

def say_info(method, output)
  say("#{method.to_s.humanize} #{output}")
end