| Class | MCollective::Data::Base |
| In: |
lib/mcollective/data/base.rb
|
| Parent: | Object |
| ddl | [R] | |
| name | [R] | |
| result | [R] | |
| timeout | [R] |
Always be active unless a specific block is given with activate_when
# File lib/mcollective/data/base.rb, line 60
60: def self.activate?
61: return true
62: end
file.exist?("/usr/bin/puppet")
end
# File lib/mcollective/data/base.rb, line 53
53: def self.activate_when(&block)
54: (class << self; self; end).instance_eval do
55: define_method("activate?", &block)
56: end
57: end
Register plugins that inherits base
# File lib/mcollective/data/base.rb, line 7
7: def self.inherited(klass)
8: type = klass.to_s.split("::").last.downcase
9:
10: PluginManager << {:type => type, :class => klass.to_s, :single_instance => false}
11: end
# File lib/mcollective/data/base.rb, line 13
13: def initialize
14: @name = self.class.to_s.split("::").last.downcase
15: @ddl = DDL.new(@name, :data)
16: @result = Result.new
17: @timeout = @ddl.meta[:timeout] || 1
18:
19: startup_hook
20: end
# File lib/mcollective/data/base.rb, line 42
42: def self.query(&block)
43: self.module_eval { define_method("query_data", &block) }
44: end
# File lib/mcollective/data/base.rb, line 46
46: def ddl_validate(what)
47: Data.ddl_validate(@ddl, what)
48: end
# File lib/mcollective/data/base.rb, line 22
22: def lookup(what)
23: ddl_validate(what)
24:
25: Log.debug("Doing data query %s for '%s'" % [ @name, what ])
26:
27: Timeout::timeout(@timeout) do
28: query_data(what)
29: end
30:
31: @result
32: rescue Timeout::Error
33: # Timeout::Error is a inherited from Interrupt which seems a really
34: # strange choice, making it an equivelant of ^C and such. Catch it
35: # and raise something less critical that will not the runner to just
36: # give up the ghost
37: msg = "Data plugin %s timed out on query '%s'" % [@name, what]
38: Log.error(msg)
39: raise MsgTTLExpired, msg
40: end