480: def set_value(param, value, type, options = {})
481: param = param.to_sym
482: unless setting = @config[param]
483: if options[:ignore_bad_settings]
484: return
485: else
486: raise ArgumentError,
487: "Attempt to assign a value to unknown configuration parameter #{param.inspect}"
488: end
489: end
490: value = setting.munge(value) if setting.respond_to?(:munge)
491: setting.handle(value) if setting.respond_to?(:handle) and not options[:dont_trigger_handles]
492: if ReadOnly.include? param and type != :mutable_defaults
493: raise ArgumentError,
494: "You're attempting to set configuration parameter $#{param}, which is read-only."
495: end
496: type = legacy_to_mode(type, param)
497: @sync.synchronize do
498: @values[type][param] = value
499: @cache.clear
500:
501: clearused
502:
503:
504:
505:
506:
507:
508: Puppet::Node::Environment.clear if defined?(Puppet::Node) and defined?(Puppet::Node::Environment)
509: end
510:
511: value
512: end