# File lib/ohai/system.rb, line 46 def []=(key, value) @data[key] = value end
Sneaky! Lets us stub out require_plugin when testing plugins, but still call the real require_plugin to kick the whole thing off.
# File lib/ohai/system.rb, line 127 def all_plugins require_plugin('os') Ohai::Config[:plugin_path].each do |path| [ Dir[File.join(path, '*')], Dir[File.join(path, @data[:os], '**', '*')] ].flatten.each do |file| file_regex = Regexp.new("#{path}#{File::SEPARATOR}(.+).rb$") md = file_regex.match(file) if md plugin_name = md[1].gsub(File::SEPARATOR, "::") require_plugin(plugin_name) unless @seen_plugins.has_key?(plugin_name) end end end unless RUBY_PLATFORM =~ /mswin|mingw32|windows/ # Catch any errant children who need to be reaped begin true while Process.wait(-1, Process::WNOHANG) rescue Errno::ECHILD end end true end
# File lib/ohai/system.rb, line 56 def attribute?(name) @data.has_key?(name) end
# File lib/ohai/system.rb, line 241 def attributes_print(a) data = @data a.split("/").each do |part| data = data[part] end raise ArgumentError, "I cannot find an attribute named #{a}!" if data.nil? case a when Hash,Mash,Array json_pretty_print(data) when String if data.respond_to?(:lines) json_pretty_print(data.lines.to_a) else json_pretty_print(data.to_a) end else raise ArgumentError, "I can only generate JSON for Hashes, Mashes, Arrays and Strings. You fed me a #{data.class}!" end end
# File lib/ohai/system.rb, line 153 def collect_providers(providers) refreshments = [] if providers.is_a?(Mash) providers.keys.each do |provider| if provider.eql?("_providers") refreshments << providers[provider] else refreshments << collect_providers(providers[provider]) end end else refreshments << providers end refreshments.flatten.uniq end
# File lib/ohai/system.rb, line 50 def each(&block) @data.each do |key, value| block.call(key, value) end end
# File lib/ohai/system.rb, line 64 def from(cmd) status, stdout, stderr = run_command(:command => cmd) return "" if stdout.nil? || stdout.empty? stdout.strip end
Set the value equal to the stdout of the command, plus run through a regex - the first piece of match data is the value.
# File lib/ohai/system.rb, line 87 def from_with_regex(cmd, *regex_list) regex_list.flatten.each do |regex| status, stdout, stderr = run_command(:command => cmd) return "" if stdout.nil? || stdout.empty? stdout.chomp!.strip md = stdout.match(regex) return md[1] end end
# File lib/ohai/system.rb, line 102 def get_attribute(name) @data[name] end
# File lib/ohai/system.rb, line 106 def hint?(name) @json_parser ||= Yajl::Parser.new return @hints[name] if @hints[name] Ohai::Config[:hints_path].each do |path| filename = File.join(path, "#{name}.json") if File.exist?(filename) begin hash = @json_parser.parse(File.read(filename)) @hints[name] = hash || Hash.new # hint should exist because the file did, even if it didn't contain anything rescue Yajl::ParseError => e Ohai::Log.error("Could not parse hint file at #{filename}: #{e.message}") end end end @hints[name] end
Pretty Print this object as JSON
# File lib/ohai/system.rb, line 237 def json_pretty_print(item=nil) Yajl::Encoder.new(:pretty => true).encode(item || @data) end
# File lib/ohai/system.rb, line 261 def method_missing(name, *args) return get_attribute(name) if args.length == 0 set_attribute(name, *args) end
# File lib/ohai/system.rb, line 70 def provides(*paths) paths.each do |path| parts = path.split('/') h = @providers unless parts.length == 0 parts.shift if parts[0].length == 0 parts.each do |part| h[part] ||= Mash.new h = h[part] end end h[:_providers] ||= [] h[:_providers] << @plugin_path end end
# File lib/ohai/system.rb, line 169 def refresh_plugins(path = '/') parts = path.split('/') if parts.length == 0 h = @providers else parts.shift if parts[0].length == 0 h = @providers parts.each do |part| break unless h.has_key?(part) h = h[part] end end refreshments = collect_providers(h) Ohai::Log.debug("Refreshing plugins: #{refreshments.join(", ")}") # remove the hints cache @hints = Hash.new refreshments.each do |r| @seen_plugins.delete(r) if @seen_plugins.has_key?(r) end refreshments.each do |r| require_plugin(r) unless @seen_plugins.has_key?(r) end end
# File lib/ohai/system.rb, line 196 def require_plugin(plugin_name, force=false) unless force return true if @seen_plugins[plugin_name] end if Ohai::Config[:disabled_plugins].include?(plugin_name) Ohai::Log.debug("Skipping disabled plugin #{plugin_name}") return false end @plugin_path = plugin_name filename = "#{plugin_name.gsub("::", File::SEPARATOR)}.rb" Ohai::Config[:plugin_path].each do |path| check_path = File.expand_path(File.join(path, filename)) begin @seen_plugins[plugin_name] = true Ohai::Log.debug("Loading plugin #{plugin_name}") from_file(check_path) return true rescue Errno::ENOENT => e Ohai::Log.debug("No #{plugin_name} at #{check_path}") rescue SystemExit, Interrupt raise rescue Exception,Errno::ENOENT => e Ohai::Log.debug("Plugin #{plugin_name} threw exception #{e.inspect} #{e.backtrace.join("\n")}") end end end
# File lib/ohai/system.rb, line 60 def set(name, *value) set_attribute(name, *value) end
Generated with the Darkfish Rdoc Generator 2.