From b250416c272ded3e33cdfbb7ac1de989a1b92094 Mon Sep 17 00:00:00 2001 From: David Schmitt Date: Mon, 5 Nov 2007 21:56:49 +0100 Subject: fix #731: add exported=true to collect_exported this just adds the patch from the bugreport --- lib/puppet/parser/collector.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'lib/puppet/parser') diff --git a/lib/puppet/parser/collector.rb b/lib/puppet/parser/collector.rb index 3eb37dfa2..e3c91bccb 100644 --- a/lib/puppet/parser/collector.rb +++ b/lib/puppet/parser/collector.rb @@ -23,7 +23,8 @@ class Puppet::Parser::Collector host = Puppet::Rails::Host.find_by_name(@scope.host) args = {:include => {:param_values => :param_name}} - args[:conditions] = "(exported = 't' AND restype = '%s')" % [@type] + args[:conditions] = "(exported = %s AND restype = '%s')" % + [ActiveRecord::Base.connection.quote(true), @type] if @equery args[:conditions] += " AND (%s)" % [@equery] end -- cgit From cf75168dc2f95a530dffb7971733a0db2ef70ba2 Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Thu, 8 Nov 2007 15:54:14 -0600 Subject: Classes once again get evaluated immediately when the 'include' function is used, instead of being lazy-evaluated. Previous work caused resources to get created to model these classes, but in the process, I removed the fact that the classes were evaluated immediately. This meant that you couldn't guarantee that a class was evaluated before you went to use its variables. --- lib/puppet/parser/compile.rb | 1 + 1 file changed, 1 insertion(+) (limited to 'lib/puppet/parser') diff --git a/lib/puppet/parser/compile.rb b/lib/puppet/parser/compile.rb index 992b165e5..1b58eca42 100644 --- a/lib/puppet/parser/compile.rb +++ b/lib/puppet/parser/compile.rb @@ -126,6 +126,7 @@ class Puppet::Parser::Compile # of resources. resource = Puppet::Parser::Resource.new(:type => "class", :title => klass.classname, :scope => scope, :source => scope.source) store_resource(scope, resource) + resource.evaluate @configuration.tag(klass.classname) found << name else -- cgit From ba19989c6eab23f3897da20ed8a505ede9198d8b Mon Sep 17 00:00:00 2001 From: Luke Kanies Date: Thu, 8 Nov 2007 15:58:45 -0600 Subject: Switching the class resource evaluation to only happen when using :include, not (for example) when evaluating node classes. --- lib/puppet/parser/compile.rb | 11 +++++++---- lib/puppet/parser/functions.rb | 4 +++- 2 files changed, 10 insertions(+), 5 deletions(-) (limited to 'lib/puppet/parser') diff --git a/lib/puppet/parser/compile.rb b/lib/puppet/parser/compile.rb index 1b58eca42..f23b42a35 100644 --- a/lib/puppet/parser/compile.rb +++ b/lib/puppet/parser/compile.rb @@ -83,12 +83,12 @@ class Puppet::Parser::Compile return @configuration end - # FIXME There are no tests for this. + # LAK:FIXME There are no tests for this. def delete_collection(coll) @collections.delete(coll) if @collections.include?(coll) end - # FIXME There are no tests for this. + # LAK:FIXME There are no tests for this. def delete_resource(resource) @resource_table.delete(resource.ref) if @resource_table.include?(resource.ref) end @@ -114,7 +114,7 @@ class Puppet::Parser::Compile # find, just tag the configuration and move on. This method really just # creates resource objects that point back to the classes, and then the # resources are themselves evaluated later in the process. - def evaluate_classes(classes, scope) + def evaluate_classes(classes, scope, lazy_evaluate = true) unless scope.source raise Puppet::DevError, "No source for scope passed to evaluate_classes" end @@ -126,7 +126,10 @@ class Puppet::Parser::Compile # of resources. resource = Puppet::Parser::Resource.new(:type => "class", :title => klass.classname, :scope => scope, :source => scope.source) store_resource(scope, resource) - resource.evaluate + + # If they've disabled lazy evaluation (which the :include function does), + # then evaluate our resource immediately. + resource.evaluate unless lazy_evaluate @configuration.tag(klass.classname) found << name else diff --git a/lib/puppet/parser/functions.rb b/lib/puppet/parser/functions.rb index 1d07122d4..a0e8da86f 100644 --- a/lib/puppet/parser/functions.rb +++ b/lib/puppet/parser/functions.rb @@ -109,7 +109,9 @@ module Functions # Include the specified classes newfunction(:include, :doc => "Evaluate one or more classes.") do |vals| vals = [vals] unless vals.is_a?(Array) - klasses = compile.evaluate_classes(vals, self) + + # The 'false' disables lazy evaluation. + klasses = compile.evaluate_classes(vals, self, false) missing = vals.find_all do |klass| ! klasses.include?(klass) -- cgit