module Puppet::Parser::Functions yumrepo_arguments = [ 'name', 'ensure', 'baseurl', 'cost', 'descr', 'enabled', 'enablegroups', 'exclude', 'failovermethod', 'gpgcheck', 'gpgkey', 'http_caching', 'include', 'includepkgs', 'keepalive', 'metadata_expire', 'metalink', 'mirrorlist', 'priority', 'protect', 'provider', 'proxy', 'proxy_password', 'proxy_username', 'repo_gpgcheck', 's3_enabled', 'skip_if_unavailable', 'sslcacert', 'sslclientcert', 'sslclientkey', 'sslverify', 'target', 'timeout' ] newfunction(:validate_yum_hash) do |args| if args.size > 1 raise Puppet::Error, "validate_yum_hash takes only a single argument, #{args.size} provided" end arg = args[0] if not arg.kind_of?(Hash) raise Puppet::Error, "non-hash argument provided to validate_yum_hash" end if arg.size > 0 arg.each do |title, params| params.each do |param, value| if ! yumrepo_arguments.include?(param) raise Puppet::Error, "Parameter #{param} is not valid for the yumrepo type" end end end end end end