module ManageIQ::ApplianceConsole::Logging

Attributes

interactive[RW]

Public Class Methods

interactive?() click to toggle source
# File lib/manageiq/appliance_console/logging.rb, line 10
def interactive?
  @interactive != false
end

Public Instance Methods

error_and_logging_from_command_result_error(error) click to toggle source
# 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) click to toggle source
# 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
interactive() click to toggle source
# File lib/manageiq/appliance_console/logging.rb, line 23
def interactive
  ManageIQ::ApplianceConsole::Logging.interactive
end
interactive=(interactive) click to toggle source
# File lib/manageiq/appliance_console/logging.rb, line 15
def interactive=(interactive)
  ManageIQ::ApplianceConsole::Logging.interactive = interactive
end
interactive?() click to toggle source
# File lib/manageiq/appliance_console/logging.rb, line 19
def interactive?
  ManageIQ::ApplianceConsole::Logging.interactive?
end
log_and_feedback(method) { || ... } click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# 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) click to toggle source
# File lib/manageiq/appliance_console/logging.rb, line 64
def log_prefix(method)
  "MIQ(#{self.class.name}##{method}) "
end
logger() click to toggle source
# File lib/manageiq/appliance_console/logging.rb, line 31
def logger
  ManageIQ::ApplianceConsole.logger
end
logger=(logger) click to toggle source
# File lib/manageiq/appliance_console/logging.rb, line 27
def logger=(logger)
  ManageIQ::ApplianceConsole.logger = logger
end
say_error(method, output) click to toggle source

TODO: move say_error and say_info to prompting module?

# 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) click to toggle source
# File lib/manageiq/appliance_console/logging.rb, line 44
def say_info(method, output)
  say("#{method.to_s.humanize} #{output}")
end