diff options
author | Markus Roberts <Markus@reality.com> | 2011-02-01 16:22:06 -0800 |
---|---|---|
committer | Markus Roberts <Markus@reality.com> | 2011-02-01 16:22:06 -0800 |
commit | adb8c7994ea7d2d30aaea698fbe08727ed553fef (patch) | |
tree | 3f8f7b605dc9ad999409353266e7e3130667e697 /lib/puppet/parser/compiler.rb | |
parent | 517c6794606e9adde7f2912d3b949cfcc18a446a (diff) | |
parent | 443eba9b7a85cffa6b8513a32a620c80917be768 (diff) | |
download | puppet-adb8c7994ea7d2d30aaea698fbe08727ed553fef.tar.gz puppet-adb8c7994ea7d2d30aaea698fbe08727ed553fef.tar.xz puppet-adb8c7994ea7d2d30aaea698fbe08727ed553fef.zip |
Merge branch '2.6.next' of git://github.com/puppetlabs/puppet into 2.6.next
Diffstat (limited to 'lib/puppet/parser/compiler.rb')
-rw-r--r-- | lib/puppet/parser/compiler.rb | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/lib/puppet/parser/compiler.rb b/lib/puppet/parser/compiler.rb index c60e1d4fb..fdabd05c9 100644 --- a/lib/puppet/parser/compiler.rb +++ b/lib/puppet/parser/compiler.rb @@ -139,12 +139,23 @@ class Puppet::Parser::Compiler def evaluate_classes(classes, scope, lazy_evaluate = true) raise Puppet::DevError, "No source for scope passed to evaluate_classes" unless scope.source found = [] + param_classes = nil + # if we are a param class, save the classes hash + # and transform classes to be the keys + if classes.class == Hash + param_classes = classes + classes = classes.keys + end classes.each do |name| # If we can find the class, then make a resource that will evaluate it. if klass = scope.find_hostclass(name) - found << name and next if scope.class_scope(klass) - resource = klass.ensure_in_catalog(scope) + if param_classes + resource = klass.ensure_in_catalog(scope, param_classes[name] || {}) + else + found << name and next if scope.class_scope(klass) + resource = klass.ensure_in_catalog(scope) + end # If they've disabled lazy evaluation (which the :include function does), # then evaluate our resource immediately. @@ -432,7 +443,11 @@ class Puppet::Parser::Compiler @resources = [] # Make sure any external node classes are in our class list - @catalog.add_class(*@node.classes) + if @node.classes.class == Hash + @catalog.add_class(*@node.classes.keys) + else + @catalog.add_class(*@node.classes) + end end # Set the node's parameters into the top-scope as variables. |