summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorDan Bode <bodepd@gmail.com>2010-10-24 00:49:03 -0500
committerPaul Berry <paul@puppetlabs.com>2011-02-01 15:49:52 -0800
commitce5a2bf3ba66d5ce723a6887580b008e8ba4104b (patch)
tree7845397d260a57391a8c1adbfe8bbf746d248e7d /lib
parent1ab9bd833237c7cf2036989a58a1b22d3cc49a5b (diff)
downloadpuppet-ce5a2bf3ba66d5ce723a6887580b008e8ba4104b.tar.gz
puppet-ce5a2bf3ba66d5ce723a6887580b008e8ba4104b.tar.xz
puppet-ce5a2bf3ba66d5ce723a6887580b008e8ba4104b.zip
(#5061) - allow special hostclass/define variables to be evaluated as defaults.
I have always been annoyed that special variables for defines and hostclasses can not be evaluated as param defaults. Special variables are: $name, $title, $module_name. Code example: class x ( foo = $name ) { notice($foo)} should print x, and with my patch, it does. Reviewed-by: Paul Berry <paul@puppetlabs.com>
Diffstat (limited to 'lib')
-rw-r--r--lib/puppet/resource/type.rb26
1 files changed, 13 insertions, 13 deletions
diff --git a/lib/puppet/resource/type.rb b/lib/puppet/resource/type.rb
index d40adc145..c19a28c35 100644
--- a/lib/puppet/resource/type.rb
+++ b/lib/puppet/resource/type.rb
@@ -222,6 +222,19 @@ class Puppet::Resource::Type
set[param] = true
end
+ if @type == :hostclass
+ scope.setvar("title", resource.title.to_s.downcase) unless set.include? :title
+ scope.setvar("name", resource.name.to_s.downcase ) unless set.include? :name
+ else
+ scope.setvar("title", resource.title ) unless set.include? :title
+ scope.setvar("name", resource.name ) unless set.include? :name
+ end
+ scope.setvar("module_name", module_name) if module_name and ! set.include? :module_name
+
+ if caller_name = scope.parent_module_name and ! set.include?(:caller_module_name)
+ scope.setvar("caller_module_name", caller_name)
+ end
+ scope.class_set(self.name,scope) if hostclass? or node?
# Verify that all required arguments are either present or
# have been provided with defaults.
arguments.each do |param, default|
@@ -238,19 +251,6 @@ class Puppet::Resource::Type
resource[param] = value
end
- if @type == :hostclass
- scope.setvar("title", resource.title.to_s.downcase) unless set.include? :title
- scope.setvar("name", resource.name.to_s.downcase ) unless set.include? :name
- else
- scope.setvar("title", resource.title ) unless set.include? :title
- scope.setvar("name", resource.name ) unless set.include? :name
- end
- scope.setvar("module_name", module_name) if module_name and ! set.include? :module_name
-
- if caller_name = scope.parent_module_name and ! set.include?(:caller_module_name)
- scope.setvar("caller_module_name", caller_name)
- end
- scope.class_set(self.name,scope) if hostclass? or node?
end
# Create a new subscope in which to evaluate our code.