Class Ohai::System
In: lib/ohai/system.rb
Parent: Object
Config System RuntimeError Exec Log\n[lib/ohai/log.rb\nlib/ohai/log/formatter.rb] lib/ohai/log/formatter.rb lib/ohai/config.rb lib/ohai/system.rb Command FromFile Mixin lib/ohai/exception.rb Exceptions Ohai dot/m_71_0.png

Methods

Included Modules

Ohai::Mixin::FromFile Ohai::Mixin::Command

Attributes

data  [RW] 
seen_plugins  [RW] 

Public Class methods

Create an Ohai::System from JSON

[Source]

     # File lib/ohai/system.rb, line 207
207:     def self.json_create(o)
208:       ohai = new
209:       o.each do |key, value|
210:         ohai.data[key] = value unless key == "json_class"
211:       end
212:       ohai
213:     end

[Source]

    # File lib/ohai/system.rb, line 34
34:     def initialize
35:       @data = Mash.new
36:       @seen_plugins = Hash.new
37:       @providers = Mash.new
38:       @plugin_path = ""
39:     end

Public Instance methods

[Source]

    # File lib/ohai/system.rb, line 41
41:     def [](key)
42:       @data[key]
43:     end

[Source]

    # File lib/ohai/system.rb, line 45
45:     def []=(key, value)
46:       @data[key] = value
47:     end
_require_plugin(plugin_name, force=false)

Alias for require_plugin

[Source]

     # File lib/ohai/system.rb, line 105
105:     def all_plugins
106:       require_plugin('os')
107:       
108:       Ohai::Config[:plugin_path].each do |path|
109:         [ 
110:           Dir[File.join(path, '*')], 
111:           Dir[File.join(path, @data[:os], '**', '*')] 
112:         ].flatten.each do |file|
113:           file_regex = Regexp.new("#{path}#{File::SEPARATOR}(.+).rb$")
114:           md = file_regex.match(file)
115:           if md
116:             plugin_name = md[1].gsub(File::SEPARATOR, "::")
117:             require_plugin(plugin_name) unless @seen_plugins.has_key?(plugin_name)
118:           end
119:         end
120:       end
121:     end

[Source]

    # File lib/ohai/system.rb, line 55
55:     def attribute?(name)
56:       @data.has_key?(name) 
57:     end

[Source]

     # File lib/ohai/system.rb, line 203
203:     def attributes_print(a)
204:       JSON.pretty_generate(@data[a])
205:     end

[Source]

     # File lib/ohai/system.rb, line 123
123:     def collect_providers(providers)
124:       refreshments = []
125:       if providers.is_a?(Mash)
126:         providers.keys.each do |provider|
127:           if provider.eql?("_providers")
128:             refreshments << providers[provider]
129:           else
130:             refreshments << collect_providers(providers[provider])
131:           end
132:         end
133:       else
134:         refreshments << providers
135:       end
136:       refreshments.flatten.uniq
137:     end

[Source]

    # File lib/ohai/system.rb, line 49
49:     def each(&block)
50:       @data.each do |key, value|
51:         block.call(key, value)
52:       end
53:     end

[Source]

    # File lib/ohai/system.rb, line 63
63:     def from(cmd)
64:       status, stdout, stderr = run_command(:command => cmd)
65:       return "" if stdout.nil?
66:       stdout.chomp!.strip
67:     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.

[Source]

    # File lib/ohai/system.rb, line 86
86:     def from_with_regex(cmd, *regex_list)
87:       regex_list.flatten.each do |regex|
88:         status, stdout, stderr = run_command(:command => cmd)
89:         return "" if stdout.nil?
90:         stdout.chomp!.strip
91:         md = stdout.match(regex)
92:         return md[1]
93:       end
94:     end

[Source]

     # File lib/ohai/system.rb, line 101
101:     def get_attribute(name)
102:       @data[name]
103:     end

Pretty Print this object as JSON

[Source]

     # File lib/ohai/system.rb, line 199
199:     def json_pretty_print
200:       JSON.pretty_generate(@data)
201:     end

[Source]

     # File lib/ohai/system.rb, line 215
215:     def method_missing(name, *args)
216:       return get_attribute(name) if args.length == 0 
217:       
218:       set_attribute(name, *args)
219:     end

[Source]

    # File lib/ohai/system.rb, line 69
69:     def provides(*paths)
70:       paths.each do |path|
71:         parts = path.split('/')
72:         h = @providers
73:         unless parts.length == 0
74:           parts.shift if parts[0].length == 0
75:           parts.each do |part|
76:             h[part] ||= Mash.new
77:             h = h[part]
78:           end
79:         end
80:         h[:_providers] ||= []
81:         h[:_providers] << @plugin_path
82:       end
83:     end

[Source]

     # File lib/ohai/system.rb, line 139
139:     def refresh_plugins(path = '/')
140:       parts = path.split('/')
141:       if parts.length == 0
142:         h = @providers
143:       else
144:         parts.shift if parts[0].length == 0
145:         h = @providers
146:         parts.each do |part|
147:           break unless h.has_key?(part)
148:           h = h[part]
149:         end
150:       end
151: 
152:       refreshments = collect_providers(h)
153:       Ohai::Log.debug("Refreshing plugins: #{refreshments.join(", ")}")
154:       
155:       refreshments.each do |r|
156:         @seen_plugins.delete(r) if @seen_plugins.has_key?(r)
157:       end
158:       refreshments.each do |r|
159:         require_plugin(r) unless @seen_plugins.has_key?(r)        
160:       end
161:     end

[Source]

     # File lib/ohai/system.rb, line 163
163:     def require_plugin(plugin_name, force=false)
164:       unless force
165:         return true if @seen_plugins[plugin_name]
166:       end
167:       
168:       @plugin_path = plugin_name
169:       
170:       filename = "#{plugin_name.gsub("::", File::SEPARATOR)}.rb"
171:             
172:       Ohai::Config[:plugin_path].each do |path|
173:         check_path = File.expand_path(File.join(path, filename))
174:         begin
175:           @seen_plugins[plugin_name] = true
176:           Ohai::Log.debug("Loading plugin #{plugin_name}")
177:           from_file(check_path)
178:           return true
179:         rescue IOError => e
180:           Ohai::Log.debug("No #{plugin_name} at #{check_path}")
181:         rescue Exception,Errno::ENOENT => e
182:           Ohai::Log.debug("Plugin #{plugin_name} threw exception #{e.inspect}")
183:         end
184:       end
185:     end

[Source]

    # File lib/ohai/system.rb, line 59
59:     def set(name, *value)
60:       set_attribute(name, *value)
61:     end

[Source]

    # File lib/ohai/system.rb, line 96
96:     def set_attribute(name, *value)
97:       @data[name] = *value
98:       @data[name]
99:     end

Serialize this object as a hash

[Source]

     # File lib/ohai/system.rb, line 192
192:     def to_json(*a)
193:       output = @data.clone
194:       output["json_class"] = self.class.name
195:       output.to_json(*a)
196:     end

Private Instance methods

[Source]

     # File lib/ohai/system.rb, line 222
222:       def load_plugin_file
223:         
224:       end

[Validate]