diff options
author | Jesse Wolfe <jes5199@gmail.com> | 2010-08-12 13:53:13 -0700 |
---|---|---|
committer | Jesse Wolfe <jes5199@gmail.com> | 2010-08-12 13:53:29 -0700 |
commit | 1f3070c4bc77b38e3dd6170cf6a58bee7ec337ac (patch) | |
tree | 3c6495838d1b876528cb4522de3484c44749140d /lib/puppet/parser/scope.rb | |
parent | d5db8db116aff58215ab0feebd7ec02086040f51 (diff) | |
parent | 0f56c1b02d40f1f8552d933dd78b24745937b137 (diff) | |
download | puppet-1f3070c4bc77b38e3dd6170cf6a58bee7ec337ac.tar.gz puppet-1f3070c4bc77b38e3dd6170cf6a58bee7ec337ac.tar.xz puppet-1f3070c4bc77b38e3dd6170cf6a58bee7ec337ac.zip |
Merge branch 'next'
This synchronizes the 2.7 master branch with 2.6.1RC2
Diffstat (limited to 'lib/puppet/parser/scope.rb')
-rw-r--r-- | lib/puppet/parser/scope.rb | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/puppet/parser/scope.rb b/lib/puppet/parser/scope.rb index ae0f9ea4a..24f1d01f7 100644 --- a/lib/puppet/parser/scope.rb +++ b/lib/puppet/parser/scope.rb @@ -474,6 +474,41 @@ class Puppet::Parser::Scope end end + def find_resource_type(type) + # It still works fine without the type == 'class' short-cut, but it is a lot slower. + return nil if ["class", "node"].include? type.to_s.downcase + find_builtin_resource_type(type) || find_defined_resource_type(type) + end + + def find_builtin_resource_type(type) + Puppet::Type.type(type.to_s.downcase.to_sym) + end + + def find_defined_resource_type(type) + environment.known_resource_types.find_definition(namespaces, type.to_s.downcase) + end + + def resolve_type_and_titles(type, titles) + raise ArgumentError, "titles must be an array" unless titles.is_a?(Array) + + case type.downcase + when "class" + # resolve the titles + titles = titles.collect do |a_title| + hostclass = find_hostclass(a_title) + hostclass ? hostclass.name : a_title + end + when "node" + # no-op + else + # resolve the type + resource_type = find_resource_type(type) + type = resource_type.name if resource_type + end + + return [type, titles] + end + private def extend_with_functions_module |