class Ohai::Application

The Application class is what is called by the Ohai CLI binary. It handles:

- CLI options and attribute arguments
- Collecting data via the Ohai::System class
- Printing the results returned via the Ohai::System class

Public Class Methods

exit!(msg, err = -1) click to toggle source

Log a debug message to the Logger and then exit the application @param msg [String] the message to log @param err [Integer] the exit code

# File lib/ohai/application.rb, line 171
def exit!(msg, err = -1)
  Ohai::Log.debug(msg)
  Process.exit err
end
fatal!(msg, err = -1) click to toggle source

Log a fatal error message to both STDERR and the Logger, exit the application @param msg [String] the message to log @param err [Integer] the exit code

# File lib/ohai/application.rb, line 162
def fatal!(msg, err = -1)
  STDERR.puts("FATAL: #{msg}")
  Ohai::Log.fatal(msg)
  Process.exit err
end

Public Instance Methods

config_file_defaults() click to toggle source

@api private

# File lib/ohai/application.rb, line 122
def config_file_defaults
  Ohai::Config.save(true)
end
config_file_settings() click to toggle source

@api private

# File lib/ohai/application.rb, line 127
def config_file_settings
  Ohai::Config.save(false)
end
configure_ohai() click to toggle source

parses the CLI options, loads the config file if present, and initializes logging

@return void

# File lib/ohai/application.rb, line 100
def configure_ohai
  @attributes = parse_options
  @attributes = nil if @attributes.empty?

  load_workstation_config

  merge_configs

  if config[:target]
    Ohai::Config.target_mode.host = config[:target]
    if URI.parse(Ohai::Config.target_mode.host).scheme
      train_config = Train.unpack_target_from_uri(Ohai::Config.target_mode.host)
      Ohai::Config.target_mode = train_config
    end
    Ohai::Config.target_mode.enabled = true
    Ohai::Config.node_name = Ohai::Config.target_mode.host unless Ohai::Config.node_name
  end

  Ohai::Log.init(Ohai.config[:log_location])
end
merge_configs() click to toggle source

See lib/chef/knife.rb in the chef/chef github repo

@api private

# File lib/ohai/application.rb, line 134
def merge_configs
  config.replace(config_file_defaults.merge(default_config).merge(config_file_settings).merge(config))
  Ohai::Config.merge!(config) # make them both the same
end
run() click to toggle source

the method called by the Ohai binary to actually run the whole application

@return void

# File lib/ohai/application.rb, line 89
def run
  elapsed = Benchmark.realtime do
    configure_ohai
    run_application
  end
  Ohai::Log.debug("Ohai took #{elapsed} total seconds to run.")
end
run_application() click to toggle source

Passes config and attributes arguments to Ohai::System then prints the results. Called by the run method after config / logging have been initialized

@return void

# File lib/ohai/application.rb, line 143
def run_application
  config[:invoked_from_cli] = true
  config[:logger] = Ohai::Log.with_child
  ohai = Ohai::System.new(config)
  ohai.all_plugins(@attributes)

  if @attributes
    @attributes.each do |a|
      puts ohai.attributes_print(a)
    end
  else
    puts ohai.json_pretty_print
  end
end

Private Instance Methods

load_workstation_config() click to toggle source
# File lib/ohai/application.rb, line 179
def load_workstation_config
  config_loader = ChefConfig::WorkstationConfigLoader.new(
    config[:config_file], Ohai::Log
  )
  begin
    config_loader.load
  rescue ChefConfig::ConfigurationError => config_error
    Ohai::Application.fatal!(config_error.message)
  end
end