Updated mcollective.init according to OSCI-658
[packages/precise/mcollective.git] / lib / mcollective / facts.rb
diff --git a/lib/mcollective/facts.rb b/lib/mcollective/facts.rb
new file mode 100644 (file)
index 0000000..f2bd19f
--- /dev/null
@@ -0,0 +1,39 @@
+module MCollective
+  # This is a class that gives access to the configured fact provider
+  # such as MCollectives::Facts::Facter that uses Reductive Labs facter
+  #
+  # The actual provider is pluggable and configurable using the 'factsource'
+  # configuration option.
+  #
+  # To develop a new factsource simply create a class under MCollective::Facts::
+  # and provide the following classes:
+  #
+  #   self.get_fact(fact)
+  #   self.has_fact?(fact)
+  #
+  # You can also just inherit from MCollective::Facts::Base and provide just the
+  #
+  #   self.get_facts
+  #
+  # method that should return a hash of facts.
+  module Facts
+    autoload :Base, "mcollective/facts/base"
+
+    @@config = nil
+
+    # True if we know of a specific fact else false
+    def self.has_fact?(fact, value)
+      PluginManager["facts_plugin"].get_fact(fact) == value ? true : false
+    end
+
+    # Get the value of a fact
+    def self.get_fact(fact)
+      PluginManager["facts_plugin"].get_fact(fact)
+    end
+
+    # Get the value of a fact
+    def self.[](fact)
+      PluginManager["facts_plugin"].get_fact(fact)
+    end
+  end
+end