diff options
Diffstat (limited to 'lib/puppet/util/fact_store.rb')
| -rw-r--r-- | lib/puppet/util/fact_store.rb | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/lib/puppet/util/fact_store.rb b/lib/puppet/util/fact_store.rb new file mode 100644 index 000000000..f872ebb01 --- /dev/null +++ b/lib/puppet/util/fact_store.rb @@ -0,0 +1,60 @@ +# Created on 2007-05-02 +# Copyright Luke Kanies + +module Puppet::Util + # The abstract base class for client fact storage. + class FactStore + extend Puppet::Util + extend Puppet::Util::Docs + extend Puppet::Util::ClassGen + + @loader = Puppet::Util::Autoload.new(self, "puppet/fact_stores") + @stores = {} + + # Add a new report type. + def self.newstore(name, options = {}, &block) + klass = genclass(name, + :block => block, + :prefix => "FactStore", + :hash => @stores, + :attributes => options + ) + end + + # Remove a store; really only used for testing. + def self.rmstore(name) + rmclass(name, :hash => @stores) + end + + # Load a store. + def self.store(name) + name = symbolize(name) + unless @stores.include? name + if @loader.load(name) + unless @stores.include? name + Puppet.warning( + "Loaded report file for %s but report was not defined" % + name + ) + return nil + end + else + return nil + end + end + @stores[name] + end + + # Retrieve the facts for a node. + def get(node) + raise Puppet::DevError, "%s has not overridden get" % self.class.name + end + + # Set the facts for a node. + def set(node, facts) + raise Puppet::DevError, "%s has not overridden set" % self.class.name + end + end +end + +# $Id$ |
