diff options
author | Jacob Helwig <jacob@puppetlabs.com> | 2011-04-19 11:11:34 -0700 |
---|---|---|
committer | Jacob Helwig <jacob@puppetlabs.com> | 2011-04-19 11:11:34 -0700 |
commit | 72cd6fb383335a62d2d1ab656cdff39c34de0f19 (patch) | |
tree | 65f9b57d8dc4fbcfda5eaedbae0f9938b70d30e1 /lib/puppet/parser/resource.rb | |
parent | 16d1f784cd00f8b3c3381caede44159c309487d7 (diff) | |
parent | 656eff821bec534a23e3e81e86ddbe3fc28f10ed (diff) | |
download | puppet-72cd6fb383335a62d2d1ab656cdff39c34de0f19.tar.gz puppet-72cd6fb383335a62d2d1ab656cdff39c34de0f19.tar.xz puppet-72cd6fb383335a62d2d1ab656cdff39c34de0f19.zip |
Merge branch 'tickets/2.6.x/4655-parameterized-classes-default-stages' into 2.6.next
* tickets/2.6.x/4655-parameterized-classes-default-stages:
(#4655) Allow stage to be set using a default class parameter
Updated CHANGELOG for 2.6.8rc1
Diffstat (limited to 'lib/puppet/parser/resource.rb')
-rw-r--r-- | lib/puppet/parser/resource.rb | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/lib/puppet/parser/resource.rb b/lib/puppet/parser/resource.rb index c007d4dbe..b98bc0b80 100644 --- a/lib/puppet/parser/resource.rb +++ b/lib/puppet/parser/resource.rb @@ -62,13 +62,28 @@ class Puppet::Parser::Resource < Puppet::Resource scope.environment end + # Process the stage metaparameter for a class. A containment edge + # is drawn from the class to the stage. The stage for containment + # defaults to main, if none is specified. + def add_edge_to_stage + 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 + + self[:stage] ||= stage.title unless stage.title == :main + catalog.add_edge(stage, self) + end + # Retrieve the associated definition and evaluate it. def evaluate return if evaluated? @evaluated = true if klass = resource_type and ! builtin_type? finish - return klass.evaluate_code(self) + evaluated_code = klass.evaluate_code(self) + add_edge_to_stage + + return evaluated_code elsif builtin? devfail "Cannot evaluate a builtin type (#{type})" else |