service_kiosk 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
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
data/Vagrantfile ADDED
@@ -0,0 +1,25 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ Vagrant::Config.run do |config|
5
+ config.vm.box = "precise32"
6
+
7
+ #forward kiosk ports
8
+
9
+ config.vm.forward_port 9901, 9901
10
+ config.vm.forward_port 9902, 9902
11
+ config.vm.forward_port 9903, 9903
12
+ config.vm.forward_port 9904, 9904
13
+ config.vm.forward_port 9905, 9905
14
+ config.vm.forward_port 9906, 9906
15
+ config.vm.forward_port 9907, 9907
16
+ config.vm.forward_port 9908, 9908
17
+ config.vm.forward_port 9909, 9909
18
+ config.vm.forward_port 9910, 9910
19
+
20
+ config.vm.provision :puppet, :module_path => "provision/modules" do |puppet|
21
+ puppet.manifests_path = "provision/manifests"
22
+ puppet.manifest_file = "default.pp"
23
+ end
24
+ config.vm.provision :shell, :path => "provision/bootstrap.sh"
25
+ end
data/bin/kiosk ADDED
@@ -0,0 +1,55 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'kiosk'
4
+ require 'json'
5
+
6
+ def gem_dir
7
+ ServiceKiosk::Kiosk.gem_dir
8
+ end
9
+
10
+ def config
11
+ file = File.read('Kioskfile.json')
12
+ JSON.parse file
13
+ end
14
+
15
+ case ARGV[0]
16
+ when 'plaza:init', 'init'
17
+ boxes = `vagrant box list`
18
+ if(/precise32/m.match boxes)
19
+ puts 'plaza already initialized'
20
+ else
21
+ system 'vagrant init precise32 http://files.vagrantup.com/precise32.box'
22
+ end
23
+
24
+ when 'plaza:up', 'up'
25
+ system 'vagrant up'
26
+
27
+ when 'plaza:down', 'down'
28
+ system 'vagrant destroy'
29
+
30
+ when 'plaza:ssh', 'ssh'
31
+ system 'vagrant ssh'
32
+
33
+ when 'mall:open', 'open'
34
+ exec "vagrant ssh -c 'cd /vagrant/mall; /usr/local/bin/rake kiosk:start'"
35
+
36
+ when 'mall:close', 'close'
37
+ exec "vagrant ssh -c 'cd /vagrant/mall; /usr/local/bin/rake kiosk:stop'"
38
+
39
+ when 'mall:log', 'log'
40
+ exec "vagrant ssh -c 'cd /vagrant/mall; /usr/local/bin/rake kiosk:log'"
41
+
42
+ when 'kiosk:run', 'run'
43
+ env = config['kiosks'][ARGV[1]]['env']
44
+ mall = gem_dir + "/lib/mall.rb"
45
+ dir = Dir.pwd + '/kiosks/' + ARGV[1]
46
+ puts "env: #{env.inspect}"
47
+ puts "mall: #{mall}"
48
+ puts "dir: #{dir}"
49
+ jruby = `which jruby`.strip
50
+ exec(env, "#{jruby} #{mall}", :chdir => dir, :unsetenv_others => true)
51
+
52
+ else
53
+ puts "Usage: $0 {plaza:init|plaza:up|plaza:down|plaza:ssh|mall:open|mall:close|mall:log}"
54
+ end
55
+
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env bash
2
+
3
+ foreman start -f ../../lib/Procfile.kiosk -d `pwd`
@@ -0,0 +1 @@
1
+ kiosk: jruby ../../lib/mall.rb
@@ -0,0 +1,59 @@
1
+ require 'json'
2
+ require 'base64'
3
+
4
+ module ServiceKiosk
5
+ class InternalService
6
+ def initialize(kiosk, service)
7
+ @service = connect(kiosk, service)
8
+ end
9
+
10
+ def connect(kiosk, service)
11
+ kiosk_class = class_from_string(class_name_from_locator(kiosk, service))
12
+ kiosk_class.new
13
+ end
14
+
15
+ def class_name_from_locator(kiosk_locator, service_name)
16
+ #puts ">>> locator: #{kiosk_locator}, svc: #{service_name}"
17
+ parts = /ruby:\/\/\/(?<kiosk_name>[\w\.]*)/.match(kiosk_locator)
18
+ name = service_name
19
+ if parts[:kiosk_name]
20
+ kiosk_name = parts[:kiosk_name].gsub('.', '::')
21
+ name = kiosk_name + '::' + name
22
+ end
23
+ end
24
+
25
+ def class_from_string(str)
26
+ #puts ">>> internal kiosk: class from str: #{str}"
27
+ str.split('::').inject(Object) do |mod, class_name|
28
+ mod.const_get(class_name)
29
+ end
30
+ end
31
+
32
+ def call(action, input={})
33
+ input_json = input.to_json
34
+ #puts ">>> kiosk call: #{action} -> #{input_json}" if ENV[LOGGER_LEVEL].to_i < 1
35
+ response = @service.method(action.to_sym).call(JSON.parse input_json)
36
+ JSON.parse response.to_json
37
+ end
38
+
39
+ def list(input={})
40
+ call('list', input)
41
+ end
42
+
43
+ def read(input={})
44
+ call('read', input)
45
+ end
46
+
47
+ def create(input={})
48
+ call('create', input)
49
+ end
50
+
51
+ def update(input={})
52
+ call('update', input)
53
+ end
54
+
55
+ def delete(input={})
56
+ call('delete', input)
57
+ end
58
+ end
59
+ end
Binary file
data/lib/kiosk.rb ADDED
@@ -0,0 +1,57 @@
1
+ require_relative 'internal_service'
2
+ require_relative 'remote_service'
3
+
4
+ # built-in internal kiosks
5
+ Dir["#{File.dirname(__FILE__)}/kiosks/**/*.rb"].each { |f| require(f) }
6
+
7
+ module ServiceKiosk
8
+ class Kiosk
9
+ @@kiosks = {}
10
+
11
+ def self.open(handle_raw)
12
+ handle = handle_raw.upcase
13
+ kiosk = @@kiosks[handle]
14
+ if kiosk.nil?
15
+ locator = ENV['KIOSK_' + handle]
16
+ kiosk = @@kiosks[handle] = ServiceKiosk::Kiosk.new locator if locator
17
+ end
18
+ raise "No '#{handle}' kiosk found" unless kiosk
19
+ kiosk
20
+ end
21
+
22
+ def self.register(handle, locator)
23
+ @@kiosks[handle.upcase] = ServiceKiosk::Kiosk.new locator
24
+ end
25
+
26
+ def self.gem_dir
27
+ spec = Gem::Specification.find_by_name("service_kiosk")
28
+ #gem_root = spec.gem_dir
29
+ #gem_lib = gem_root + "/lib"
30
+ spec.gem_dir
31
+ end
32
+
33
+ def initialize(id)
34
+ @id = id
35
+ @is_remote = is_remote
36
+ end
37
+
38
+ def service(name)
39
+ if @is_remote
40
+ ServiceKiosk::RemoteService.new @id, name
41
+ else
42
+ ServiceKiosk::InternalService.new @id, name
43
+ end
44
+ end
45
+
46
+ def is_remote
47
+ /^http/.match @id
48
+ end
49
+
50
+ # internal default kiosks
51
+ register('logger', 'ruby:///OutputLogger')
52
+
53
+ end
54
+
55
+ end
56
+
57
+ Dir[ServiceKiosk::Kiosk.gem_dir + "/lib/tasks/**/*.rake"].each { |ext| puts "loading #{ext}"; load ext } if defined?(Rake)
@@ -0,0 +1,16 @@
1
+ module OutputLogger
2
+ class Logger
3
+ def log(input={})
4
+ input.each {|level,text| output(level, text)}
5
+ {}
6
+ end
7
+
8
+ def output(level, text)
9
+ puts ts + " #{level.upcase} | " + text
10
+ end
11
+
12
+ def ts
13
+ Time.now.strftime('%H:%M:%S')
14
+ end
15
+ end
16
+ end
data/lib/mall.rb ADDED
@@ -0,0 +1,77 @@
1
+ require 'base64'
2
+ require 'sinatra'
3
+ require 'json'
4
+
5
+ def gem_dir
6
+ spec = Gem::Specification.find_by_name("service_kiosk")
7
+ spec.gem_dir
8
+ end
9
+
10
+ require gem_dir + '/lib/json-simple-1.1.1.jar'
11
+
12
+ java_import org.json.simple.JSONValue
13
+
14
+ Dir["#{File.dirname(__FILE__)}/**/*.rb"].each { |f| require(f) }
15
+ Dir["#{File.dirname(__FILE__)}/kiosks/**/*.rb"].each { |f| require(f) }
16
+ Dir["#{Dir.pwd}/lib/**/*.rb"].each { |f| require(f) }
17
+ Dir["#{Dir.pwd}/lib/**/*.jar"].each { |f| require(f) }
18
+
19
+ host = /inet addr:(\S+)/m.match(`ifconfig eth0`)[1]
20
+ set :bind, host
21
+ set :port, ENV['KIOSK_PORT']
22
+
23
+
24
+ ## New style
25
+ post '/:kiosk_name/:service/:action' do
26
+ begin
27
+ data = json_parse(Base64.decode64(params[:data]))
28
+ debug "mall: #{params[:kiosk_name]}.#{params[:service]}.#{params[:action]} with input: " + to_json(data)
29
+ results = kiosk(params[:kiosk_name], params[:service]).method(params[:action].to_sym).call(data)
30
+ rescue Exception => e
31
+ results = {"_ERROR_" => e.message + "\n" + e.backtrace.inspect}
32
+ end
33
+ json_results = to_json results
34
+ debug " results: #{json_results}"
35
+ Base64.encode64 json_results
36
+ end
37
+
38
+ def class_from_string(str)
39
+ str.split('::').inject(Object) do |mod, class_name|
40
+ mod.const_get(class_name)
41
+ end
42
+ end
43
+
44
+ def is_java?
45
+ ENV['KIOSK_TYPE'] == 'java'
46
+ end
47
+
48
+ def kiosk(kiosk_name, service)
49
+ if is_java?
50
+ java_import(kiosk_name + '.' + service)[0].new
51
+ else
52
+ class_from_string("#{kiosk_name}::#{service}").new
53
+ end
54
+ end
55
+
56
+ def to_json(input)
57
+ if is_java?
58
+ JSONValue.toJSONString input
59
+ else
60
+ input.to_json
61
+ end
62
+ end
63
+
64
+ def json_parse(input)
65
+ return nil unless input
66
+ if is_java?
67
+ JSONValue.parse input
68
+ else
69
+ JSON.parse input
70
+ end
71
+ end
72
+
73
+ def debug(message)
74
+ @log = ServiceKiosk::Kiosk.open('logger').service('Logger') unless @log
75
+ @log.call('log', {'debug' => message})
76
+ end
77
+
data/lib/mallcop.rb ADDED
@@ -0,0 +1,9 @@
1
+ procfile = ''
2
+ count = 1
3
+ Dir["#{Dir.pwd}/kiosks/*"].each do |kiosk|
4
+ handle = /\/([^\/]+)$/.match(kiosk)[1]
5
+ puts kiosk + ' -> ' + handle
6
+ procfile << %Q[#{handle}: kiosk kiosk:run #{kiosk} 990#{count}\n]
7
+ count += 1
8
+ end
9
+ File.open('./Procfile', 'w') { |file| file.write(procfile) }
@@ -0,0 +1,61 @@
1
+ require_relative 'kiosk'
2
+ require 'json'
3
+ require 'base64'
4
+ require 'rest_client'
5
+ require 'open-uri'
6
+
7
+ module ServiceKiosk
8
+ class RemoteService
9
+ def initialize(kiosk, service)
10
+ @endpoint = external_host(kiosk + '/' + service)
11
+ @logger = ServiceKiosk::Kiosk.open('logger').service('Logger') unless @logger
12
+ debug "remote service wants to use a logger: " + @logger.inspect
13
+ end
14
+
15
+ def url(id=nil, input=nil)
16
+ @endpoint + (id ? ('/' + id) : '') + (input ? '?data=' + CGI::escape(input.to_json) : '')
17
+ end
18
+
19
+ def action_url(action)
20
+ @endpoint + '/' + action
21
+ end
22
+
23
+ def external_host(id)
24
+ # TODO: this hack is to correct the fact that sinatra using jruby on vbox ubuntu won't
25
+ # bind properly to all interfaces 0.0.0.0
26
+ host = /inet addr:(\S+)/m.match(`ifconfig eth0`)[1]
27
+ id.sub('localhost', host)
28
+ end
29
+
30
+ def call(action, input={})
31
+ input_json = input.to_json
32
+ debug "kiosk call: #{action} -> #{input_json}"
33
+ response = RestClient.post action_url(action), {data: Base64.encode64(input_json)}
34
+ JSON.parse Base64.decode64(response)
35
+ end
36
+
37
+ def list(input={})
38
+ call('list', input)
39
+ end
40
+
41
+ def read(input={})
42
+ call('read', input)
43
+ end
44
+
45
+ def create(input={})
46
+ call('create', input)
47
+ end
48
+
49
+ def update(input={})
50
+ call('update', input)
51
+ end
52
+
53
+ def delete(input={})
54
+ call('delete', input)
55
+ end
56
+
57
+ def debug(message)
58
+ @logger.call('log', {'debug' => message})
59
+ end
60
+ end
61
+ end
@@ -0,0 +1,93 @@
1
+ namespace :kiosk do
2
+ task :init do
3
+ boxes = `vagrant box list`
4
+ if(/precise32/m.match boxes)
5
+ puts 'box precise32 already defined.'
6
+ else
7
+ system 'vagrant init precise32 http://files.vagrantup.com/precise32.box'
8
+ end
9
+ end
10
+
11
+ task :up do
12
+ system 'vagrant up'
13
+ end
14
+
15
+ task :destroy do
16
+ system 'vagrant destroy'
17
+ end
18
+
19
+ task :mall_start do
20
+ exec "vagrant ssh -c 'cd /vagrant/mall; /usr/local/bin/rake start'"
21
+ end
22
+
23
+ task :mall_log do
24
+ exec "vagrant ssh -c 'cd /vagrant/mall; /usr/local/bin/rake log'"
25
+ end
26
+
27
+ task :mall_stop do
28
+ exec "vagrant ssh -c 'cd /vagrant/mall; /usr/local/bin/rake stop'"
29
+ end
30
+
31
+ task :start do
32
+ unless mall_running?
33
+ unless pid = fork
34
+ write_procfile
35
+ exec "foreman start > log/foreman.log 2>&1 & echo $! > log/pid"
36
+ end
37
+ sleep 0.1
38
+ puts "Mall is opening (pid: #{mall_pid})"
39
+ else
40
+ puts "Mall already opened (pid: #{mall_pid})"
41
+ end
42
+ end
43
+
44
+ task :stop do
45
+ if mall_running?
46
+ group = `ps axj`.match(/\d+\s+#{mall_pid}\s+(\d+).*foreman/m)[1]
47
+ system "pkill -g #{group}"
48
+ File.delete pidfile
49
+ File.delete './Procfile'
50
+ puts "Mall is closing..."
51
+ else
52
+ puts "Mall already closed"
53
+ end
54
+ end
55
+
56
+ task :log do
57
+ exec "tail -n 200 --pid=#{mall_pid} -f log/foreman.log"
58
+ end
59
+
60
+ task :mallcop do
61
+ exec "jruby #{gem_dir}/lib/mallcop.rb"
62
+ end
63
+
64
+ def mall_pid
65
+ File.read(pidfile).strip
66
+ end
67
+
68
+ def mall_running?
69
+ File.exists?(pidfile)
70
+ end
71
+
72
+ def pidfile
73
+ 'log/pid'
74
+ end
75
+
76
+ def gem_dir
77
+ spec = Gem::Specification.find_by_name("service_kiosk")
78
+ spec.gem_dir
79
+ end
80
+
81
+ def write_procfile
82
+ File.open('./Procfile', 'w') {|f| f.write(procfile) }
83
+ end
84
+
85
+ def procfile
86
+ result = ''
87
+ Dir["#{Dir.pwd}/kiosks/*"].each do |kiosk|
88
+ handle = /\/([^\/]+)$/.match(kiosk)[1]
89
+ result << %Q[#{handle}: kiosk kiosk:run #{handle}\n]
90
+ end
91
+ result
92
+ end
93
+ end
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env bash
2
+
3
+ apt-get update
4
+ apt-get install -y git
5
+ apt-get install -y ruby1.9.3
6
+ apt-get install -y cucumber
7
+ gem install rake
8
+ gem install rest-client
9
+ gem install rspec
10
+ gem install service_kiosk
11
+ gem install foreman
12
+ wget --quiet http://jruby.org.s3.amazonaws.com/downloads/1.7.3/jruby-bin-1.7.3.tar.gz
13
+ tar zxf jruby-bin-1.7.3.tar.gz
14
+ echo "export PATH=\${PATH}:/home/vagrant/jruby-1.7.3/bin" >> /home/vagrant/.profile
15
+ export PATH="${PATH}:/home/vagrant/jruby-1.7.3/bin"
16
+ jruby -S gem install sinatra
17
+ jruby -S gem install cucumber
18
+ jruby -S gem install rspec
19
+ jruby -S gem install mime-types
20
+ jruby -S gem install rest-client
21
+ jruby -S gem install service_kiosk
@@ -0,0 +1,49 @@
1
+ define append_if_no_such_line($file, $line, $refreshonly = 'false') {
2
+ exec { "/bin/echo '$line' >> '$file'":
3
+ unless => "/bin/grep -Fxqe '$line' '$file'",
4
+ path => "/bin",
5
+ refreshonly => $refreshonly,
6
+ }
7
+ }
8
+
9
+ class must-have {
10
+ include apt
11
+ apt::ppa { "ppa:webupd8team/java": }
12
+
13
+ exec { 'apt-get update':
14
+ command => '/usr/bin/apt-get update',
15
+ before => Apt::Ppa["ppa:webupd8team/java"],
16
+ }
17
+
18
+ exec { 'apt-get update 2':
19
+ command => '/usr/bin/apt-get update',
20
+ require => [ Apt::Ppa["ppa:webupd8team/java"], Package["git-core"] ],
21
+ }
22
+
23
+ package { ["vim",
24
+ "curl",
25
+ "git-core",
26
+ "bash"]:
27
+ ensure => present,
28
+ require => Exec["apt-get update"],
29
+ before => Apt::Ppa["ppa:webupd8team/java"],
30
+ }
31
+
32
+ package { ["oracle-java7-installer"]:
33
+ ensure => present,
34
+ require => Exec["apt-get update 2"],
35
+ }
36
+
37
+ exec {
38
+ "accept_license":
39
+ command => "echo debconf shared/accepted-oracle-license-v1-1 select true | sudo debconf-set-selections && echo debconf shared/accepted-oracle-license-v1-1 seen true | sudo debconf-set-selections",
40
+ cwd => "/home/vagrant",
41
+ user => "vagrant",
42
+ path => "/usr/bin/:/bin/",
43
+ require => Package["curl"],
44
+ before => Package["oracle-java7-installer"],
45
+ logoutput => true,
46
+ }
47
+ }
48
+
49
+ include must-have
@@ -0,0 +1,83 @@
1
+ 2012-05-25 Puppet Labs <info@puppetlabs.com> - 0.0.4
2
+ * Fix ppa list filename when there is a period in the PPA name
3
+ * Add .pref extension to apt preferences files
4
+ * Allow preferences to be purged
5
+ * Extend pin support
6
+
7
+ 2012-05-04 Puppet Labs <info@puppetlabs.com> - 0.0.3
8
+ * only invoke apt-get update once
9
+ * only install python-software-properties if a ppa is added
10
+ * support 'ensure => absent' for all defined types
11
+ * add apt::conf
12
+ * add apt::backports
13
+ * fixed Modulefile for module tool dependency resolution
14
+ * configure proxy before doing apt-get update
15
+ * use apt-get update instead of aptitude for apt::ppa
16
+ * add support to pin release
17
+
18
+
19
+ 2012-03-26 Puppet Labs <info@puppetlabs.com> - 0.0.2
20
+ 41cedbb (#13261) Add real examples to smoke tests.
21
+ d159a78 (#13261) Add key.pp smoke test
22
+ 7116c7a (#13261) Replace foo source with puppetlabs source
23
+ 1ead0bf Ignore pkg directory.
24
+ 9c13872 (#13289) Fix some more style violations
25
+ 0ea4ffa (#13289) Change test scaffolding to use a module & manifest dir fixture path
26
+ a758247 (#13289) Clean up style violations and fix corresponding tests
27
+ 99c3fd3 (#13289) Add puppet lint tests to Rakefile
28
+ 5148cbf (#13125) Apt keys should be case insensitive
29
+ b9607a4 Convert apt::key to use anchors
30
+
31
+ 2012-03-07 Puppet Labs <info@puppetlabs.com> - 0.0.1
32
+ d4fec56 Modify apt::source release parameter test
33
+ 1132a07 (#12917) Add contributors to README
34
+ 8cdaf85 (#12823) Add apt::key defined type and modify apt::source to use it
35
+ 7c0d10b (#12809) $release should use $lsbdistcodename and fall back to manual input
36
+ be2cc3e (#12522) Adjust spec test for splitting purge
37
+ 7dc60ae (#12522) Split purge option to spare sources.list
38
+ 9059c4e Fix source specs to test all key permutations
39
+ 8acb202 Add test for python-software-properties package
40
+ a4af11f Check if python-software-properties is defined before attempting to define it.
41
+ 1dcbf3d Add tests for required_packages change
42
+ f3735d2 Allow duplicate $required_packages
43
+ 74c8371 (#12430) Add tests for changes to apt module
44
+ 97ebb2d Test two sources with the same key
45
+ 1160bcd (#12526) Add ability to reverse apt { disable_keys => true }
46
+ 2842d73 Add Modulefile to puppet-apt
47
+ c657742 Allow the use of the same key in multiple sources
48
+ 8c27963 (#12522) Adding purge option to apt class
49
+ 997c9fd (#12529) Add unit test for apt proxy settings
50
+ 50f3cca (#12529) Add parameter to support setting a proxy for apt
51
+ d522877 (#12094) Replace chained .with_* with a hash
52
+ 8cf1bd0 (#12094) Remove deprecated spec.opts file
53
+ 2d688f4 (#12094) Add rspec-puppet tests for apt
54
+ 0fb5f78 (#12094) Replace name with path in file resources
55
+ f759bc0 (#11953) Apt::force passes $version to aptitude
56
+ f71db53 (#11413) Add spec test for apt::force to verify changes to unless
57
+ 2f5d317 (#11413) Update dpkg query used by apt::force
58
+ cf6caa1 (#10451) Add test coverage to apt::ppa
59
+ 0dd697d include_src parameter in example; Whitespace cleanup
60
+ b662eb8 fix typos in "repositories"
61
+ 1be7457 Fix (#10451) - apt::ppa fails to "apt-get update" when new PPA source is added
62
+ 864302a Set the pin priority before adding the source (Fix #10449)
63
+ 1de4e0a Refactored as per mlitteken
64
+ 1af9a13 Added some crazy bash madness to check if the ppa is installed already. Otherwise the manifest tries to add it on every run!
65
+ 52ca73e (#8720) Replace Apt::Ppa with Apt::Builddep
66
+ 5c05fa0 added builddep command.
67
+ a11af50 added the ability to specify the content of a key
68
+ c42db0f Fixes ppa test.
69
+ 77d2b0d reformatted whitespace to match recommended style of 2 space indentation.
70
+ 27ebdfc ignore swap files.
71
+ 377d58a added smoke tests for module.
72
+ 18f614b reformatted apt::ppa according to recommended style.
73
+ d8a1e4e Created a params class to hold global data.
74
+ 636ae85 Added two params for apt class
75
+ 148fc73 Update LICENSE.
76
+ ed2d19e Support ability to add more than one PPA
77
+ 420d537 Add call to apt-update after add-apt-repository in apt::ppa
78
+ 945be77 Add package definition for python-software-properties
79
+ 71fc425 Abs paths for all commands
80
+ 9d51cd1 Adding LICENSE
81
+ 71796e3 Heading fix in README
82
+ 87777d8 Typo in README
83
+ f848bac First commit
@@ -0,0 +1,19 @@
1
+ Copyright (c) 2011 Evolving Web Inc.
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to deal
5
+ in the Software without restriction, including without limitation the rights
6
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
+ copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
+ THE SOFTWARE.
@@ -0,0 +1,14 @@
1
+ name 'puppetlabs-apt'
2
+ version '1.1.0'
3
+ source 'https://github.com/puppetlabs/puppetlabs-apt'
4
+ author 'Evolving Web / Puppet Labs'
5
+ license 'Apache License 2.0'
6
+ summary 'Puppet Labs Apt Module'
7
+ description 'APT Module for Puppet'
8
+ project_page 'https://github.com/puppetlabs/puppetlabs-apt'
9
+
10
+ ## Add dependencies, if any:
11
+ #dependency 'puppetlabs/stdlib', '2.x'
12
+ # The dependency should be written as above but librarian-puppet
13
+ # does not support the expression as the PMT does.
14
+ dependency 'puppetlabs/stdlib', '>= 2.2.1'