puppetmodule-stdlib 4.0.1
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/CHANGELOG +253 -0
- data/CONTRIBUTING.md +65 -0
- data/Gemfile +33 -0
- data/LICENSE +19 -0
- data/Modulefile +11 -0
- data/README.markdown +1173 -0
- data/README_DEVELOPER.markdown +35 -0
- data/RELEASE_PROCESS.markdown +24 -0
- data/Rakefile +2 -0
- data/lib/facter/pe_version.rb +53 -0
- data/lib/facter/puppet_vardir.rb +26 -0
- data/lib/facter/root_home.rb +19 -0
- data/lib/facter/util/puppet_settings.rb +21 -0
- data/lib/puppet/parser/functions/abs.rb +36 -0
- data/lib/puppet/parser/functions/any2array.rb +33 -0
- data/lib/puppet/parser/functions/bool2num.rb +49 -0
- data/lib/puppet/parser/functions/capitalize.rb +34 -0
- data/lib/puppet/parser/functions/chomp.rb +35 -0
- data/lib/puppet/parser/functions/chop.rb +37 -0
- data/lib/puppet/parser/functions/concat.rb +37 -0
- data/lib/puppet/parser/functions/count.rb +22 -0
- data/lib/puppet/parser/functions/defined_with_params.rb +35 -0
- data/lib/puppet/parser/functions/delete.rb +46 -0
- data/lib/puppet/parser/functions/delete_at.rb +49 -0
- data/lib/puppet/parser/functions/downcase.rb +33 -0
- data/lib/puppet/parser/functions/empty.rb +28 -0
- data/lib/puppet/parser/functions/ensure_packages.rb +24 -0
- data/lib/puppet/parser/functions/ensure_resource.rb +35 -0
- data/lib/puppet/parser/functions/flatten.rb +33 -0
- data/lib/puppet/parser/functions/floor.rb +20 -0
- data/lib/puppet/parser/functions/fqdn_rotate.rb +46 -0
- data/lib/puppet/parser/functions/get_module_path.rb +17 -0
- data/lib/puppet/parser/functions/getparam.rb +35 -0
- data/lib/puppet/parser/functions/getvar.rb +26 -0
- data/lib/puppet/parser/functions/grep.rb +33 -0
- data/lib/puppet/parser/functions/has_interface_with.rb +52 -0
- data/lib/puppet/parser/functions/has_ip_address.rb +25 -0
- data/lib/puppet/parser/functions/has_ip_network.rb +25 -0
- data/lib/puppet/parser/functions/has_key.rb +28 -0
- data/lib/puppet/parser/functions/hash.rb +41 -0
- data/lib/puppet/parser/functions/is_array.rb +22 -0
- data/lib/puppet/parser/functions/is_domain_name.rb +47 -0
- data/lib/puppet/parser/functions/is_float.rb +27 -0
- data/lib/puppet/parser/functions/is_function_available.rb +23 -0
- data/lib/puppet/parser/functions/is_hash.rb +22 -0
- data/lib/puppet/parser/functions/is_integer.rb +27 -0
- data/lib/puppet/parser/functions/is_ip_address.rb +32 -0
- data/lib/puppet/parser/functions/is_mac_address.rb +27 -0
- data/lib/puppet/parser/functions/is_numeric.rb +27 -0
- data/lib/puppet/parser/functions/is_string.rb +26 -0
- data/lib/puppet/parser/functions/join.rb +41 -0
- data/lib/puppet/parser/functions/join_keys_to_values.rb +47 -0
- data/lib/puppet/parser/functions/keys.rb +26 -0
- data/lib/puppet/parser/functions/loadyaml.rb +20 -0
- data/lib/puppet/parser/functions/lstrip.rb +33 -0
- data/lib/puppet/parser/functions/max.rb +21 -0
- data/lib/puppet/parser/functions/member.rb +44 -0
- data/lib/puppet/parser/functions/merge.rb +33 -0
- data/lib/puppet/parser/functions/min.rb +21 -0
- data/lib/puppet/parser/functions/num2bool.rb +43 -0
- data/lib/puppet/parser/functions/parsejson.rb +24 -0
- data/lib/puppet/parser/functions/parseyaml.rb +24 -0
- data/lib/puppet/parser/functions/pick.rb +29 -0
- data/lib/puppet/parser/functions/prefix.rb +45 -0
- data/lib/puppet/parser/functions/range.rb +80 -0
- data/lib/puppet/parser/functions/reject.rb +31 -0
- data/lib/puppet/parser/functions/reverse.rb +28 -0
- data/lib/puppet/parser/functions/rstrip.rb +32 -0
- data/lib/puppet/parser/functions/shuffle.rb +46 -0
- data/lib/puppet/parser/functions/size.rb +48 -0
- data/lib/puppet/parser/functions/sort.rb +27 -0
- data/lib/puppet/parser/functions/squeeze.rb +36 -0
- data/lib/puppet/parser/functions/str2bool.rb +46 -0
- data/lib/puppet/parser/functions/str2saltedsha512.rb +32 -0
- data/lib/puppet/parser/functions/strftime.rb +107 -0
- data/lib/puppet/parser/functions/strip.rb +39 -0
- data/lib/puppet/parser/functions/suffix.rb +45 -0
- data/lib/puppet/parser/functions/swapcase.rb +39 -0
- data/lib/puppet/parser/functions/time.rb +49 -0
- data/lib/puppet/parser/functions/to_bytes.rb +28 -0
- data/lib/puppet/parser/functions/type.rb +50 -0
- data/lib/puppet/parser/functions/unique.rb +51 -0
- data/lib/puppet/parser/functions/upcase.rb +41 -0
- data/lib/puppet/parser/functions/uriescape.rb +36 -0
- data/lib/puppet/parser/functions/validate_absolute_path.rb +56 -0
- data/lib/puppet/parser/functions/validate_array.rb +33 -0
- data/lib/puppet/parser/functions/validate_augeas.rb +81 -0
- data/lib/puppet/parser/functions/validate_bool.rb +34 -0
- data/lib/puppet/parser/functions/validate_cmd.rb +47 -0
- data/lib/puppet/parser/functions/validate_hash.rb +33 -0
- data/lib/puppet/parser/functions/validate_re.rb +40 -0
- data/lib/puppet/parser/functions/validate_slength.rb +52 -0
- data/lib/puppet/parser/functions/validate_string.rb +33 -0
- data/lib/puppet/parser/functions/values.rb +39 -0
- data/lib/puppet/parser/functions/values_at.rb +98 -0
- data/lib/puppet/parser/functions/zip.rb +65 -0
- data/lib/puppet/provider/file_line/ruby.rb +59 -0
- data/lib/puppet/type/anchor.rb +41 -0
- data/lib/puppet/type/file_line.rb +70 -0
- data/manifests/init.pp +20 -0
- data/manifests/stages.pp +43 -0
- data/spec/functions/defined_with_params_spec.rb +37 -0
- data/spec/functions/ensure_packages_spec.rb +42 -0
- data/spec/functions/ensure_resource_spec.rb +40 -0
- data/spec/functions/getparam_spec.rb +34 -0
- data/spec/monkey_patches/alias_should_to_must.rb +8 -0
- data/spec/monkey_patches/publicize_methods.rb +10 -0
- data/spec/spec.opts +6 -0
- data/spec/spec_helper.rb +28 -0
- data/spec/unit/facter/pe_version_spec.rb +76 -0
- data/spec/unit/facter/root_home_spec.rb +40 -0
- data/spec/unit/facter/util/puppet_settings_spec.rb +35 -0
- data/spec/unit/puppet/parser/functions/abs_spec.rb +25 -0
- data/spec/unit/puppet/parser/functions/any2array_spec.rb +55 -0
- data/spec/unit/puppet/parser/functions/bool2num_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/capitalize_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/chomp_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/chop_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/concat_spec.rb +15 -0
- data/spec/unit/puppet/parser/functions/count_spec.rb +31 -0
- data/spec/unit/puppet/parser/functions/delete_at_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/delete_spec.rb +38 -0
- data/spec/unit/puppet/parser/functions/downcase_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/empty_spec.rb +23 -0
- data/spec/unit/puppet/parser/functions/flatten_spec.rb +27 -0
- data/spec/unit/puppet/parser/functions/floor_spec.rb +39 -0
- data/spec/unit/puppet/parser/functions/fqdn_rotate_spec.rb +33 -0
- data/spec/unit/puppet/parser/functions/get_module_path_spec.rb +46 -0
- data/spec/unit/puppet/parser/functions/getvar_spec.rb +37 -0
- data/spec/unit/puppet/parser/functions/grep_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/has_interface_with_spec.rb +64 -0
- data/spec/unit/puppet/parser/functions/has_ip_address_spec.rb +39 -0
- data/spec/unit/puppet/parser/functions/has_ip_network_spec.rb +36 -0
- data/spec/unit/puppet/parser/functions/has_key_spec.rb +42 -0
- data/spec/unit/puppet/parser/functions/hash_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/is_array_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/is_domain_name_spec.rb +64 -0
- data/spec/unit/puppet/parser/functions/is_float_spec.rb +33 -0
- data/spec/unit/puppet/parser/functions/is_function_available.rb +31 -0
- data/spec/unit/puppet/parser/functions/is_hash_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/is_integer_spec.rb +34 -0
- data/spec/unit/puppet/parser/functions/is_ip_address_spec.rb +39 -0
- data/spec/unit/puppet/parser/functions/is_mac_address_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/is_numeric_spec.rb +39 -0
- data/spec/unit/puppet/parser/functions/is_string_spec.rb +34 -0
- data/spec/unit/puppet/parser/functions/join_keys_to_values_spec.rb +40 -0
- data/spec/unit/puppet/parser/functions/join_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/keys_spec.rb +21 -0
- data/spec/unit/puppet/parser/functions/lstrip_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/max_spec.rb +27 -0
- data/spec/unit/puppet/parser/functions/member_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/merge_spec.rb +47 -0
- data/spec/unit/puppet/parser/functions/min_spec.rb +27 -0
- data/spec/unit/puppet/parser/functions/num2bool_spec.rb +67 -0
- data/spec/unit/puppet/parser/functions/parsejson_spec.rb +22 -0
- data/spec/unit/puppet/parser/functions/parseyaml_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/pick_spec.rb +34 -0
- data/spec/unit/puppet/parser/functions/prefix_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/range_spec.rb +34 -0
- data/spec/unit/puppet/parser/functions/reject_spec.rb +20 -0
- data/spec/unit/puppet/parser/functions/reverse_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/rstrip_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/shuffle_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/size_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/sort_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/squeeze_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/str2bool_spec.rb +31 -0
- data/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb +45 -0
- data/spec/unit/puppet/parser/functions/strftime_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/strip_spec.rb +18 -0
- data/spec/unit/puppet/parser/functions/suffix_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/swapcase_spec.rb +19 -0
- data/spec/unit/puppet/parser/functions/time_spec.rb +29 -0
- data/spec/unit/puppet/parser/functions/to_bytes_spec.rb +58 -0
- data/spec/unit/puppet/parser/functions/type_spec.rb +43 -0
- data/spec/unit/puppet/parser/functions/unique_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/upcase_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/uriescape_spec.rb +24 -0
- data/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb +83 -0
- data/spec/unit/puppet/parser/functions/validate_array_spec.rb +38 -0
- data/spec/unit/puppet/parser/functions/validate_augeas_spec.rb +102 -0
- data/spec/unit/puppet/parser/functions/validate_bool_spec.rb +51 -0
- data/spec/unit/puppet/parser/functions/validate_cmd_spec.rb +81 -0
- data/spec/unit/puppet/parser/functions/validate_hash_spec.rb +43 -0
- data/spec/unit/puppet/parser/functions/validate_re_spec.rb +76 -0
- data/spec/unit/puppet/parser/functions/validate_slength_spec.rb +48 -0
- data/spec/unit/puppet/parser/functions/validate_string_spec.rb +60 -0
- data/spec/unit/puppet/parser/functions/values_at_spec.rb +38 -0
- data/spec/unit/puppet/parser/functions/values_spec.rb +31 -0
- data/spec/unit/puppet/parser/functions/zip_spec.rb +15 -0
- data/spec/unit/puppet/provider/file_line/ruby_spec.rb +127 -0
- data/spec/unit/puppet/type/anchor_spec.rb +11 -0
- data/spec/unit/puppet/type/file_line_spec.rb +69 -0
- data/spec/watchr.rb +86 -0
- data/tests/file_line.pp +9 -0
- data/tests/has_interface_with.pp +10 -0
- data/tests/has_ip_address.pp +3 -0
- data/tests/has_ip_network.pp +4 -0
- data/tests/init.pp +1 -0
- metadata +252 -0
|
@@ -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 and !value.is_a? Float 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,23 @@
|
|
|
1
|
+
#
|
|
2
|
+
# is_function_available.rb
|
|
3
|
+
#
|
|
4
|
+
|
|
5
|
+
module Puppet::Parser::Functions
|
|
6
|
+
newfunction(:is_function_available, :type => :rvalue, :doc => <<-EOS
|
|
7
|
+
This function accepts a string as an argument, determines whether the
|
|
8
|
+
Puppet runtime has access to a function by that name. It returns a
|
|
9
|
+
true if the function exists, false if not.
|
|
10
|
+
EOS
|
|
11
|
+
) do |arguments|
|
|
12
|
+
|
|
13
|
+
if (arguments.size != 1) then
|
|
14
|
+
raise(Puppet::ParseError, "is_function_available?(): Wrong number of arguments "+
|
|
15
|
+
"given #{arguments.size} for 1")
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
function = Puppet::Parser::Functions.function(arguments[0].to_sym)
|
|
19
|
+
function.is_a?(String) and not function.empty?
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
# 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 and !value.is_a? Fixnum 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 :
|