diff options
Diffstat (limited to 'lib/puppet')
-rw-r--r-- | lib/puppet/parser/interpreter.rb | 6 | ||||
-rw-r--r-- | lib/puppet/parser/scope.rb | 10 | ||||
-rw-r--r-- | lib/puppet/server/master.rb | 5 |
3 files changed, 19 insertions, 2 deletions
diff --git a/lib/puppet/parser/interpreter.rb b/lib/puppet/parser/interpreter.rb index 557af958b..6a8a333e8 100644 --- a/lib/puppet/parser/interpreter.rb +++ b/lib/puppet/parser/interpreter.rb @@ -28,6 +28,10 @@ module Puppet @usenodes = true end + # Set it to either the value or nil. This is currently only used + # by the cfengine module. + @classes = hash[:Classes] || [] + # Create our parser object parsefiles @@ -64,7 +68,7 @@ module Puppet @scope.interp = self @scope.type = "puppet" @scope.name = "top" - return @scope.evaluate(@ast, facts) + return @scope.evaluate(@ast, facts, @classes) end #@ast.evaluate(@scope) rescue Puppet::DevError, Puppet::Error, Puppet::ParseError => except diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb index 93d97e396..c5ee0226a 100644 --- a/lib/puppet/parser/scope.rb +++ b/lib/puppet/parser/scope.rb @@ -233,13 +233,21 @@ module Puppet # silly method, in that it just calls evaluate on the passed-in # objects, and then calls to_trans on itself. It just conceals # a paltry amount of info from whomever's using the scope object. - def evaluate(objects, facts = {}) + def evaluate(objects, facts = {}, classes = []) facts.each { |var, value| self.setvar(var, value) } objects.safeevaluate(self) + # These classes would be passed in manually, via something like + # a cfengine module + classes.each { |klass| + if code = self.lookuptype(klass) + code.safeevaluate(self, {}, klass, klass) + end + } + return self.to_trans end diff --git a/lib/puppet/server/master.rb b/lib/puppet/server/master.rb index 261d93d97..e86663d0f 100644 --- a/lib/puppet/server/master.rb +++ b/lib/puppet/server/master.rb @@ -44,6 +44,11 @@ class Server args[:UseNodes] = false end + # This is only used by the cfengine module + if hash.include?(:Classes) + args[:Classes] = hash[:Classes] + end + begin @interpreter = Puppet::Parser::Interpreter.new(args) rescue => detail |