From a137146562fecc909afe7fc81f0033fccbb36393 Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Mon, 6 Apr 2009 19:10:59 -0500 Subject: Adding ActiveRecord terminus classes for Catalog This provides the last piece of ActiveRecord integration. It's pretty much just pass-through and *only* works if you're storing Parser resources to the db. Signed-off-by: Luke Kanies --- lib/puppet/indirector/catalog/active_record.rb | 34 ++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 lib/puppet/indirector/catalog/active_record.rb (limited to 'lib') diff --git a/lib/puppet/indirector/catalog/active_record.rb b/lib/puppet/indirector/catalog/active_record.rb new file mode 100644 index 000000000..f57427e92 --- /dev/null +++ b/lib/puppet/indirector/catalog/active_record.rb @@ -0,0 +1,34 @@ +require 'puppet/rails/host' +require 'puppet/indirector/active_record' +require 'puppet/node/catalog' + +class Puppet::Node::Catalog::ActiveRecord < Puppet::Indirector::ActiveRecord + use_ar_model Puppet::Rails::Host + + # If we can find the host, then return a catalog with the host's resources + # as the vertices. + def find(request) + return nil unless request.options[:cache_integration_hack] + return nil unless host = ar_model.find_by_name(request.key) + + catalog = Puppet::Node::Catalog.new(host.name) + + host.resources.each do |resource| + catalog.add_resource resource.to_transportable + end + + catalog + end + + # Save the values from a Facts instance as the facts on a Rails Host instance. + def save(request) + catalog = request.instance + + host = ar_model.find_by_name(catalog.name) || ar_model.create(:name => catalog.name) + + host.setresources(catalog.vertices) + host.last_compile = Time.now + + host.save + end +end -- cgit