diff options
| author | Luke Kanies <luke@puppetlabs.com> | 2011-07-15 11:54:33 -0700 |
|---|---|---|
| committer | Luke Kanies <luke@puppetlabs.com> | 2011-07-15 11:54:33 -0700 |
| commit | d69bf48ecae71ff01679bb38cdeebc8f4a8b8b15 (patch) | |
| tree | 6f6b25251f0a581c878b833a90e5b3bab0ac5d11 /lib/puppet/resource.rb | |
| parent | 4ad404ee7e7244d94ff4d87effc1a041d65b3f73 (diff) | |
| parent | bdc0f8716ae8ccb2b2657dfab591afe9589d8902 (diff) | |
| download | puppet-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.rb | 33 |
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 |
