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
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
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
@api private
# File lib/ohai/application.rb, line 122 def config_file_defaults Ohai::Config.save(true) end
@api private
# File lib/ohai/application.rb, line 127 def config_file_settings Ohai::Config.save(false) end
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
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
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
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
# 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