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:
247:
248: arguments.each do |param, default|
249: param = param.to_sym
250: next if set.include?(param)
251:
252:
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:
259: resource[param] = value
260: end
261:
262: end