service_kiosk 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Vagrantfile +25 -0
- data/bin/kiosk +55 -0
- data/bin/start_kiosk.sh +3 -0
- data/lib/Procfile.kiosk +1 -0
- data/lib/internal_service.rb +59 -0
- data/lib/json-simple-1.1.1.jar +0 -0
- data/lib/kiosk.rb +57 -0
- data/lib/kiosks/logger/output_logger.rb +16 -0
- data/lib/mall.rb +77 -0
- data/lib/mallcop.rb +9 -0
- data/lib/remote_service.rb +61 -0
- data/lib/tasks/local_mall.rake +93 -0
- data/provision/bootstrap.sh +21 -0
- data/provision/manifests/default.pp +49 -0
- data/provision/modules/apt/CHANGELOG +83 -0
- data/provision/modules/apt/LICENSE +19 -0
- data/provision/modules/apt/Modulefile +14 -0
- data/provision/modules/apt/README.md +119 -0
- data/provision/modules/apt/Rakefile +1 -0
- data/provision/modules/apt/manifests/backports.pp +48 -0
- data/provision/modules/apt/manifests/builddep.pp +16 -0
- data/provision/modules/apt/manifests/conf.pp +18 -0
- data/provision/modules/apt/manifests/debian/testing.pp +21 -0
- data/provision/modules/apt/manifests/debian/unstable.pp +21 -0
- data/provision/modules/apt/manifests/force.pp +24 -0
- data/provision/modules/apt/manifests/init.pp +114 -0
- data/provision/modules/apt/manifests/key.pp +80 -0
- data/provision/modules/apt/manifests/params.pp +23 -0
- data/provision/modules/apt/manifests/pin.pp +48 -0
- data/provision/modules/apt/manifests/ppa.pp +49 -0
- data/provision/modules/apt/manifests/release.pp +17 -0
- data/provision/modules/apt/manifests/source.pp +83 -0
- data/provision/modules/apt/manifests/update.pp +9 -0
- data/provision/modules/apt/spec/classes/apt_spec.rb +129 -0
- data/provision/modules/apt/spec/classes/backports_spec.rb +71 -0
- data/provision/modules/apt/spec/classes/debian_testing_spec.rb +14 -0
- data/provision/modules/apt/spec/classes/debian_unstable_spec.rb +14 -0
- data/provision/modules/apt/spec/classes/params_spec.rb +13 -0
- data/provision/modules/apt/spec/classes/release_spec.rb +22 -0
- data/provision/modules/apt/spec/defines/builddep_spec.rb +18 -0
- data/provision/modules/apt/spec/defines/conf_spec.rb +57 -0
- data/provision/modules/apt/spec/defines/force_spec.rb +41 -0
- data/provision/modules/apt/spec/defines/key_spec.rb +123 -0
- data/provision/modules/apt/spec/defines/pin_spec.rb +58 -0
- data/provision/modules/apt/spec/defines/ppa_spec.rb +92 -0
- data/provision/modules/apt/spec/defines/source_spec.rb +158 -0
- data/provision/modules/apt/spec/fixtures/manifests/site.pp +0 -0
- data/provision/modules/apt/spec/spec_helper.rb +1 -0
- data/provision/modules/apt/templates/pin.pref.erb +5 -0
- data/provision/modules/apt/templates/source.list.erb +5 -0
- data/provision/modules/apt/tests/builddep.pp +2 -0
- data/provision/modules/apt/tests/debian/testing.pp +2 -0
- data/provision/modules/apt/tests/debian/unstable.pp +2 -0
- data/provision/modules/apt/tests/force.pp +7 -0
- data/provision/modules/apt/tests/init.pp +1 -0
- data/provision/modules/apt/tests/key.pp +5 -0
- data/provision/modules/apt/tests/params.pp +1 -0
- data/provision/modules/apt/tests/pin.pp +5 -0
- data/provision/modules/apt/tests/ppa.pp +4 -0
- data/provision/modules/apt/tests/release.pp +4 -0
- data/provision/modules/apt/tests/source.pp +29 -0
- data/provision/modules/stdlib/CHANGELOG +177 -0
- data/provision/modules/stdlib/LICENSE +19 -0
- data/provision/modules/stdlib/Modulefile +11 -0
- data/provision/modules/stdlib/README.markdown +929 -0
- data/provision/modules/stdlib/README_DEVELOPER.markdown +35 -0
- data/provision/modules/stdlib/RELEASE_PROCESS.markdown +24 -0
- data/provision/modules/stdlib/Rakefile +2 -0
- data/provision/modules/stdlib/lib/facter/pe_version.rb +53 -0
- data/provision/modules/stdlib/lib/facter/puppet_vardir.rb +26 -0
- data/provision/modules/stdlib/lib/facter/root_home.rb +19 -0
- data/provision/modules/stdlib/lib/facter/util/puppet_settings.rb +21 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/abs.rb +36 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/bool2num.rb +49 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/capitalize.rb +34 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/chomp.rb +35 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/chop.rb +37 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/defined_with_params.rb +35 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/delete.rb +46 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/delete_at.rb +49 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/downcase.rb +33 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/empty.rb +28 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/ensure_packages.rb +24 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb +35 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/flatten.rb +33 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/fqdn_rotate.rb +46 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/get_module_path.rb +17 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/getvar.rb +26 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/grep.rb +33 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/has_interface_with.rb +52 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/has_ip_address.rb +25 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/has_ip_network.rb +25 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/has_key.rb +28 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/hash.rb +41 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/is_array.rb +22 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/is_domain_name.rb +47 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/is_float.rb +27 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/is_hash.rb +22 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/is_integer.rb +27 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/is_ip_address.rb +32 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/is_mac_address.rb +27 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/is_numeric.rb +27 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/is_string.rb +26 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/join.rb +41 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/join_keys_to_values.rb +47 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/keys.rb +26 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/loadyaml.rb +20 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/lstrip.rb +33 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/max.rb +13 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/member.rb +44 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/merge.rb +33 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/min.rb +13 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/num2bool.rb +40 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/parsejson.rb +24 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/parseyaml.rb +24 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/pick.rb +29 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/prefix.rb +45 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/range.rb +80 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/reject.rb +31 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/reverse.rb +28 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/rstrip.rb +32 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/shuffle.rb +46 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/size.rb +48 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/sort.rb +27 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/squeeze.rb +36 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/str2bool.rb +41 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/str2saltedsha512.rb +32 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/strftime.rb +107 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/strip.rb +39 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/swapcase.rb +39 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/time.rb +49 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/to_bytes.rb +28 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/type.rb +50 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/unique.rb +51 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/upcase.rb +41 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/uriescape.rb +36 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/validate_absolute_path.rb +56 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/validate_array.rb +33 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/validate_bool.rb +34 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/validate_hash.rb +33 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/validate_re.rb +40 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/validate_slength.rb +52 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/validate_string.rb +33 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/values.rb +39 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/values_at.rb +98 -0
- data/provision/modules/stdlib/lib/puppet/parser/functions/zip.rb +65 -0
- data/provision/modules/stdlib/lib/puppet/provider/file_line/ruby.rb +59 -0
- data/provision/modules/stdlib/lib/puppet/type/anchor.rb +41 -0
- data/provision/modules/stdlib/lib/puppet/type/file_line.rb +70 -0
- data/provision/modules/stdlib/manifests/init.pp +20 -0
- data/provision/modules/stdlib/manifests/stages.pp +43 -0
- data/provision/modules/stdlib/spec/functions/defined_with_params_spec.rb +37 -0
- data/provision/modules/stdlib/spec/functions/ensure_packages_spec.rb +42 -0
- data/provision/modules/stdlib/spec/functions/ensure_resource_spec.rb +40 -0
- data/provision/modules/stdlib/spec/monkey_patches/alias_should_to_must.rb +8 -0
- data/provision/modules/stdlib/spec/monkey_patches/publicize_methods.rb +10 -0
- data/provision/modules/stdlib/spec/spec.opts +6 -0
- data/provision/modules/stdlib/spec/spec_helper.rb +28 -0
- data/provision/modules/stdlib/spec/unit/facter/pe_version_spec.rb +76 -0
- data/provision/modules/stdlib/spec/unit/facter/root_home_spec.rb +40 -0
- data/provision/modules/stdlib/spec/unit/facter/util/puppet_settings_spec.rb +35 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/abs_spec.rb +25 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/bool2num_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/capitalize_spec.rb +19 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/chomp_spec.rb +19 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/chop_spec.rb +19 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/delete_at_spec.rb +19 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/delete_spec.rb +38 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/downcase_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/empty_spec.rb +23 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/flatten_spec.rb +23 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/fqdn_rotate_spec.rb +33 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/get_module_path_spec.rb +46 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/getvar_spec.rb +37 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/grep_spec.rb +19 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/has_interface_with_spec.rb +64 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/has_ip_address_spec.rb +39 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/has_ip_network_spec.rb +36 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/has_key_spec.rb +42 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/hash_spec.rb +19 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_array_spec.rb +29 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_domain_name_spec.rb +64 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_float_spec.rb +29 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_hash_spec.rb +29 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_integer_spec.rb +29 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_ip_address_spec.rb +39 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_mac_address_spec.rb +29 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_numeric_spec.rb +29 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_string_spec.rb +34 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/join_keys_to_values_spec.rb +40 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/join_spec.rb +19 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/keys_spec.rb +21 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/lstrip_spec.rb +19 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/max_spec.rb +23 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/member_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/merge_spec.rb +47 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/min_spec.rb +23 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/num2bool_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/parsejson_spec.rb +22 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/parseyaml_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/pick_spec.rb +34 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/prefix_spec.rb +19 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/range_spec.rb +34 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/reject_spec.rb +20 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/reverse_spec.rb +19 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/rstrip_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/shuffle_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/size_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/sort_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/squeeze_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/str2bool_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb +45 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/strftime_spec.rb +29 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/strip_spec.rb +18 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/swapcase_spec.rb +19 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/time_spec.rb +29 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/to_bytes_spec.rb +58 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/type_spec.rb +43 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/unique_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/upcase_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/uriescape_spec.rb +24 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb +83 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_array_spec.rb +38 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_bool_spec.rb +51 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_hash_spec.rb +43 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_re_spec.rb +76 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_slength_spec.rb +48 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_string_spec.rb +60 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/values_at_spec.rb +38 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/values_spec.rb +31 -0
- data/provision/modules/stdlib/spec/unit/puppet/parser/functions/zip_spec.rb +15 -0
- data/provision/modules/stdlib/spec/unit/puppet/provider/file_line/ruby_spec.rb +127 -0
- data/provision/modules/stdlib/spec/unit/puppet/type/anchor_spec.rb +11 -0
- data/provision/modules/stdlib/spec/unit/puppet/type/file_line_spec.rb +69 -0
- data/provision/modules/stdlib/spec/watchr.rb +86 -0
- data/provision/modules/stdlib/tests/file_line.pp +9 -0
- data/provision/modules/stdlib/tests/has_interface_with.pp +10 -0
- data/provision/modules/stdlib/tests/has_ip_address.pp +3 -0
- data/provision/modules/stdlib/tests/has_ip_network.pp +4 -0
- data/provision/modules/stdlib/tests/init.pp +1 -0
- metadata +291 -0
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
#
|
|
2
|
+
# fqdn_rotate.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:fqdn_rotate, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Rotates an array a random number of times based on a nodes fqdn.
|
|
8
|
+
EOS
|
|
9
|
+
) do |arguments|
|
|
10
|
+
|
|
11
|
+
raise(Puppet::ParseError, "fqdn_rotate(): Wrong number of arguments " +
|
|
12
|
+
"given (#{arguments.size} for 1)") if arguments.size < 1
|
|
13
|
+
|
|
14
|
+
value = arguments[0]
|
|
15
|
+
klass = value.class
|
|
16
|
+
require 'digest/md5'
|
|
17
|
+
|
|
18
|
+
unless [Array, String].include?(klass)
|
|
19
|
+
raise(Puppet::ParseError, 'fqdn_rotate(): Requires either ' +
|
|
20
|
+
'array or string to work with')
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
result = value.clone
|
|
24
|
+
|
|
25
|
+
string = value.is_a?(String) ? true : false
|
|
26
|
+
|
|
27
|
+
# Check whether it makes sense to rotate ...
|
|
28
|
+
return result if result.size <= 1
|
|
29
|
+
|
|
30
|
+
# We turn any string value into an array to be able to rotate ...
|
|
31
|
+
result = string ? result.split('') : result
|
|
32
|
+
|
|
33
|
+
elements = result.size
|
|
34
|
+
|
|
35
|
+
srand(Digest::MD5.hexdigest([lookupvar('::fqdn'),arguments].join(':')).hex)
|
|
36
|
+
rand(elements).times {
|
|
37
|
+
result.push result.shift
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
result = string ? result.join : result
|
|
41
|
+
|
|
42
|
+
return result
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Puppet::Parser::Functions
|
|
2
|
+
newfunction(:get_module_path, :type =>:rvalue, :doc => <<-EOT
|
|
3
|
+
Returns the absolute path of the specified module for the current
|
|
4
|
+
environment.
|
|
5
|
+
|
|
6
|
+
Example:
|
|
7
|
+
$module_path = get_module_path('stdlib')
|
|
8
|
+
EOT
|
|
9
|
+
) do |args|
|
|
10
|
+
raise(Puppet::ParseError, "get_module_path(): Wrong number of arguments, expects one") unless args.size == 1
|
|
11
|
+
if module_path = Puppet::Module.find(args[0], compiler.environment.to_s)
|
|
12
|
+
module_path.path
|
|
13
|
+
else
|
|
14
|
+
raise(Puppet::ParseError, "Could not find module #{args[0]} in environment #{compiler.environment}")
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
module Puppet::Parser::Functions
|
|
2
|
+
|
|
3
|
+
newfunction(:getvar, :type => :rvalue, :doc => <<-'ENDHEREDOC') do |args|
|
|
4
|
+
Lookup a variable in a remote namespace.
|
|
5
|
+
|
|
6
|
+
For example:
|
|
7
|
+
|
|
8
|
+
$foo = getvar('site::data::foo')
|
|
9
|
+
# Equivalent to $foo = $site::data::foo
|
|
10
|
+
|
|
11
|
+
This is useful if the namespace itself is stored in a string:
|
|
12
|
+
|
|
13
|
+
$datalocation = 'site::data'
|
|
14
|
+
$bar = getvar("${datalocation}::bar")
|
|
15
|
+
# Equivalent to $bar = $site::data::bar
|
|
16
|
+
ENDHEREDOC
|
|
17
|
+
|
|
18
|
+
unless args.length == 1
|
|
19
|
+
raise Puppet::ParseError, ("getvar(): wrong number of arguments (#{args.length}; must be 1)")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
self.lookupvar("#{args[0]}")
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
#
|
|
2
|
+
# grep.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:grep, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
This function searches through an array and returns any elements that match
|
|
8
|
+
the provided regular expression.
|
|
9
|
+
|
|
10
|
+
*Examples:*
|
|
11
|
+
|
|
12
|
+
grep(['aaa','bbb','ccc','aaaddd'], 'aaa')
|
|
13
|
+
|
|
14
|
+
Would return:
|
|
15
|
+
|
|
16
|
+
['aaa','aaaddd']
|
|
17
|
+
EOS
|
|
18
|
+
) do |arguments|
|
|
19
|
+
|
|
20
|
+
if (arguments.size != 2) then
|
|
21
|
+
raise(Puppet::ParseError, "grep(): Wrong number of arguments "+
|
|
22
|
+
"given #{arguments.size} for 2")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
a = arguments[0]
|
|
26
|
+
pattern = Regexp.new(arguments[1])
|
|
27
|
+
|
|
28
|
+
a.grep(pattern)
|
|
29
|
+
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
#
|
|
2
|
+
# has_interface_with
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:has_interface_with, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Returns boolean based on kind and value:
|
|
8
|
+
* macaddress
|
|
9
|
+
* netmask
|
|
10
|
+
* ipaddress
|
|
11
|
+
* network
|
|
12
|
+
|
|
13
|
+
has_interface_with("macaddress", "x:x:x:x:x:x")
|
|
14
|
+
has_interface_with("ipaddress", "127.0.0.1") => true
|
|
15
|
+
etc.
|
|
16
|
+
|
|
17
|
+
If no "kind" is given, then the presence of the interface is checked:
|
|
18
|
+
has_interface_with("lo") => true
|
|
19
|
+
EOS
|
|
20
|
+
) do |args|
|
|
21
|
+
|
|
22
|
+
raise(Puppet::ParseError, "has_interface_with(): Wrong number of arguments " +
|
|
23
|
+
"given (#{args.size} for 1 or 2)") if args.size < 1 or args.size > 2
|
|
24
|
+
|
|
25
|
+
interfaces = lookupvar('interfaces')
|
|
26
|
+
|
|
27
|
+
# If we do not have any interfaces, then there are no requested attributes
|
|
28
|
+
return false if (interfaces == :undefined)
|
|
29
|
+
|
|
30
|
+
interfaces = interfaces.split(',')
|
|
31
|
+
|
|
32
|
+
if args.size == 1
|
|
33
|
+
return interfaces.member?(args[0])
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
kind, value = args
|
|
37
|
+
|
|
38
|
+
if lookupvar(kind) == value
|
|
39
|
+
return true
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
result = false
|
|
43
|
+
interfaces.each do |iface|
|
|
44
|
+
if value == lookupvar("#{kind}_#{iface}")
|
|
45
|
+
result = true
|
|
46
|
+
break
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
result
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#
|
|
2
|
+
# has_ip_address
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:has_ip_address, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Returns true if the client has the requested IP address on some interface.
|
|
8
|
+
|
|
9
|
+
This function iterates through the 'interfaces' fact and checks the
|
|
10
|
+
'ipaddress_IFACE' facts, performing a simple string comparison.
|
|
11
|
+
EOS
|
|
12
|
+
) do |args|
|
|
13
|
+
|
|
14
|
+
raise(Puppet::ParseError, "has_ip_address(): Wrong number of arguments " +
|
|
15
|
+
"given (#{args.size} for 1)") if args.size != 1
|
|
16
|
+
|
|
17
|
+
Puppet::Parser::Functions.autoloader.load(:has_interface_with) \
|
|
18
|
+
unless Puppet::Parser::Functions.autoloader.loaded?(:has_interface_with)
|
|
19
|
+
|
|
20
|
+
function_has_interface_with(['ipaddress', args[0]])
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# vim:sts=2 sw=2
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
#
|
|
2
|
+
# has_ip_network
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:has_ip_network, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Returns true if the client has an IP address within the requested network.
|
|
8
|
+
|
|
9
|
+
This function iterates through the 'interfaces' fact and checks the
|
|
10
|
+
'network_IFACE' facts, performing a simple string comparision.
|
|
11
|
+
EOS
|
|
12
|
+
) do |args|
|
|
13
|
+
|
|
14
|
+
raise(Puppet::ParseError, "has_ip_network(): Wrong number of arguments " +
|
|
15
|
+
"given (#{args.size} for 1)") if args.size != 1
|
|
16
|
+
|
|
17
|
+
Puppet::Parser::Functions.autoloader.load(:has_interface_with) \
|
|
18
|
+
unless Puppet::Parser::Functions.autoloader.loaded?(:has_interface_with)
|
|
19
|
+
|
|
20
|
+
function_has_interface_with(['network', args[0]])
|
|
21
|
+
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# vim:sts=2 sw=2
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
module Puppet::Parser::Functions
|
|
2
|
+
|
|
3
|
+
newfunction(:has_key, :type => :rvalue, :doc => <<-'ENDHEREDOC') do |args|
|
|
4
|
+
Determine if a hash has a certain key value.
|
|
5
|
+
|
|
6
|
+
Example:
|
|
7
|
+
|
|
8
|
+
$my_hash = {'key_one' => 'value_one'}
|
|
9
|
+
if has_key($my_hash, 'key_two') {
|
|
10
|
+
notice('we will not reach here')
|
|
11
|
+
}
|
|
12
|
+
if has_key($my_hash, 'key_one') {
|
|
13
|
+
notice('this will be printed')
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
ENDHEREDOC
|
|
17
|
+
|
|
18
|
+
unless args.length == 2
|
|
19
|
+
raise Puppet::ParseError, ("has_key(): wrong number of arguments (#{args.length}; must be 2)")
|
|
20
|
+
end
|
|
21
|
+
unless args[0].is_a?(Hash)
|
|
22
|
+
raise Puppet::ParseError, "has_key(): expects the first argument to be a hash, got #{args[0].inspect} which is of type #{args[0].class}"
|
|
23
|
+
end
|
|
24
|
+
args[0].has_key?(args[1])
|
|
25
|
+
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
end
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#
|
|
2
|
+
# hash.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:hash, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
This function converts and array into a hash.
|
|
8
|
+
|
|
9
|
+
*Examples:*
|
|
10
|
+
|
|
11
|
+
hash(['a',1,'b',2,'c',3])
|
|
12
|
+
|
|
13
|
+
Would return: {'a'=>1,'b'=>2,'c'=>3}
|
|
14
|
+
EOS
|
|
15
|
+
) do |arguments|
|
|
16
|
+
|
|
17
|
+
raise(Puppet::ParseError, "hash(): Wrong number of arguments " +
|
|
18
|
+
"given (#{arguments.size} for 1)") if arguments.size < 1
|
|
19
|
+
|
|
20
|
+
array = arguments[0]
|
|
21
|
+
|
|
22
|
+
unless array.is_a?(Array)
|
|
23
|
+
raise(Puppet::ParseError, 'hash(): Requires array to work with')
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
result = {}
|
|
27
|
+
|
|
28
|
+
begin
|
|
29
|
+
# This is to make it compatible with older version of Ruby ...
|
|
30
|
+
array = array.flatten
|
|
31
|
+
result = Hash[*array]
|
|
32
|
+
rescue Exception
|
|
33
|
+
raise(Puppet::ParseError, 'hash(): Unable to compute ' +
|
|
34
|
+
'hash from array given')
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
return result
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#
|
|
2
|
+
# is_array.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:is_array, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Returns true if the variable passed to this function is an array.
|
|
8
|
+
EOS
|
|
9
|
+
) do |arguments|
|
|
10
|
+
|
|
11
|
+
raise(Puppet::ParseError, "is_array(): Wrong number of arguments " +
|
|
12
|
+
"given (#{arguments.size} for 1)") if arguments.size < 1
|
|
13
|
+
|
|
14
|
+
type = arguments[0]
|
|
15
|
+
|
|
16
|
+
result = type.is_a?(Array)
|
|
17
|
+
|
|
18
|
+
return result
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#
|
|
2
|
+
# is_domain_name.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:is_domain_name, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Returns true if the string passed to this function is a syntactically correct domain name.
|
|
8
|
+
EOS
|
|
9
|
+
) do |arguments|
|
|
10
|
+
|
|
11
|
+
if (arguments.size != 1) then
|
|
12
|
+
raise(Puppet::ParseError, "is_domain_name(): Wrong number of arguments "+
|
|
13
|
+
"given #{arguments.size} for 1")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
domain = arguments[0]
|
|
17
|
+
|
|
18
|
+
# Limits (rfc1035, 3.1)
|
|
19
|
+
domain_max_length=255
|
|
20
|
+
label_min_length=1
|
|
21
|
+
label_max_length=63
|
|
22
|
+
|
|
23
|
+
# Allow ".", it is the top level domain
|
|
24
|
+
return true if domain == '.'
|
|
25
|
+
|
|
26
|
+
# Remove the final dot, if present.
|
|
27
|
+
domain.chomp!('.')
|
|
28
|
+
|
|
29
|
+
# Check the whole domain
|
|
30
|
+
return false if domain.empty?
|
|
31
|
+
return false if domain.length > domain_max_length
|
|
32
|
+
|
|
33
|
+
# Check each label in the domain
|
|
34
|
+
labels = domain.split('.')
|
|
35
|
+
vlabels = labels.each do |label|
|
|
36
|
+
break if label.length < label_min_length
|
|
37
|
+
break if label.length > label_max_length
|
|
38
|
+
break if label[-1..-1] == '-'
|
|
39
|
+
break if label[0..0] == '-'
|
|
40
|
+
break unless /^[a-z\d-]+$/i.match(label)
|
|
41
|
+
end
|
|
42
|
+
return vlabels == labels
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#
|
|
2
|
+
# is_float.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:is_float, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Returns true if the variable passed to this function is a float.
|
|
8
|
+
EOS
|
|
9
|
+
) do |arguments|
|
|
10
|
+
|
|
11
|
+
if (arguments.size != 1) then
|
|
12
|
+
raise(Puppet::ParseError, "is_float(): Wrong number of arguments "+
|
|
13
|
+
"given #{arguments.size} for 1")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
value = arguments[0]
|
|
17
|
+
|
|
18
|
+
if value != value.to_f.to_s then
|
|
19
|
+
return false
|
|
20
|
+
else
|
|
21
|
+
return true
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
#
|
|
2
|
+
# is_hash.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:is_hash, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Returns true if the variable passed to this function is a hash.
|
|
8
|
+
EOS
|
|
9
|
+
) do |arguments|
|
|
10
|
+
|
|
11
|
+
raise(Puppet::ParseError, "is_hash(): Wrong number of arguments " +
|
|
12
|
+
"given (#{arguments.size} for 1)") if arguments.size != 1
|
|
13
|
+
|
|
14
|
+
type = arguments[0]
|
|
15
|
+
|
|
16
|
+
result = type.is_a?(Hash)
|
|
17
|
+
|
|
18
|
+
return result
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#
|
|
2
|
+
# is_integer.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:is_integer, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Returns true if the variable returned to this string is an integer.
|
|
8
|
+
EOS
|
|
9
|
+
) do |arguments|
|
|
10
|
+
|
|
11
|
+
if (arguments.size != 1) then
|
|
12
|
+
raise(Puppet::ParseError, "is_integer(): Wrong number of arguments "+
|
|
13
|
+
"given #{arguments.size} for 1")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
value = arguments[0]
|
|
17
|
+
|
|
18
|
+
if value != value.to_i.to_s then
|
|
19
|
+
return false
|
|
20
|
+
else
|
|
21
|
+
return true
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#
|
|
2
|
+
# is_ip_address.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:is_ip_address, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Returns true if the string passed to this function is a valid IP address.
|
|
8
|
+
EOS
|
|
9
|
+
) do |arguments|
|
|
10
|
+
|
|
11
|
+
require 'ipaddr'
|
|
12
|
+
|
|
13
|
+
if (arguments.size != 1) then
|
|
14
|
+
raise(Puppet::ParseError, "is_ip_address(): Wrong number of arguments "+
|
|
15
|
+
"given #{arguments.size} for 1")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
begin
|
|
19
|
+
ip = IPAddr.new(arguments[0])
|
|
20
|
+
rescue ArgumentError
|
|
21
|
+
return false
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
if ip.ipv4? or ip.ipv6? then
|
|
25
|
+
return true
|
|
26
|
+
else
|
|
27
|
+
return false
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#
|
|
2
|
+
# is_mac_address.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:is_mac_address, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Returns true if the string passed to this function is a valid mac address.
|
|
8
|
+
EOS
|
|
9
|
+
) do |arguments|
|
|
10
|
+
|
|
11
|
+
if (arguments.size != 1) then
|
|
12
|
+
raise(Puppet::ParseError, "is_mac_address(): Wrong number of arguments "+
|
|
13
|
+
"given #{arguments.size} for 1")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
mac = arguments[0]
|
|
17
|
+
|
|
18
|
+
if /^[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}:[a-fA-F0-9]{1,2}$/.match(mac) then
|
|
19
|
+
return true
|
|
20
|
+
else
|
|
21
|
+
return false
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#
|
|
2
|
+
# is_numeric.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:is_numeric, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Returns true if the variable passed to this function is a number.
|
|
8
|
+
EOS
|
|
9
|
+
) do |arguments|
|
|
10
|
+
|
|
11
|
+
if (arguments.size != 1) then
|
|
12
|
+
raise(Puppet::ParseError, "is_numeric(): Wrong number of arguments "+
|
|
13
|
+
"given #{arguments.size} for 1")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
value = arguments[0]
|
|
17
|
+
|
|
18
|
+
if value == value.to_f.to_s or value == value.to_i.to_s then
|
|
19
|
+
return true
|
|
20
|
+
else
|
|
21
|
+
return false
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#
|
|
2
|
+
# is_string.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:is_string, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Returns true if the variable passed to this function is a string.
|
|
8
|
+
EOS
|
|
9
|
+
) do |arguments|
|
|
10
|
+
|
|
11
|
+
raise(Puppet::ParseError, "is_string(): Wrong number of arguments " +
|
|
12
|
+
"given (#{arguments.size} for 1)") if arguments.size < 1
|
|
13
|
+
|
|
14
|
+
type = arguments[0]
|
|
15
|
+
|
|
16
|
+
result = type.is_a?(String)
|
|
17
|
+
|
|
18
|
+
if result and (type == type.to_f.to_s or type == type.to_i.to_s) then
|
|
19
|
+
return false
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
return result
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
#
|
|
2
|
+
# join.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:join, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
This function joins an array into a string using a seperator.
|
|
8
|
+
|
|
9
|
+
*Examples:*
|
|
10
|
+
|
|
11
|
+
join(['a','b','c'], ",")
|
|
12
|
+
|
|
13
|
+
Would result in: "a,b,c"
|
|
14
|
+
EOS
|
|
15
|
+
) do |arguments|
|
|
16
|
+
|
|
17
|
+
# Technically we support two arguments but only first is mandatory ...
|
|
18
|
+
raise(Puppet::ParseError, "join(): Wrong number of arguments " +
|
|
19
|
+
"given (#{arguments.size} for 1)") if arguments.size < 1
|
|
20
|
+
|
|
21
|
+
array = arguments[0]
|
|
22
|
+
|
|
23
|
+
unless array.is_a?(Array)
|
|
24
|
+
raise(Puppet::ParseError, 'join(): Requires array to work with')
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
suffix = arguments[1] if arguments[1]
|
|
28
|
+
|
|
29
|
+
if suffix
|
|
30
|
+
unless suffix.is_a?(String)
|
|
31
|
+
raise(Puppet::ParseError, 'join(): Requires string to work with')
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
result = suffix ? array.join(suffix) : array.join
|
|
36
|
+
|
|
37
|
+
return result
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#
|
|
2
|
+
# join.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:join_keys_to_values, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
This function joins each key of a hash to that key's corresponding value with a
|
|
8
|
+
separator. Keys and values are cast to strings. The return value is an array in
|
|
9
|
+
which each element is one joined key/value pair.
|
|
10
|
+
|
|
11
|
+
*Examples:*
|
|
12
|
+
|
|
13
|
+
join_keys_to_values({'a'=>1,'b'=>2}, " is ")
|
|
14
|
+
|
|
15
|
+
Would result in: ["a is 1","b is 2"]
|
|
16
|
+
EOS
|
|
17
|
+
) do |arguments|
|
|
18
|
+
|
|
19
|
+
# Validate the number of arguments.
|
|
20
|
+
if arguments.size != 2
|
|
21
|
+
raise(Puppet::ParseError, "join_keys_to_values(): Takes exactly two " +
|
|
22
|
+
"arguments, but #{arguments.size} given.")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Validate the first argument.
|
|
26
|
+
hash = arguments[0]
|
|
27
|
+
if not hash.is_a?(Hash)
|
|
28
|
+
raise(TypeError, "join_keys_to_values(): The first argument must be a " +
|
|
29
|
+
"hash, but a #{hash.class} was given.")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
# Validate the second argument.
|
|
33
|
+
separator = arguments[1]
|
|
34
|
+
if not separator.is_a?(String)
|
|
35
|
+
raise(TypeError, "join_keys_to_values(): The second argument must be a " +
|
|
36
|
+
"string, but a #{separator.class} was given.")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
# Join the keys to their values.
|
|
40
|
+
hash.map do |k,v|
|
|
41
|
+
String(k) + separator + String(v)
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
# vim: set ts=2 sw=2 et :
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
#
|
|
2
|
+
# keys.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:keys, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
Returns the keys of a hash as an array.
|
|
8
|
+
EOS
|
|
9
|
+
) do |arguments|
|
|
10
|
+
|
|
11
|
+
raise(Puppet::ParseError, "keys(): Wrong number of arguments " +
|
|
12
|
+
"given (#{arguments.size} for 1)") if arguments.size < 1
|
|
13
|
+
|
|
14
|
+
hash = arguments[0]
|
|
15
|
+
|
|
16
|
+
unless hash.is_a?(Hash)
|
|
17
|
+
raise(Puppet::ParseError, 'keys(): Requires hash to work with')
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
result = hash.keys
|
|
21
|
+
|
|
22
|
+
return result
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
# vim: set ts=2 sw=2 et :
|