diff options
author | Luke Kanies <luke@madstop.com> | 2008-02-28 14:44:39 -0600 |
---|---|---|
committer | Luke Kanies <luke@madstop.com> | 2008-02-28 14:44:39 -0600 |
commit | fe1f4f57bf5ee0792ee645ec8e0bfddf455ea1e3 (patch) | |
tree | ad62c32acd6fa7fb22a7025866d43eaea688f673 /lib/puppet/parser | |
parent | dd17d4ca71e17deba8cf19e376e2d711fa516d92 (diff) | |
parent | c0b5352851d3fdef20b2a432f6f06d31fdc9ce99 (diff) | |
download | puppet-fe1f4f57bf5ee0792ee645ec8e0bfddf455ea1e3.tar.gz puppet-fe1f4f57bf5ee0792ee645ec8e0bfddf455ea1e3.tar.xz puppet-fe1f4f57bf5ee0792ee645ec8e0bfddf455ea1e3.zip |
Merge branch '0.24.x' of ssh://reductivelabs.com/opt/rl/git/puppet into 0.24.x
Diffstat (limited to 'lib/puppet/parser')
-rw-r--r-- | lib/puppet/parser/ast/definition.rb | 3 | ||||
-rw-r--r-- | lib/puppet/parser/ast/hostclass.rb | 9 | ||||
-rw-r--r-- | lib/puppet/parser/interpreter.rb | 4 | ||||
-rw-r--r-- | lib/puppet/parser/resource.rb | 9 |
4 files changed, 18 insertions, 7 deletions
diff --git a/lib/puppet/parser/ast/definition.rb b/lib/puppet/parser/ast/definition.rb index 2b7506446..0c65c702c 100644 --- a/lib/puppet/parser/ast/definition.rb +++ b/lib/puppet/parser/ast/definition.rb @@ -24,9 +24,6 @@ class Puppet::Parser::AST::Definition < Puppet::Parser::AST::Branch # Create a resource that knows how to evaluate our actual code. def evaluate(scope) - # Do nothing if the resource already exists; this provides the singleton nature classes need. - return if scope.catalog.resource(self.class.name, self.classname) - resource = Puppet::Parser::Resource.new(:type => self.class.name, :title => self.classname, :scope => scope, :source => scope.source) scope.catalog.tag(*resource.tags) diff --git a/lib/puppet/parser/ast/hostclass.rb b/lib/puppet/parser/ast/hostclass.rb index 8d4d01660..7f89f8151 100644 --- a/lib/puppet/parser/ast/hostclass.rb +++ b/lib/puppet/parser/ast/hostclass.rb @@ -21,7 +21,14 @@ class Puppet::Parser::AST::HostClass < Puppet::Parser::AST::Definition # Make sure our parent class has been evaluated, if we have one. def evaluate(scope) if parentclass and ! scope.catalog.resource(self.class.name, parentclass) - resource = parentobj.evaluate(scope) + parent_resource = parentobj.evaluate(scope) + end + + # Do nothing if the resource already exists; this makes sure we don't + # get multiple copies of the class resource, which helps provide the + # singleton nature of classes. + if resource = scope.catalog.resource(self.class.name, self.classname) + return resource end super diff --git a/lib/puppet/parser/interpreter.rb b/lib/puppet/parser/interpreter.rb index 33f66e8c2..d4655c403 100644 --- a/lib/puppet/parser/interpreter.rb +++ b/lib/puppet/parser/interpreter.rb @@ -28,10 +28,8 @@ class Puppet::Parser::Interpreter begin return Puppet::Parser::Compiler.new(node, env_parser).compile rescue => detail + puts detail.backtrace if Puppet[:trace] raise Puppet::Error, detail.to_s + " on node %s" % node.name - if Puppet[:trace] - puts detail.backtrace - end end end diff --git a/lib/puppet/parser/resource.rb b/lib/puppet/parser/resource.rb index fb0799011..46be89ca2 100644 --- a/lib/puppet/parser/resource.rb +++ b/lib/puppet/parser/resource.rb @@ -133,6 +133,15 @@ class Puppet::Parser::Resource tag(@ref.title) if valid_tag?(@ref.title.to_s) end + # Is this resource modeling an isomorphic resource type? + def isomorphic? + if builtin? + return @ref.builtintype.isomorphic? + else + return true + end + end + # Merge an override resource in. This will throw exceptions if # any overrides aren't allowed. def merge(resource) |