summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/parser/interpreter.rb6
-rw-r--r--lib/puppet/parser/scope.rb10
-rw-r--r--lib/puppet/server/master.rb5
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