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.
Files changed (241) hide show
  1. data/Vagrantfile +25 -0
  2. data/bin/kiosk +55 -0
  3. data/bin/start_kiosk.sh +3 -0
  4. data/lib/Procfile.kiosk +1 -0
  5. data/lib/internal_service.rb +59 -0
  6. data/lib/json-simple-1.1.1.jar +0 -0
  7. data/lib/kiosk.rb +57 -0
  8. data/lib/kiosks/logger/output_logger.rb +16 -0
  9. data/lib/mall.rb +77 -0
  10. data/lib/mallcop.rb +9 -0
  11. data/lib/remote_service.rb +61 -0
  12. data/lib/tasks/local_mall.rake +93 -0
  13. data/provision/bootstrap.sh +21 -0
  14. data/provision/manifests/default.pp +49 -0
  15. data/provision/modules/apt/CHANGELOG +83 -0
  16. data/provision/modules/apt/LICENSE +19 -0
  17. data/provision/modules/apt/Modulefile +14 -0
  18. data/provision/modules/apt/README.md +119 -0
  19. data/provision/modules/apt/Rakefile +1 -0
  20. data/provision/modules/apt/manifests/backports.pp +48 -0
  21. data/provision/modules/apt/manifests/builddep.pp +16 -0
  22. data/provision/modules/apt/manifests/conf.pp +18 -0
  23. data/provision/modules/apt/manifests/debian/testing.pp +21 -0
  24. data/provision/modules/apt/manifests/debian/unstable.pp +21 -0
  25. data/provision/modules/apt/manifests/force.pp +24 -0
  26. data/provision/modules/apt/manifests/init.pp +114 -0
  27. data/provision/modules/apt/manifests/key.pp +80 -0
  28. data/provision/modules/apt/manifests/params.pp +23 -0
  29. data/provision/modules/apt/manifests/pin.pp +48 -0
  30. data/provision/modules/apt/manifests/ppa.pp +49 -0
  31. data/provision/modules/apt/manifests/release.pp +17 -0
  32. data/provision/modules/apt/manifests/source.pp +83 -0
  33. data/provision/modules/apt/manifests/update.pp +9 -0
  34. data/provision/modules/apt/spec/classes/apt_spec.rb +129 -0
  35. data/provision/modules/apt/spec/classes/backports_spec.rb +71 -0
  36. data/provision/modules/apt/spec/classes/debian_testing_spec.rb +14 -0
  37. data/provision/modules/apt/spec/classes/debian_unstable_spec.rb +14 -0
  38. data/provision/modules/apt/spec/classes/params_spec.rb +13 -0
  39. data/provision/modules/apt/spec/classes/release_spec.rb +22 -0
  40. data/provision/modules/apt/spec/defines/builddep_spec.rb +18 -0
  41. data/provision/modules/apt/spec/defines/conf_spec.rb +57 -0
  42. data/provision/modules/apt/spec/defines/force_spec.rb +41 -0
  43. data/provision/modules/apt/spec/defines/key_spec.rb +123 -0
  44. data/provision/modules/apt/spec/defines/pin_spec.rb +58 -0
  45. data/provision/modules/apt/spec/defines/ppa_spec.rb +92 -0
  46. data/provision/modules/apt/spec/defines/source_spec.rb +158 -0
  47. data/provision/modules/apt/spec/fixtures/manifests/site.pp +0 -0
  48. data/provision/modules/apt/spec/spec_helper.rb +1 -0
  49. data/provision/modules/apt/templates/pin.pref.erb +5 -0
  50. data/provision/modules/apt/templates/source.list.erb +5 -0
  51. data/provision/modules/apt/tests/builddep.pp +2 -0
  52. data/provision/modules/apt/tests/debian/testing.pp +2 -0
  53. data/provision/modules/apt/tests/debian/unstable.pp +2 -0
  54. data/provision/modules/apt/tests/force.pp +7 -0
  55. data/provision/modules/apt/tests/init.pp +1 -0
  56. data/provision/modules/apt/tests/key.pp +5 -0
  57. data/provision/modules/apt/tests/params.pp +1 -0
  58. data/provision/modules/apt/tests/pin.pp +5 -0
  59. data/provision/modules/apt/tests/ppa.pp +4 -0
  60. data/provision/modules/apt/tests/release.pp +4 -0
  61. data/provision/modules/apt/tests/source.pp +29 -0
  62. data/provision/modules/stdlib/CHANGELOG +177 -0
  63. data/provision/modules/stdlib/LICENSE +19 -0
  64. data/provision/modules/stdlib/Modulefile +11 -0
  65. data/provision/modules/stdlib/README.markdown +929 -0
  66. data/provision/modules/stdlib/README_DEVELOPER.markdown +35 -0
  67. data/provision/modules/stdlib/RELEASE_PROCESS.markdown +24 -0
  68. data/provision/modules/stdlib/Rakefile +2 -0
  69. data/provision/modules/stdlib/lib/facter/pe_version.rb +53 -0
  70. data/provision/modules/stdlib/lib/facter/puppet_vardir.rb +26 -0
  71. data/provision/modules/stdlib/lib/facter/root_home.rb +19 -0
  72. data/provision/modules/stdlib/lib/facter/util/puppet_settings.rb +21 -0
  73. data/provision/modules/stdlib/lib/puppet/parser/functions/abs.rb +36 -0
  74. data/provision/modules/stdlib/lib/puppet/parser/functions/bool2num.rb +49 -0
  75. data/provision/modules/stdlib/lib/puppet/parser/functions/capitalize.rb +34 -0
  76. data/provision/modules/stdlib/lib/puppet/parser/functions/chomp.rb +35 -0
  77. data/provision/modules/stdlib/lib/puppet/parser/functions/chop.rb +37 -0
  78. data/provision/modules/stdlib/lib/puppet/parser/functions/defined_with_params.rb +35 -0
  79. data/provision/modules/stdlib/lib/puppet/parser/functions/delete.rb +46 -0
  80. data/provision/modules/stdlib/lib/puppet/parser/functions/delete_at.rb +49 -0
  81. data/provision/modules/stdlib/lib/puppet/parser/functions/downcase.rb +33 -0
  82. data/provision/modules/stdlib/lib/puppet/parser/functions/empty.rb +28 -0
  83. data/provision/modules/stdlib/lib/puppet/parser/functions/ensure_packages.rb +24 -0
  84. data/provision/modules/stdlib/lib/puppet/parser/functions/ensure_resource.rb +35 -0
  85. data/provision/modules/stdlib/lib/puppet/parser/functions/flatten.rb +33 -0
  86. data/provision/modules/stdlib/lib/puppet/parser/functions/fqdn_rotate.rb +46 -0
  87. data/provision/modules/stdlib/lib/puppet/parser/functions/get_module_path.rb +17 -0
  88. data/provision/modules/stdlib/lib/puppet/parser/functions/getvar.rb +26 -0
  89. data/provision/modules/stdlib/lib/puppet/parser/functions/grep.rb +33 -0
  90. data/provision/modules/stdlib/lib/puppet/parser/functions/has_interface_with.rb +52 -0
  91. data/provision/modules/stdlib/lib/puppet/parser/functions/has_ip_address.rb +25 -0
  92. data/provision/modules/stdlib/lib/puppet/parser/functions/has_ip_network.rb +25 -0
  93. data/provision/modules/stdlib/lib/puppet/parser/functions/has_key.rb +28 -0
  94. data/provision/modules/stdlib/lib/puppet/parser/functions/hash.rb +41 -0
  95. data/provision/modules/stdlib/lib/puppet/parser/functions/is_array.rb +22 -0
  96. data/provision/modules/stdlib/lib/puppet/parser/functions/is_domain_name.rb +47 -0
  97. data/provision/modules/stdlib/lib/puppet/parser/functions/is_float.rb +27 -0
  98. data/provision/modules/stdlib/lib/puppet/parser/functions/is_hash.rb +22 -0
  99. data/provision/modules/stdlib/lib/puppet/parser/functions/is_integer.rb +27 -0
  100. data/provision/modules/stdlib/lib/puppet/parser/functions/is_ip_address.rb +32 -0
  101. data/provision/modules/stdlib/lib/puppet/parser/functions/is_mac_address.rb +27 -0
  102. data/provision/modules/stdlib/lib/puppet/parser/functions/is_numeric.rb +27 -0
  103. data/provision/modules/stdlib/lib/puppet/parser/functions/is_string.rb +26 -0
  104. data/provision/modules/stdlib/lib/puppet/parser/functions/join.rb +41 -0
  105. data/provision/modules/stdlib/lib/puppet/parser/functions/join_keys_to_values.rb +47 -0
  106. data/provision/modules/stdlib/lib/puppet/parser/functions/keys.rb +26 -0
  107. data/provision/modules/stdlib/lib/puppet/parser/functions/loadyaml.rb +20 -0
  108. data/provision/modules/stdlib/lib/puppet/parser/functions/lstrip.rb +33 -0
  109. data/provision/modules/stdlib/lib/puppet/parser/functions/max.rb +13 -0
  110. data/provision/modules/stdlib/lib/puppet/parser/functions/member.rb +44 -0
  111. data/provision/modules/stdlib/lib/puppet/parser/functions/merge.rb +33 -0
  112. data/provision/modules/stdlib/lib/puppet/parser/functions/min.rb +13 -0
  113. data/provision/modules/stdlib/lib/puppet/parser/functions/num2bool.rb +40 -0
  114. data/provision/modules/stdlib/lib/puppet/parser/functions/parsejson.rb +24 -0
  115. data/provision/modules/stdlib/lib/puppet/parser/functions/parseyaml.rb +24 -0
  116. data/provision/modules/stdlib/lib/puppet/parser/functions/pick.rb +29 -0
  117. data/provision/modules/stdlib/lib/puppet/parser/functions/prefix.rb +45 -0
  118. data/provision/modules/stdlib/lib/puppet/parser/functions/range.rb +80 -0
  119. data/provision/modules/stdlib/lib/puppet/parser/functions/reject.rb +31 -0
  120. data/provision/modules/stdlib/lib/puppet/parser/functions/reverse.rb +28 -0
  121. data/provision/modules/stdlib/lib/puppet/parser/functions/rstrip.rb +32 -0
  122. data/provision/modules/stdlib/lib/puppet/parser/functions/shuffle.rb +46 -0
  123. data/provision/modules/stdlib/lib/puppet/parser/functions/size.rb +48 -0
  124. data/provision/modules/stdlib/lib/puppet/parser/functions/sort.rb +27 -0
  125. data/provision/modules/stdlib/lib/puppet/parser/functions/squeeze.rb +36 -0
  126. data/provision/modules/stdlib/lib/puppet/parser/functions/str2bool.rb +41 -0
  127. data/provision/modules/stdlib/lib/puppet/parser/functions/str2saltedsha512.rb +32 -0
  128. data/provision/modules/stdlib/lib/puppet/parser/functions/strftime.rb +107 -0
  129. data/provision/modules/stdlib/lib/puppet/parser/functions/strip.rb +39 -0
  130. data/provision/modules/stdlib/lib/puppet/parser/functions/swapcase.rb +39 -0
  131. data/provision/modules/stdlib/lib/puppet/parser/functions/time.rb +49 -0
  132. data/provision/modules/stdlib/lib/puppet/parser/functions/to_bytes.rb +28 -0
  133. data/provision/modules/stdlib/lib/puppet/parser/functions/type.rb +50 -0
  134. data/provision/modules/stdlib/lib/puppet/parser/functions/unique.rb +51 -0
  135. data/provision/modules/stdlib/lib/puppet/parser/functions/upcase.rb +41 -0
  136. data/provision/modules/stdlib/lib/puppet/parser/functions/uriescape.rb +36 -0
  137. data/provision/modules/stdlib/lib/puppet/parser/functions/validate_absolute_path.rb +56 -0
  138. data/provision/modules/stdlib/lib/puppet/parser/functions/validate_array.rb +33 -0
  139. data/provision/modules/stdlib/lib/puppet/parser/functions/validate_bool.rb +34 -0
  140. data/provision/modules/stdlib/lib/puppet/parser/functions/validate_hash.rb +33 -0
  141. data/provision/modules/stdlib/lib/puppet/parser/functions/validate_re.rb +40 -0
  142. data/provision/modules/stdlib/lib/puppet/parser/functions/validate_slength.rb +52 -0
  143. data/provision/modules/stdlib/lib/puppet/parser/functions/validate_string.rb +33 -0
  144. data/provision/modules/stdlib/lib/puppet/parser/functions/values.rb +39 -0
  145. data/provision/modules/stdlib/lib/puppet/parser/functions/values_at.rb +98 -0
  146. data/provision/modules/stdlib/lib/puppet/parser/functions/zip.rb +65 -0
  147. data/provision/modules/stdlib/lib/puppet/provider/file_line/ruby.rb +59 -0
  148. data/provision/modules/stdlib/lib/puppet/type/anchor.rb +41 -0
  149. data/provision/modules/stdlib/lib/puppet/type/file_line.rb +70 -0
  150. data/provision/modules/stdlib/manifests/init.pp +20 -0
  151. data/provision/modules/stdlib/manifests/stages.pp +43 -0
  152. data/provision/modules/stdlib/spec/functions/defined_with_params_spec.rb +37 -0
  153. data/provision/modules/stdlib/spec/functions/ensure_packages_spec.rb +42 -0
  154. data/provision/modules/stdlib/spec/functions/ensure_resource_spec.rb +40 -0
  155. data/provision/modules/stdlib/spec/monkey_patches/alias_should_to_must.rb +8 -0
  156. data/provision/modules/stdlib/spec/monkey_patches/publicize_methods.rb +10 -0
  157. data/provision/modules/stdlib/spec/spec.opts +6 -0
  158. data/provision/modules/stdlib/spec/spec_helper.rb +28 -0
  159. data/provision/modules/stdlib/spec/unit/facter/pe_version_spec.rb +76 -0
  160. data/provision/modules/stdlib/spec/unit/facter/root_home_spec.rb +40 -0
  161. data/provision/modules/stdlib/spec/unit/facter/util/puppet_settings_spec.rb +35 -0
  162. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/abs_spec.rb +25 -0
  163. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/bool2num_spec.rb +24 -0
  164. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/capitalize_spec.rb +19 -0
  165. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/chomp_spec.rb +19 -0
  166. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/chop_spec.rb +19 -0
  167. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/delete_at_spec.rb +19 -0
  168. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/delete_spec.rb +38 -0
  169. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/downcase_spec.rb +24 -0
  170. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/empty_spec.rb +23 -0
  171. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/flatten_spec.rb +23 -0
  172. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/fqdn_rotate_spec.rb +33 -0
  173. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/get_module_path_spec.rb +46 -0
  174. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/getvar_spec.rb +37 -0
  175. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/grep_spec.rb +19 -0
  176. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/has_interface_with_spec.rb +64 -0
  177. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/has_ip_address_spec.rb +39 -0
  178. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/has_ip_network_spec.rb +36 -0
  179. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/has_key_spec.rb +42 -0
  180. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/hash_spec.rb +19 -0
  181. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_array_spec.rb +29 -0
  182. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_domain_name_spec.rb +64 -0
  183. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_float_spec.rb +29 -0
  184. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_hash_spec.rb +29 -0
  185. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_integer_spec.rb +29 -0
  186. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_ip_address_spec.rb +39 -0
  187. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_mac_address_spec.rb +29 -0
  188. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_numeric_spec.rb +29 -0
  189. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/is_string_spec.rb +34 -0
  190. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/join_keys_to_values_spec.rb +40 -0
  191. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/join_spec.rb +19 -0
  192. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/keys_spec.rb +21 -0
  193. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/lstrip_spec.rb +19 -0
  194. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/max_spec.rb +23 -0
  195. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/member_spec.rb +24 -0
  196. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/merge_spec.rb +47 -0
  197. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/min_spec.rb +23 -0
  198. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/num2bool_spec.rb +24 -0
  199. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/parsejson_spec.rb +22 -0
  200. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/parseyaml_spec.rb +24 -0
  201. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/pick_spec.rb +34 -0
  202. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/prefix_spec.rb +19 -0
  203. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/range_spec.rb +34 -0
  204. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/reject_spec.rb +20 -0
  205. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/reverse_spec.rb +19 -0
  206. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/rstrip_spec.rb +24 -0
  207. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/shuffle_spec.rb +24 -0
  208. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/size_spec.rb +24 -0
  209. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/sort_spec.rb +24 -0
  210. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/squeeze_spec.rb +24 -0
  211. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/str2bool_spec.rb +24 -0
  212. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/str2saltedsha512_spec.rb +45 -0
  213. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/strftime_spec.rb +29 -0
  214. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/strip_spec.rb +18 -0
  215. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/swapcase_spec.rb +19 -0
  216. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/time_spec.rb +29 -0
  217. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/to_bytes_spec.rb +58 -0
  218. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/type_spec.rb +43 -0
  219. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/unique_spec.rb +24 -0
  220. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/upcase_spec.rb +24 -0
  221. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/uriescape_spec.rb +24 -0
  222. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_absolute_path_spec.rb +83 -0
  223. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_array_spec.rb +38 -0
  224. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_bool_spec.rb +51 -0
  225. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_hash_spec.rb +43 -0
  226. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_re_spec.rb +76 -0
  227. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_slength_spec.rb +48 -0
  228. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/validate_string_spec.rb +60 -0
  229. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/values_at_spec.rb +38 -0
  230. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/values_spec.rb +31 -0
  231. data/provision/modules/stdlib/spec/unit/puppet/parser/functions/zip_spec.rb +15 -0
  232. data/provision/modules/stdlib/spec/unit/puppet/provider/file_line/ruby_spec.rb +127 -0
  233. data/provision/modules/stdlib/spec/unit/puppet/type/anchor_spec.rb +11 -0
  234. data/provision/modules/stdlib/spec/unit/puppet/type/file_line_spec.rb +69 -0
  235. data/provision/modules/stdlib/spec/watchr.rb +86 -0
  236. data/provision/modules/stdlib/tests/file_line.pp +9 -0
  237. data/provision/modules/stdlib/tests/has_interface_with.pp +10 -0
  238. data/provision/modules/stdlib/tests/has_ip_address.pp +3 -0
  239. data/provision/modules/stdlib/tests/has_ip_network.pp +4 -0
  240. data/provision/modules/stdlib/tests/init.pp +1 -0
  241. 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 :