# File lib/puppet/resource/type.rb, line 222
222:   def set_resource_parameters(resource, scope)
223:     set = {}
224:     resource.to_hash.each do |param, value|
225:       param = param.to_sym
226:       fail Puppet::ParseError, "#{resource.ref} does not accept attribute #{param}" unless valid_parameter?(param)
227: 
228:       exceptwrap { scope.setvar(param.to_s, value) }
229: 
230:       set[param] = true
231:     end
232: 
233:     if @type == :hostclass
234:       scope.setvar("title", resource.title.to_s.downcase) unless set.include? :title
235:       scope.setvar("name",  resource.name.to_s.downcase ) unless set.include? :name
236:     else
237:       scope.setvar("title", resource.title              ) unless set.include? :title
238:       scope.setvar("name",  resource.name               ) unless set.include? :name
239:     end
240:     scope.setvar("module_name", module_name) if module_name and ! set.include? :module_name
241: 
242:     if caller_name = scope.parent_module_name and ! set.include?(:caller_module_name)
243:       scope.setvar("caller_module_name", caller_name)
244:     end
245:     scope.class_set(self.name,scope) if hostclass? or node?
246:     # Verify that all required arguments are either present or
247:     # have been provided with defaults.
248:     arguments.each do |param, default|
249:       param = param.to_sym
250:       next if set.include?(param)
251: 
252:       # Even if 'default' is a false value, it's an AST value, so this works fine
253:       fail Puppet::ParseError, "Must pass #{param} to #{resource.ref}" unless default
254: 
255:       value = default.safeevaluate(scope)
256:       scope.setvar(param.to_s, value)
257: 
258:       # Set it in the resource, too, so the value makes it to the client.
259:       resource[param] = value
260:     end
261: 
262:   end