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.
Files changed (200) hide show
  1. data/CHANGELOG +253 -0
  2. data/CONTRIBUTING.md +65 -0
  3. data/Gemfile +33 -0
  4. data/LICENSE +19 -0
  5. data/Modulefile +11 -0
  6. data/README.markdown +1173 -0
  7. data/README_DEVELOPER.markdown +35 -0
  8. data/RELEASE_PROCESS.markdown +24 -0
  9. data/Rakefile +2 -0
  10. data/lib/facter/pe_version.rb +53 -0
  11. data/lib/facter/puppet_vardir.rb +26 -0
  12. data/lib/facter/root_home.rb +19 -0
  13. data/lib/facter/util/puppet_settings.rb +21 -0
  14. data/lib/puppet/parser/functions/abs.rb +36 -0
  15. data/lib/puppet/parser/functions/any2array.rb +33 -0
  16. data/lib/puppet/parser/functions/bool2num.rb +49 -0
  17. data/lib/puppet/parser/functions/capitalize.rb +34 -0
  18. data/lib/puppet/parser/functions/chomp.rb +35 -0
  19. data/lib/puppet/parser/functions/chop.rb +37 -0
  20. data/lib/puppet/parser/functions/concat.rb +37 -0
  21. data/lib/puppet/parser/functions/count.rb +22 -0
  22. data/lib/puppet/parser/functions/defined_with_params.rb +35 -0
  23. data/lib/puppet/parser/functions/delete.rb +46 -0
  24. data/lib/puppet/parser/functions/delete_at.rb +49 -0
  25. data/lib/puppet/parser/functions/downcase.rb +33 -0
  26. data/lib/puppet/parser/functions/empty.rb +28 -0
  27. data/lib/puppet/parser/functions/ensure_packages.rb +24 -0
  28. data/lib/puppet/parser/functions/ensure_resource.rb +35 -0
  29. data/lib/puppet/parser/functions/flatten.rb +33 -0
  30. data/lib/puppet/parser/functions/floor.rb +20 -0
  31. data/lib/puppet/parser/functions/fqdn_rotate.rb +46 -0
  32. data/lib/puppet/parser/functions/get_module_path.rb +17 -0
  33. data/lib/puppet/parser/functions/getparam.rb +35 -0
  34. data/lib/puppet/parser/functions/getvar.rb +26 -0
  35. data/lib/puppet/parser/functions/grep.rb +33 -0
  36. data/lib/puppet/parser/functions/has_interface_with.rb +52 -0
  37. data/lib/puppet/parser/functions/has_ip_address.rb +25 -0
  38. data/lib/puppet/parser/functions/has_ip_network.rb +25 -0
  39. data/lib/puppet/parser/functions/has_key.rb +28 -0
  40. data/lib/puppet/parser/functions/hash.rb +41 -0
  41. data/lib/puppet/parser/functions/is_array.rb +22 -0
  42. data/lib/puppet/parser/functions/is_domain_name.rb +47 -0
  43. data/lib/puppet/parser/functions/is_float.rb +27 -0
  44. data/lib/puppet/parser/functions/is_function_available.rb +23 -0
  45. data/lib/puppet/parser/functions/is_hash.rb +22 -0
  46. data/lib/puppet/parser/functions/is_integer.rb +27 -0
  47. data/lib/puppet/parser/functions/is_ip_address.rb +32 -0
  48. data/lib/puppet/parser/functions/is_mac_address.rb +27 -0
  49. data/lib/puppet/parser/functions/is_numeric.rb +27 -0
  50. data/lib/puppet/parser/functions/is_string.rb +26 -0
  51. data/lib/puppet/parser/functions/join.rb +41 -0
  52. data/lib/puppet/parser/functions/join_keys_to_values.rb +47 -0
  53. data/lib/puppet/parser/functions/keys.rb +26 -0
  54. data/lib/puppet/parser/functions/loadyaml.rb +20 -0
  55. data/lib/puppet/parser/functions/lstrip.rb +33 -0
  56. data/lib/puppet/parser/functions/max.rb +21 -0
  57. data/lib/puppet/parser/functions/member.rb +44 -0
  58. data/lib/puppet/parser/functions/merge.rb +33 -0
  59. data/lib/puppet/parser/functions/min.rb +21 -0
  60. data/lib/puppet/parser/functions/num2bool.rb +43 -0
  61. data/lib/puppet/parser/functions/parsejson.rb +24 -0
  62. data/lib/puppet/parser/functions/parseyaml.rb +24 -0
  63. data/lib/puppet/parser/functions/pick.rb +29 -0
  64. data/lib/puppet/parser/functions/prefix.rb +45 -0
  65. data/lib/puppet/parser/functions/range.rb +80 -0
  66. data/lib/puppet/parser/functions/reject.rb +31 -0
  67. data/lib/puppet/parser/functions/reverse.rb +28 -0
  68. data/lib/puppet/parser/functions/rstrip.rb +32 -0
  69. data/lib/puppet/parser/functions/shuffle.rb +46 -0
  70. data/lib/puppet/parser/functions/size.rb +48 -0
  71. data/lib/puppet/parser/functions/sort.rb +27 -0
  72. data/lib/puppet/parser/functions/squeeze.rb +36 -0
  73. data/lib/puppet/parser/functions/str2bool.rb +46 -0
  74. data/lib/puppet/parser/functions/str2saltedsha512.rb +32 -0
  75. data/lib/puppet/parser/functions/strftime.rb +107 -0
  76. data/lib/puppet/parser/functions/strip.rb +39 -0
  77. data/lib/puppet/parser/functions/suffix.rb +45 -0
  78. data/lib/puppet/parser/functions/swapcase.rb +39 -0
  79. data/lib/puppet/parser/functions/time.rb +49 -0
  80. data/lib/puppet/parser/functions/to_bytes.rb +28 -0
  81. data/lib/puppet/parser/functions/type.rb +50 -0
  82. data/lib/puppet/parser/functions/unique.rb +51 -0
  83. data/lib/puppet/parser/functions/upcase.rb +41 -0
  84. data/lib/puppet/parser/functions/uriescape.rb +36 -0
  85. data/lib/puppet/parser/functions/validate_absolute_path.rb +56 -0
  86. data/lib/puppet/parser/functions/validate_array.rb +33 -0
  87. data/lib/puppet/parser/functions/validate_augeas.rb +81 -0
  88. data/lib/puppet/parser/functions/validate_bool.rb +34 -0
  89. data/lib/puppet/parser/functions/validate_cmd.rb +47 -0
  90. data/lib/puppet/parser/functions/validate_hash.rb +33 -0
  91. data/lib/puppet/parser/functions/validate_re.rb +40 -0
  92. data/lib/puppet/parser/functions/validate_slength.rb +52 -0
  93. data/lib/puppet/parser/functions/validate_string.rb +33 -0
  94. data/lib/puppet/parser/functions/values.rb +39 -0
  95. data/lib/puppet/parser/functions/values_at.rb +98 -0
  96. data/lib/puppet/parser/functions/zip.rb +65 -0
  97. data/lib/puppet/provider/file_line/ruby.rb +59 -0
  98. data/lib/puppet/type/anchor.rb +41 -0
  99. data/lib/puppet/type/file_line.rb +70 -0
  100. data/manifests/init.pp +20 -0
  101. data/manifests/stages.pp +43 -0
  102. data/spec/functions/defined_with_params_spec.rb +37 -0
  103. data/spec/functions/ensure_packages_spec.rb +42 -0
  104. data/spec/functions/ensure_resource_spec.rb +40 -0
  105. data/spec/functions/getparam_spec.rb +34 -0
  106. data/spec/monkey_patches/alias_should_to_must.rb +8 -0
  107. data/spec/monkey_patches/publicize_methods.rb +10 -0
  108. data/spec/spec.opts +6 -0
  109. data/spec/spec_helper.rb +28 -0
  110. data/spec/unit/facter/pe_version_spec.rb +76 -0
  111. data/spec/unit/facter/root_home_spec.rb +40 -0
  112. data/spec/unit/facter/util/puppet_settings_spec.rb +35 -0
  113. data/spec/unit/puppet/parser/functions/abs_spec.rb +25 -0
  114. data/spec/unit/puppet/parser/functions/any2array_spec.rb +55 -0
  115. data/spec/unit/puppet/parser/functions/bool2num_spec.rb +24 -0
  116. data/spec/unit/puppet/parser/functions/capitalize_spec.rb +19 -0
  117. data/spec/unit/puppet/parser/functions/chomp_spec.rb +19 -0
  118. data/spec/unit/puppet/parser/functions/chop_spec.rb +19 -0
  119. data/spec/unit/puppet/parser/functions/concat_spec.rb +15 -0
  120. data/spec/unit/puppet/parser/functions/count_spec.rb +31 -0
  121. data/spec/unit/puppet/parser/functions/delete_at_spec.rb +19 -0
  122. data/spec/unit/puppet/parser/functions/delete_spec.rb +38 -0
  123. data/spec/unit/puppet/parser/functions/downcase_spec.rb +24 -0
  124. data/spec/unit/puppet/parser/functions/empty_spec.rb +23 -0
  125. data/spec/unit/puppet/parser/functions/flatten_spec.rb +27 -0
  126. data/spec/unit/puppet/parser/functions/floor_spec.rb +39 -0
  127. data/spec/unit/puppet/parser/functions/fqdn_rotate_spec.rb +33 -0
  128. data/spec/unit/puppet/parser/functions/get_module_path_spec.rb +46 -0
  129. data/spec/unit/puppet/parser/functions/getvar_spec.rb +37 -0
  130. data/spec/unit/puppet/parser/functions/grep_spec.rb +19 -0
  131. data/spec/unit/puppet/parser/functions/has_interface_with_spec.rb +64 -0
  132. data/spec/unit/puppet/parser/functions/has_ip_address_spec.rb +39 -0
  133. data/spec/unit/puppet/parser/functions/has_ip_network_spec.rb +36 -0
  134. data/spec/unit/puppet/parser/functions/has_key_spec.rb +42 -0
  135. data/spec/unit/puppet/parser/functions/hash_spec.rb +19 -0
  136. data/spec/unit/puppet/parser/functions/is_array_spec.rb +29 -0
  137. data/spec/unit/puppet/parser/functions/is_domain_name_spec.rb +64 -0
  138. data/spec/unit/puppet/parser/functions/is_float_spec.rb +33 -0
  139. data/spec/unit/puppet/parser/functions/is_function_available.rb +31 -0
  140. data/spec/unit/puppet/parser/functions/is_hash_spec.rb +29 -0
  141. data/spec/unit/puppet/parser/functions/is_integer_spec.rb +34 -0
  142. data/spec/unit/puppet/parser/functions/is_ip_address_spec.rb +39 -0
  143. data/spec/unit/puppet/parser/functions/is_mac_address_spec.rb +29 -0
  144. data/spec/unit/puppet/parser/functions/is_numeric_spec.rb +39 -0
  145. data/spec/unit/puppet/parser/functions/is_string_spec.rb +34 -0
  146. data/spec/unit/puppet/parser/functions/join_keys_to_values_spec.rb +40 -0
  147. data/spec/unit/puppet/parser/functions/join_spec.rb +19 -0
  148. data/spec/unit/puppet/parser/functions/keys_spec.rb +21 -0
  149. data/spec/unit/puppet/parser/functions/lstrip_spec.rb +19 -0
  150. data/spec/unit/puppet/parser/functions/max_spec.rb +27 -0
  151. data/spec/unit/puppet/parser/functions/member_spec.rb +24 -0
  152. data/spec/unit/puppet/parser/functions/merge_spec.rb +47 -0
  153. data/spec/unit/puppet/parser/functions/min_spec.rb +27 -0
  154. data/spec/unit/puppet/parser/functions/num2bool_spec.rb +67 -0
  155. data/spec/unit/puppet/parser/functions/parsejson_spec.rb +22 -0
  156. data/spec/unit/puppet/parser/functions/parseyaml_spec.rb +24 -0
  157. data/spec/unit/puppet/parser/functions/pick_spec.rb +34 -0
  158. data/spec/unit/puppet/parser/functions/prefix_spec.rb +19 -0
  159. data/spec/unit/puppet/parser/functions/range_spec.rb +34 -0
  160. data/spec/unit/puppet/parser/functions/reject_spec.rb +20 -0
  161. data/spec/unit/puppet/parser/functions/reverse_spec.rb +19 -0
  162. data/spec/unit/puppet/parser/functions/rstrip_spec.rb +24 -0
  163. data/spec/unit/puppet/parser/functions/shuffle_spec.rb +24 -0
  164. data/spec/unit/puppet/parser/functions/size_spec.rb +24 -0
  165. data/spec/unit/puppet/parser/functions/sort_spec.rb +24 -0
  166. data/spec/unit/puppet/parser/functions/squeeze_spec.rb +24 -0
  167. data/spec/unit/puppet/parser/functions/str2bool_spec.rb +31 -0
  168. data/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb +45 -0
  169. data/spec/unit/puppet/parser/functions/strftime_spec.rb +29 -0
  170. data/spec/unit/puppet/parser/functions/strip_spec.rb +18 -0
  171. data/spec/unit/puppet/parser/functions/suffix_spec.rb +19 -0
  172. data/spec/unit/puppet/parser/functions/swapcase_spec.rb +19 -0
  173. data/spec/unit/puppet/parser/functions/time_spec.rb +29 -0
  174. data/spec/unit/puppet/parser/functions/to_bytes_spec.rb +58 -0
  175. data/spec/unit/puppet/parser/functions/type_spec.rb +43 -0
  176. data/spec/unit/puppet/parser/functions/unique_spec.rb +24 -0
  177. data/spec/unit/puppet/parser/functions/upcase_spec.rb +24 -0
  178. data/spec/unit/puppet/parser/functions/uriescape_spec.rb +24 -0
  179. data/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb +83 -0
  180. data/spec/unit/puppet/parser/functions/validate_array_spec.rb +38 -0
  181. data/spec/unit/puppet/parser/functions/validate_augeas_spec.rb +102 -0
  182. data/spec/unit/puppet/parser/functions/validate_bool_spec.rb +51 -0
  183. data/spec/unit/puppet/parser/functions/validate_cmd_spec.rb +81 -0
  184. data/spec/unit/puppet/parser/functions/validate_hash_spec.rb +43 -0
  185. data/spec/unit/puppet/parser/functions/validate_re_spec.rb +76 -0
  186. data/spec/unit/puppet/parser/functions/validate_slength_spec.rb +48 -0
  187. data/spec/unit/puppet/parser/functions/validate_string_spec.rb +60 -0
  188. data/spec/unit/puppet/parser/functions/values_at_spec.rb +38 -0
  189. data/spec/unit/puppet/parser/functions/values_spec.rb +31 -0
  190. data/spec/unit/puppet/parser/functions/zip_spec.rb +15 -0
  191. data/spec/unit/puppet/provider/file_line/ruby_spec.rb +127 -0
  192. data/spec/unit/puppet/type/anchor_spec.rb +11 -0
  193. data/spec/unit/puppet/type/file_line_spec.rb +69 -0
  194. data/spec/watchr.rb +86 -0
  195. data/tests/file_line.pp +9 -0
  196. data/tests/has_interface_with.pp +10 -0
  197. data/tests/has_ip_address.pp +3 -0
  198. data/tests/has_ip_network.pp +4 -0
  199. data/tests/init.pp +1 -0
  200. 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 :