summaryrefslogtreecommitdiffstats
path: root/lib/puppet/resource.rb
diff options
context:
space:
mode:
authorLuke Kanies <luke@puppetlabs.com>2011-07-15 11:54:33 -0700
committerLuke Kanies <luke@puppetlabs.com>2011-07-15 11:54:33 -0700
commitd69bf48ecae71ff01679bb38cdeebc8f4a8b8b15 (patch)
tree6f6b25251f0a581c878b833a90e5b3bab0ac5d11 /lib/puppet/resource.rb
parent4ad404ee7e7244d94ff4d87effc1a041d65b3f73 (diff)
parentbdc0f8716ae8ccb2b2657dfab591afe9589d8902 (diff)
downloadpuppet-d69bf48ecae71ff01679bb38cdeebc8f4a8b8b15.tar.gz
puppet-d69bf48ecae71ff01679bb38cdeebc8f4a8b8b15.tar.xz
puppet-d69bf48ecae71ff01679bb38cdeebc8f4a8b8b15.zip
Merge branch 'refactor/master/8232-array_indexers_on_scope'
Diffstat (limited to 'lib/puppet/resource.rb')
-rw-r--r--lib/puppet/resource.rb33
1 files changed, 33 insertions, 0 deletions
diff --git a/lib/puppet/resource.rb b/lib/puppet/resource.rb
index 59e387d00..217eb11c8 100644
--- a/lib/puppet/resource.rb
+++ b/lib/puppet/resource.rb
@@ -343,6 +343,26 @@ class Puppet::Resource
[ type, title ].join('/')
end
+ def set_default_parameters(scope)
+ return [] unless resource_type and resource_type.respond_to?(:arguments)
+
+ result = []
+
+ resource_type.arguments.each do |param, default|
+ param = param.to_sym
+ next if parameters.include?(param)
+ unless is_a?(Puppet::Parser::Resource)
+ fail Puppet::DevError, "Cannot evaluate default parameters for #{self} - not a parser resource"
+ end
+
+ next if default.nil?
+
+ self[param] = default.safeevaluate(scope)
+ result << param
+ end
+ result
+ end
+
def to_resource
self
end
@@ -351,6 +371,19 @@ class Puppet::Resource
resource_type.valid_parameter?(name)
end
+ # Verify that all required arguments are either present or
+ # have been provided with defaults.
+ # Must be called after 'set_default_parameters'. We can't join the methods
+ # because Type#set_parameters needs specifically ordered behavior.
+ def validate_complete
+ return unless resource_type and resource_type.respond_to?(:arguments)
+
+ resource_type.arguments.each do |param, default|
+ param = param.to_sym
+ fail Puppet::ParseError, "Must pass #{param} to #{self}" unless parameters.include?(param)
+ end
+ end
+
def validate_parameter(name)
raise ArgumentError, "Invalid parameter #{name}" unless valid_parameter?(name)
end