Module: Ohai::Hints
- Defined in:
- lib/ohai/hints.rb
Overview
Ohai hints are json files on disk that give ohai a hint to things that are often difficult to discover like certain clouds. Previously they were used for just about every cloud, but we’ve since discoverd better ways to auto-detect these clouds. They are generally dropped off by the knife plugins for those clouds during bootstrap, but may also be manually dropped off and consumed by 3rd party plugins.
Class Method Summary collapse
-
.hint?(name) ⇒ Boolean
retrieve hint contents given a hint name.
-
.parse_hint_file(filename) ⇒ Object
parse the JSON contents of a hint file.
-
.refresh_hints ⇒ Object
clear out any known hints in the @hints variable.
Class Method Details
.hint?(name) ⇒ Boolean
retrieve hint contents given a hint name. Looks up in @hints variable first. Attempts to load from file in config’s :hints_path if not already cached. Saves the contents to the hash if the file was successfully parsed
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/ohai/hints.rb', line 51 def self.hint?(name) @hints ||= {} return @hints[name] if @hints[name] Ohai.config[:hints_path].each do |path| filename = File.join(path, "#{name}.json") next unless File.exist?(filename) Ohai::Log.trace("Found hint #{name}.json at #{filename}") @hints[name] = parse_hint_file(filename) end Ohai::Log.trace("Did not find hint #{name}.json in the hint path(s): #{Ohai.config[:hints_path].join(", ")} ") unless @hints.key?(name) @hints[name] end |
.parse_hint_file(filename) ⇒ Object
parse the JSON contents of a hint file. Return an empty hash if the file has no JSON content
37 38 39 40 41 42 43 44 45 |
# File 'lib/ohai/hints.rb', line 37 def self.parse_hint_file(filename) json_parser = FFI_Yajl::Parser.new hash = json_parser.parse(File.read(filename)) hash || {} # hint # should exist because the file did, even if it didn't # contain anything rescue FFI_Yajl::ParseError => e Ohai::Log.error("Could not parse hint file at #{filename}: #{e.}") end |
.refresh_hints ⇒ Object
clear out any known hints in the @hints variable
30 31 32 |
# File 'lib/ohai/hints.rb', line 30 def self.refresh_hints @hints = {} end |