From 34f9f41628273d1554760f85414eb326aaea605e Mon Sep 17 00:00:00 2001 From: Jesse Wolfe Date: Wed, 20 Apr 2011 15:41:52 -0700 Subject: Maint: Fix a #4655 introduced log inconsistency When we moved code from the compiler to parser/resource, we lost a conditional that prevented defined resources from gaining containment edges to stages. Adding a stage to a defined resource was usually harmless, but it violated the invariant of "resources should only have exactly one container as their direct parent", producing a 50% chance of a malformed containment path in log messages. Reviewed-By: Jacob Helwig --- lib/puppet/parser/resource.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/puppet/parser/resource.rb b/lib/puppet/parser/resource.rb index b98bc0b80..e4f913013 100644 --- a/lib/puppet/parser/resource.rb +++ b/lib/puppet/parser/resource.rb @@ -66,6 +66,8 @@ class Puppet::Parser::Resource < Puppet::Resource # is drawn from the class to the stage. The stage for containment # defaults to main, if none is specified. def add_edge_to_stage + return unless self.type.to_s.downcase == "class" + unless stage = catalog.resource(:stage, self[:stage] || (scope && scope.resource && scope.resource[:stage]) || :main) raise ArgumentError, "Could not find stage #{self[:stage] || :main} specified by #{self}" end -- cgit