/usr/lib/ruby/vendor_ruby/ohai/application.rb is in ohai 8.21.0-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | #
# Author:: Mathieu Sauve-Frankel <msf@kisoku.net>
# Copyright:: Copyright (c) 2009 Mathieu Sauve-Frankel.
# License:: Apache License, Version 2.0
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
require "chef-config/path_helper"
require "chef-config/workstation_config_loader"
require "ohai"
require "ohai/log"
require "mixlib/cli"
class Ohai::Application
include Mixlib::CLI
option :config_file,
:short => "-c CONFIG",
:long => "--config CONFIG",
:description => "A configuration file to use",
:proc => lambda { |path| File.expand_path(path, Dir.pwd) }
option :directory,
:short => "-d DIRECTORY",
:long => "--directory DIRECTORY",
:description => "A directory to add to the Ohai plugin search path",
:proc => lambda { |path| Ohai::Config.platform_specific_path(path) }
option :log_level,
:short => "-l LEVEL",
:long => "--log_level LEVEL",
:description => "Set the log level (debug, info, warn, error, fatal)",
:proc => lambda { |l| l.to_sym }
option :log_location,
:short => "-L LOGLOCATION",
:long => "--logfile LOGLOCATION",
:description => "Set the log file location, defaults to STDOUT - recommended for daemonizing",
:proc => nil
option :help,
:short => "-h",
:long => "--help",
:description => "Show this message",
:on => :tail,
:boolean => true,
:show_options => true,
:exit => 0
option :version,
:short => "-v",
:long => "--version",
:description => "Show Ohai version",
:boolean => true,
:proc => lambda { |v| puts "Ohai: #{::Ohai::VERSION}" },
:exit => 0
def initialize
super
# Always switch to a readable directory. Keeps subsequent Dir.chdir() {}
# from failing due to permissions when launched as a less privileged user.
Dir.chdir("/")
end
def run
configure_ohai
run_application
end
def configure_ohai
@attributes = parse_options
@attributes = nil if @attributes.empty?
load_workstation_config
end
def run_application
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
class << self
# Log a fatal error message to both STDERR and the Logger, exit the application
def fatal!(msg, err = -1)
STDERR.puts("FATAL: #{msg}")
Ohai::Log.fatal(msg)
Process.exit err
end
def exit!(msg, err = -1)
Ohai::Log.debug(msg)
Process.exit err
end
end
private
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
end
|