~ubuntu-branches/ubuntu/trusty/puppet/trusty

« back to all changes in this revision

Viewing changes to lib/puppet/parser/compiler.rb

  • Committer: Package Import Robot
  • Author(s): Stig Sandbeck Mathisen
  • Date: 2011-10-22 14:08:22 UTC
  • mfrom: (1.1.25) (3.1.32 sid)
  • Revision ID: package-import@ubuntu.com-20111022140822-odxde5lohc45yhuz
Tags: 2.7.6-1
* New upstream release (CVE-2011-3872)
* Remove cherry-picked "groupadd_aix_warning" patch
* Install all new manpages

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
#  Created by Luke A. Kanies on 2007-08-13.
2
 
#  Copyright (c) 2007. All rights reserved.
3
 
 
4
1
require 'puppet/node'
5
2
require 'puppet/resource/catalog'
6
3
require 'puppet/util/errors'
60
57
    # Note that this will fail if the resource is not unique.
61
58
    @catalog.add_resource(resource)
62
59
 
 
60
    if resource.type.to_s.downcase != "class" && resource[:stage]
 
61
      raise ArgumentError, "Only classes can set 'stage'; normal resources like #{resource} cannot change run stage"
 
62
    end
63
63
 
64
 
    # Add our container edge.  If we're a class, then we get treated specially - we can
65
 
    # control the stage that the class is applied in.  Otherwise, we just
66
 
    # get added to our parent container.
 
64
    # Stages should not be inside of classes.  They are always a
 
65
    # top-level container, regardless of where they appear in the
 
66
    # manifest.
67
67
    return if resource.type.to_s.downcase == "stage"
68
68
 
 
69
    # This adds a resource to the class it lexically appears in in the
 
70
    # manifest.
69
71
    if resource.type.to_s.downcase != "class"
70
 
      raise ArgumentError, "Only classes can set 'stage'; normal resources like #{resource} cannot change run stage" if resource[:stage]
71
72
      return @catalog.add_edge(scope.resource, resource)
72
73
    end
73
 
 
74
 
    unless stage = @catalog.resource(:stage, resource[:stage] || (scope && scope.resource && scope.resource[:stage]) || :main)
75
 
      raise ArgumentError, "Could not find stage #{resource[:stage] || :main} specified by #{resource}"
76
 
    end
77
 
 
78
 
    resource[:stage] ||= stage.title unless stage.title == :main
79
 
    @catalog.add_edge(stage, resource)
80
74
  end
81
75
 
82
76
  # Do we use nodes found in the code, vs. the external node sources?