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,35 @@
1
+ Puppet Specific Facts
2
+ =====================
3
+
4
+ Facter is meant to stand alone and apart from Puppet. However, Facter often
5
+ runs inside Puppet and all custom facts included in the stdlib module will
6
+ almost always be evaluated in the context of Puppet and Facter working
7
+ together.
8
+
9
+ Still, we don't want to write custom facts that blow up in the users face if
10
+ Puppet is not loaded in memory. This is often the case if the user runs
11
+ `facter` without also supplying the `--puppet` flag.
12
+
13
+ Ah! But Jeff, the custom fact won't be in the `$LOAD_PATH` unless the user
14
+ supplies `--facter`! You might say...
15
+
16
+ Not (always) true I say! If the user happens to have a CWD of
17
+ `<modulepath>/stdlib/lib` then the facts will automatically be evaluated and
18
+ blow up.
19
+
20
+ In any event, it's pretty easy to write a fact that has no value if Puppet is
21
+ not loaded. Simply do it like this:
22
+
23
+ Facter.add(:node_vardir) do
24
+ setcode do
25
+ # This will be nil if Puppet is not available.
26
+ Facter::Util::PuppetSettings.with_puppet do
27
+ Puppet[:vardir]
28
+ end
29
+ end
30
+ end
31
+
32
+ The `Facter::Util::PuppetSettings.with_puppet` method accepts a block and
33
+ yields to it only if the Puppet library is loaded. If the Puppet library is
34
+ not loaded, then the method silently returns `nil` which Facter interprets as
35
+ an undefined fact value. The net effect is that the fact won't be set.
@@ -0,0 +1,24 @@
1
+ # Contributing to this module #
2
+
3
+ * Work in a topic branch
4
+ * Submit a github pull request
5
+ * Address any comments / feeback
6
+ * Merge into master using --no-ff
7
+
8
+ # Releasing this module #
9
+
10
+ * This module adheres to http://semver.org/
11
+ * Look for API breaking changes using git diff vX.Y.Z..master
12
+ * If no API breaking changes, the minor version may be bumped.
13
+ * If there are API breaking changes, the major version must be bumped.
14
+ * If there are only small minor changes, the patch version may be bumped.
15
+ * Update the CHANGELOG
16
+ * Update the Modulefile
17
+ * Commit these changes with a message along the lines of "Update CHANGELOG and
18
+ Modulefile for release"
19
+ * Create an annotated tag with git tag -a vX.Y.Z -m 'version X.Y.Z' (NOTE the
20
+ leading v as per semver.org)
21
+ * Push the tag with git push origin --tags
22
+ * Build a new package with puppet-module or the rake build task if it exists
23
+ * Publish the new package to the forge
24
+ * Bonus points for an announcement to puppet-users.
@@ -0,0 +1,2 @@
1
+ require 'rubygems'
2
+ require 'puppetlabs_spec_helper/rake_tasks'
@@ -0,0 +1,53 @@
1
+ # Fact: is_pe, pe_version, pe_major_version, pe_minor_version, pe_patch_version
2
+ #
3
+ # Purpose: Return various facts about the PE state of the system
4
+ #
5
+ # Resolution: Uses a regex match against puppetversion to determine whether the
6
+ # machine has Puppet Enterprise installed, and what version (overall, major,
7
+ # minor, patch) is installed.
8
+ #
9
+ # Caveats:
10
+ #
11
+ Facter.add("pe_version") do
12
+ setcode do
13
+ pe_ver = Facter.value("puppetversion").match(/Puppet Enterprise (\d+\.\d+\.\d+)/)
14
+ pe_ver[1] if pe_ver
15
+ end
16
+ end
17
+
18
+ Facter.add("is_pe") do
19
+ setcode do
20
+ if Facter.value(:pe_version).to_s.empty? then
21
+ false
22
+ else
23
+ true
24
+ end
25
+ end
26
+ end
27
+
28
+ Facter.add("pe_major_version") do
29
+ confine :is_pe => true
30
+ setcode do
31
+ if pe_version = Facter.value(:pe_version)
32
+ pe_version.to_s.split('.')[0]
33
+ end
34
+ end
35
+ end
36
+
37
+ Facter.add("pe_minor_version") do
38
+ confine :is_pe => true
39
+ setcode do
40
+ if pe_version = Facter.value(:pe_version)
41
+ pe_version.to_s.split('.')[1]
42
+ end
43
+ end
44
+ end
45
+
46
+ Facter.add("pe_patch_version") do
47
+ confine :is_pe => true
48
+ setcode do
49
+ if pe_version = Facter.value(:pe_version)
50
+ pe_version.to_s.split('.')[2]
51
+ end
52
+ end
53
+ end
@@ -0,0 +1,26 @@
1
+ # This facter fact returns the value of the Puppet vardir setting for the node
2
+ # running puppet or puppet agent. The intent is to enable Puppet modules to
3
+ # automatically have insight into a place where they can place variable data,
4
+ # regardless of the node's platform.
5
+ #
6
+ # The value should be directly usable in a File resource path attribute.
7
+
8
+
9
+ begin
10
+ require 'facter/util/puppet_settings'
11
+ rescue LoadError => e
12
+ # puppet apply does not add module lib directories to the $LOAD_PATH (See
13
+ # #4248). It should (in the future) but for the time being we need to be
14
+ # defensive which is what this rescue block is doing.
15
+ rb_file = File.join(File.dirname(__FILE__), 'util', 'puppet_settings.rb')
16
+ load rb_file if File.exists?(rb_file) or raise e
17
+ end
18
+
19
+ Facter.add(:puppet_vardir) do
20
+ setcode do
21
+ # This will be nil if Puppet is not available.
22
+ Facter::Util::PuppetSettings.with_puppet do
23
+ Puppet[:vardir]
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,19 @@
1
+ # A facter fact to determine the root home directory.
2
+ # This varies on PE supported platforms and may be
3
+ # reconfigured by the end user.
4
+
5
+ module Facter::Util::RootHome
6
+ class << self
7
+ def get_root_home
8
+ root_ent = Facter::Util::Resolution.exec("getent passwd root")
9
+ # The home directory is the sixth element in the passwd entry
10
+ # If the platform doesn't have getent, root_ent will be nil and we should
11
+ # return it straight away.
12
+ root_ent && root_ent.split(":")[5]
13
+ end
14
+ end
15
+ end
16
+
17
+ Facter.add(:root_home) do
18
+ setcode { Facter::Util::RootHome.get_root_home }
19
+ end
@@ -0,0 +1,21 @@
1
+ module Facter
2
+ module Util
3
+ module PuppetSettings
4
+ # This method is intended to provide a convenient way to evaluate a
5
+ # Facter code block only if Puppet is loaded. This is to account for the
6
+ # situation where the fact happens to be in the load path, but Puppet is
7
+ # not loaded for whatever reason. Perhaps the user is simply running
8
+ # facter without the --puppet flag and they happen to be working in a lib
9
+ # directory of a module.
10
+ def self.with_puppet
11
+ begin
12
+ Module.const_get("Puppet")
13
+ rescue NameError
14
+ nil
15
+ else
16
+ yield
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,36 @@
1
+ #
2
+ # abs.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:abs, :type => :rvalue, :doc => <<-EOS
7
+ Returns the absolute value of a number, for example -34.56 becomes
8
+ 34.56. Takes a single integer and float value as an argument.
9
+ EOS
10
+ ) do |arguments|
11
+
12
+ raise(Puppet::ParseError, "abs(): Wrong number of arguments " +
13
+ "given (#{arguments.size} for 1)") if arguments.size < 1
14
+
15
+ value = arguments[0]
16
+
17
+ # Numbers in Puppet are often string-encoded which is troublesome ...
18
+ if value.is_a?(String)
19
+ if value.match(/^-?(?:\d+)(?:\.\d+){1}$/)
20
+ value = value.to_f
21
+ elsif value.match(/^-?\d+$/)
22
+ value = value.to_i
23
+ else
24
+ raise(Puppet::ParseError, 'abs(): Requires float or ' +
25
+ 'integer to work with')
26
+ end
27
+ end
28
+
29
+ # We have numeric value to handle ...
30
+ result = value.abs
31
+
32
+ return result
33
+ end
34
+ end
35
+
36
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,49 @@
1
+ #
2
+ # bool2num.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:bool2num, :type => :rvalue, :doc => <<-EOS
7
+ Converts a boolean to a number. Converts the values:
8
+ false, f, 0, n, and no to 0
9
+ true, t, 1, y, and yes to 1
10
+ Requires a single boolean or string as an input.
11
+ EOS
12
+ ) do |arguments|
13
+
14
+ raise(Puppet::ParseError, "bool2num(): Wrong number of arguments " +
15
+ "given (#{arguments.size} for 1)") if arguments.size < 1
16
+
17
+ value = arguments[0]
18
+ klass = value.class
19
+
20
+ # We can have either true or false, or string which resembles boolean ...
21
+ unless [FalseClass, TrueClass, String].include?(klass)
22
+ raise(Puppet::ParseError, 'bool2num(): Requires either ' +
23
+ 'boolean or string to work with')
24
+ end
25
+
26
+ if value.is_a?(String)
27
+ # We consider all the yes, no, y, n and so on too ...
28
+ value = case value
29
+ #
30
+ # This is how undef looks like in Puppet ...
31
+ # We yield 0 (or false if you wish) in this case.
32
+ #
33
+ when /^$/, '' then false # Empty string will be false ...
34
+ when /^(1|t|y|true|yes)$/ then true
35
+ when /^(0|f|n|false|no)$/ then false
36
+ when /^(undef|undefined)$/ then false # This is not likely to happen ...
37
+ else
38
+ raise(Puppet::ParseError, 'bool2num(): Unknown type of boolean given')
39
+ end
40
+ end
41
+
42
+ # We have real boolean values as well ...
43
+ result = value ? 1 : 0
44
+
45
+ return result
46
+ end
47
+ end
48
+
49
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,34 @@
1
+ #
2
+ # capitalize.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:capitalize, :type => :rvalue, :doc => <<-EOS
7
+ Capitalizes the first letter of a string or array of strings.
8
+ Requires either a single string or an array as an input.
9
+ EOS
10
+ ) do |arguments|
11
+
12
+ raise(Puppet::ParseError, "capitalize(): Wrong number of arguments " +
13
+ "given (#{arguments.size} for 1)") if arguments.size < 1
14
+
15
+ value = arguments[0]
16
+ klass = value.class
17
+
18
+ unless [Array, String].include?(klass)
19
+ raise(Puppet::ParseError, 'capitalize(): Requires either ' +
20
+ 'array or string to work with')
21
+ end
22
+
23
+ if value.is_a?(Array)
24
+ # Numbers in Puppet are often string-encoded which is troublesome ...
25
+ result = value.collect { |i| i.is_a?(String) ? i.capitalize : i }
26
+ else
27
+ result = value.capitalize
28
+ end
29
+
30
+ return result
31
+ end
32
+ end
33
+
34
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,35 @@
1
+ #
2
+ # chomp.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:chomp, :type => :rvalue, :doc => <<-'EOS'
7
+ Removes the record separator from the end of a string or an array of
8
+ strings, for example `hello\n` becomes `hello`.
9
+ Requires a single string or array as an input.
10
+ EOS
11
+ ) do |arguments|
12
+
13
+ raise(Puppet::ParseError, "chomp(): Wrong number of arguments " +
14
+ "given (#{arguments.size} for 1)") if arguments.size < 1
15
+
16
+ value = arguments[0]
17
+ klass = value.class
18
+
19
+ unless [Array, String].include?(klass)
20
+ raise(Puppet::ParseError, 'chomp(): Requires either ' +
21
+ 'array or string to work with')
22
+ end
23
+
24
+ if value.is_a?(Array)
25
+ # Numbers in Puppet are often string-encoded which is troublesome ...
26
+ result = value.collect { |i| i.is_a?(String) ? i.chomp : i }
27
+ else
28
+ result = value.chomp
29
+ end
30
+
31
+ return result
32
+ end
33
+ end
34
+
35
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,37 @@
1
+ #
2
+ # chop.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:chop, :type => :rvalue, :doc => <<-'EOS'
7
+ Returns a new string with the last character removed. If the string ends
8
+ with `\r\n`, both characters are removed. Applying chop to an empty
9
+ string returns an empty string. If you wish to merely remove record
10
+ separators then you should use the `chomp` function.
11
+ Requires a string or array of strings as input.
12
+ EOS
13
+ ) do |arguments|
14
+
15
+ raise(Puppet::ParseError, "chop(): Wrong number of arguments " +
16
+ "given (#{arguments.size} for 1)") if arguments.size < 1
17
+
18
+ value = arguments[0]
19
+ klass = value.class
20
+
21
+ unless [Array, String].include?(klass)
22
+ raise(Puppet::ParseError, 'chop(): Requires either an ' +
23
+ 'array or string to work with')
24
+ end
25
+
26
+ if value.is_a?(Array)
27
+ # Numbers in Puppet are often string-encoded which is troublesome ...
28
+ result = value.collect { |i| i.is_a?(String) ? i.chop : i }
29
+ else
30
+ result = value.chop
31
+ end
32
+
33
+ return result
34
+ end
35
+ end
36
+
37
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,35 @@
1
+ # Test whether a given class or definition is defined
2
+ require 'puppet/parser/functions'
3
+
4
+ Puppet::Parser::Functions.newfunction(:defined_with_params,
5
+ :type => :rvalue,
6
+ :doc => <<-'ENDOFDOC'
7
+ Takes a resource reference and an optional hash of attributes.
8
+
9
+ Returns true if a resource with the specified attributes has already been added
10
+ to the catalog, and false otherwise.
11
+
12
+ user { 'dan':
13
+ ensure => present,
14
+ }
15
+
16
+ if ! defined_with_params(User[dan], {'ensure' => 'present' }) {
17
+ user { 'dan': ensure => present, }
18
+ }
19
+ ENDOFDOC
20
+ ) do |vals|
21
+ reference, params = vals
22
+ raise(ArgumentError, 'Must specify a reference') unless reference
23
+ if (! params) || params == ''
24
+ params = {}
25
+ end
26
+ ret = false
27
+ if resource = findresource(reference.to_s)
28
+ matches = params.collect do |key, value|
29
+ resource[key] == value
30
+ end
31
+ ret = params.empty? || !matches.include?(false)
32
+ end
33
+ Puppet.debug("Resource #{reference} was not determined to be defined")
34
+ ret
35
+ end
@@ -0,0 +1,46 @@
1
+ #
2
+ # delete.rb
3
+ #
4
+
5
+ # TODO(Krzysztof Wilczynski): We need to add support for regular expression ...
6
+
7
+ module Puppet::Parser::Functions
8
+ newfunction(:delete, :type => :rvalue, :doc => <<-EOS
9
+ Deletes all instances of a given element from an array, substring from a
10
+ string, or key from a hash.
11
+
12
+ *Examples:*
13
+
14
+ delete(['a','b','c','b'], 'b')
15
+ Would return: ['a','c']
16
+
17
+ delete({'a'=>1,'b'=>2,'c'=>3}, 'b')
18
+ Would return: {'a'=>1,'c'=>3}
19
+
20
+ delete('abracadabra', 'bra')
21
+ Would return: 'acada'
22
+ EOS
23
+ ) do |arguments|
24
+
25
+ if (arguments.size != 2) then
26
+ raise(Puppet::ParseError, "delete(): Wrong number of arguments "+
27
+ "given #{arguments.size} for 2.")
28
+ end
29
+
30
+ collection = arguments[0]
31
+ item = arguments[1]
32
+
33
+ case collection
34
+ when Array, Hash
35
+ collection.delete item
36
+ when String
37
+ collection.gsub! item, ''
38
+ else
39
+ raise(TypeError, "delete(): First argument must be an Array, " +
40
+ "String, or Hash. Given an argument of class #{collection.class}.")
41
+ end
42
+ collection
43
+ end
44
+ end
45
+
46
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,49 @@
1
+ #
2
+ # delete_at.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:delete_at, :type => :rvalue, :doc => <<-EOS
7
+ Deletes a determined indexed value from an array.
8
+
9
+ *Examples:*
10
+
11
+ delete_at(['a','b','c'], 1)
12
+
13
+ Would return: ['a','c']
14
+ EOS
15
+ ) do |arguments|
16
+
17
+ raise(Puppet::ParseError, "delete_at(): Wrong number of arguments " +
18
+ "given (#{arguments.size} for 2)") if arguments.size < 2
19
+
20
+ array = arguments[0]
21
+
22
+ unless array.is_a?(Array)
23
+ raise(Puppet::ParseError, 'delete_at(): Requires array to work with')
24
+ end
25
+
26
+ index = arguments[1]
27
+
28
+ if index.is_a?(String) and not index.match(/^\d+$/)
29
+ raise(Puppet::ParseError, 'delete_at(): You must provide ' +
30
+ 'non-negative numeric index')
31
+ end
32
+
33
+ result = array.clone
34
+
35
+ # Numbers in Puppet are often string-encoded which is troublesome ...
36
+ index = index.to_i
37
+
38
+ if index > result.size - 1 # First element is at index 0 is it not?
39
+ raise(Puppet::ParseError, 'delete_at(): Given index ' +
40
+ 'exceeds size of array given')
41
+ end
42
+
43
+ result.delete_at(index) # We ignore the element that got deleted ...
44
+
45
+ return result
46
+ end
47
+ end
48
+
49
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,33 @@
1
+ #
2
+ # downcase.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:downcase, :type => :rvalue, :doc => <<-EOS
7
+ Converts the case of a string or all strings in an array to lower case.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ raise(Puppet::ParseError, "downcase(): Wrong number of arguments " +
12
+ "given (#{arguments.size} for 1)") if arguments.size < 1
13
+
14
+ value = arguments[0]
15
+ klass = value.class
16
+
17
+ unless [Array, String].include?(klass)
18
+ raise(Puppet::ParseError, 'downcase(): Requires either ' +
19
+ 'array or string to work with')
20
+ end
21
+
22
+ if value.is_a?(Array)
23
+ # Numbers in Puppet are often string-encoded which is troublesome ...
24
+ result = value.collect { |i| i.is_a?(String) ? i.downcase : i }
25
+ else
26
+ result = value.downcase
27
+ end
28
+
29
+ return result
30
+ end
31
+ end
32
+
33
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,28 @@
1
+ #
2
+ # empty.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:empty, :type => :rvalue, :doc => <<-EOS
7
+ Returns true if the variable is empty.
8
+ EOS
9
+ ) do |arguments|
10
+
11
+ raise(Puppet::ParseError, "empty(): Wrong number of arguments " +
12
+ "given (#{arguments.size} for 1)") if arguments.size < 1
13
+
14
+ value = arguments[0]
15
+ klass = value.class
16
+
17
+ unless [Array, Hash, String].include?(klass)
18
+ raise(Puppet::ParseError, 'empty(): Requires either ' +
19
+ 'array, hash or string to work with')
20
+ end
21
+
22
+ result = value.empty?
23
+
24
+ return result
25
+ end
26
+ end
27
+
28
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,24 @@
1
+ #
2
+ # ensure_packages.rb
3
+ #
4
+ require 'puppet/parser/functions'
5
+
6
+ module Puppet::Parser::Functions
7
+ newfunction(:ensure_packages, :type => :statement, :doc => <<-EOS
8
+ Takes a list of packages and only installs them if they don't already exist.
9
+ EOS
10
+ ) do |arguments|
11
+
12
+ raise(Puppet::ParseError, "ensure_packages(): Wrong number of arguments " +
13
+ "given (#{arguments.size} for 1)") if arguments.size != 1
14
+ raise(Puppet::ParseError, "ensure_packages(): Requires array " +
15
+ "given (#{arguments[0].class})") if !arguments[0].kind_of?(Array)
16
+
17
+ Puppet::Parser::Functions.function(:ensure_resource)
18
+ arguments[0].each { |package_name|
19
+ function_ensure_resource(['package', package_name, {'ensure' => 'present' } ])
20
+ }
21
+ end
22
+ end
23
+
24
+ # vim: set ts=2 sw=2 et :
@@ -0,0 +1,35 @@
1
+ # Test whether a given class or definition is defined
2
+ require 'puppet/parser/functions'
3
+
4
+ Puppet::Parser::Functions.newfunction(:ensure_resource,
5
+ :type => :statement,
6
+ :doc => <<-'ENDOFDOC'
7
+ Takes a resource type, title, and a list of attributes that describe a
8
+ resource.
9
+
10
+ user { 'dan':
11
+ ensure => present,
12
+ }
13
+
14
+ This example only creates the resource if it does not already exist:
15
+
16
+ ensure_resource('user, 'dan', {'ensure' => 'present' })
17
+
18
+ If the resource already exists but does not match the specified parameters,
19
+ this function will attempt to recreate the resource leading to a duplicate
20
+ resource definition error.
21
+
22
+ ENDOFDOC
23
+ ) do |vals|
24
+ type, title, params = vals
25
+ raise(ArgumentError, 'Must specify a type') unless type
26
+ raise(ArgumentError, 'Must specify a title') unless title
27
+ params ||= {}
28
+ Puppet::Parser::Functions.function(:defined_with_params)
29
+ if function_defined_with_params(["#{type}[#{title}]", params])
30
+ Puppet.debug("Resource #{type}[#{title}] not created b/c it already exists")
31
+ else
32
+ Puppet::Parser::Functions.function(:create_resources)
33
+ function_create_resources([type.capitalize, { title => params }])
34
+ end
35
+ end
@@ -0,0 +1,33 @@
1
+ #
2
+ # flatten.rb
3
+ #
4
+
5
+ module Puppet::Parser::Functions
6
+ newfunction(:flatten, :type => :rvalue, :doc => <<-EOS
7
+ This function flattens any deeply nested arrays and returns a single flat array
8
+ as a result.
9
+
10
+ *Examples:*
11
+
12
+ flatten(['a', ['b', ['c']]])
13
+
14
+ Would return: ['a','b','c']
15
+ EOS
16
+ ) do |arguments|
17
+
18
+ raise(Puppet::ParseError, "flatten(): 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, 'flatten(): Requires array to work with')
25
+ end
26
+
27
+ result = array.flatten
28
+
29
+ return result
30
+ end
31
+ end
32
+
33
+ # vim: set ts=2 sw=2 et :