poolparty 0.2.18 → 0.2.69

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 (335) hide show
  1. data/Manifest.txt +142 -47
  2. data/PostInstall.txt +5 -5
  3. data/README.txt +25 -4
  4. data/Rakefile +46 -2
  5. data/bin/cloud +12 -21
  6. data/bin/cloud-add-keypair +18 -13
  7. data/bin/cloud-configure +11 -18
  8. data/bin/cloud-contract +7 -17
  9. data/bin/cloud-ensure-provisioning +39 -0
  10. data/bin/cloud-expand +9 -17
  11. data/bin/cloud-handle-load +27 -0
  12. data/bin/cloud-list +3 -9
  13. data/bin/cloud-maintain +12 -18
  14. data/bin/cloud-osxcopy +3 -9
  15. data/bin/cloud-provision +20 -21
  16. data/bin/cloud-refresh +4 -13
  17. data/bin/cloud-run +3 -4
  18. data/bin/cloud-ssh +3 -2
  19. data/bin/cloud-start +18 -21
  20. data/bin/cloud-stats +17 -0
  21. data/bin/cloud-terminate +4 -7
  22. data/bin/messenger-get-current-nodes +14 -0
  23. data/bin/pool +12 -12
  24. data/bin/pool-describe +0 -1
  25. data/bin/{pool-spec → pool-generate} +1 -0
  26. data/bin/pool-init +28 -0
  27. data/bin/pool-list +14 -12
  28. data/bin/pool-start +11 -17
  29. data/bin/server-build-messenger +13 -6
  30. data/bin/server-fire-cmd +1 -1
  31. data/bin/server-get-load +5 -16
  32. data/bin/server-list-active +3 -10
  33. data/bin/server-rerun +4 -4
  34. data/bin/server-send-command +18 -0
  35. data/bin/server-show-stats +17 -0
  36. data/bin/server-start-client +29 -0
  37. data/bin/server-start-master +13 -14
  38. data/bin/server-start-node +14 -15
  39. data/bin/server-stop-client +3 -0
  40. data/bin/server-stop-master +3 -0
  41. data/bin/server-stop-node +3 -0
  42. data/bin/server-update-hosts +48 -0
  43. data/config/hoe.rb +4 -3
  44. data/examples/plugin_without_plugin_directory.rb +1 -2
  45. data/generators/poolspec/USAGE +2 -2
  46. data/generators/poolspec/poolspec_generator.rb +2 -1
  47. data/generators/poolspec/templates/pool_spec_template.erb +3 -2
  48. data/lib/erlang/messenger/Rakefile +12 -0
  49. data/lib/erlang/messenger/ebin/client.app +19 -0
  50. data/lib/erlang/messenger/ebin/master.app +1 -1
  51. data/lib/erlang/messenger/ebin/node.app +1 -1
  52. data/lib/erlang/messenger/ebin/pm_client_rel-0.1.rel +1 -0
  53. data/lib/erlang/messenger/ebin/pm_master_rel-0.1.rel +1 -1
  54. data/lib/erlang/messenger/ebin/pm_node_rel-0.1.rel +1 -1
  55. data/lib/erlang/messenger/include/defines.hrl +27 -0
  56. data/lib/erlang/messenger/lib/eunit/.svn/all-wcprops +53 -0
  57. data/lib/erlang/messenger/lib/eunit/.svn/entries +140 -0
  58. data/lib/erlang/messenger/lib/eunit/.svn/format +1 -0
  59. data/lib/erlang/messenger/lib/eunit/.svn/prop-base/NOTES.svn-base +5 -0
  60. data/lib/erlang/messenger/lib/eunit/.svn/text-base/AUTHORS.svn-base +2 -0
  61. data/lib/erlang/messenger/lib/eunit/.svn/text-base/CHANGELOG.svn-base +14 -0
  62. data/lib/erlang/messenger/lib/eunit/.svn/text-base/COPYING.svn-base +504 -0
  63. data/lib/erlang/messenger/lib/eunit/.svn/text-base/NOTES.svn-base +276 -0
  64. data/lib/erlang/messenger/lib/eunit/.svn/text-base/README.svn-base +3 -0
  65. data/lib/erlang/messenger/lib/eunit/.svn/text-base/sys.config.svn-base +9 -0
  66. data/lib/erlang/messenger/lib/eunit/.svn/text-base/vsn.mk.svn-base +1 -0
  67. data/lib/erlang/messenger/lib/eunit/doc/.svn/all-wcprops +59 -0
  68. data/lib/erlang/messenger/lib/eunit/doc/.svn/entries +142 -0
  69. data/lib/erlang/messenger/lib/eunit/doc/.svn/format +1 -0
  70. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/erlang.png.svn-base +5 -0
  71. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/eunit.html.svn-base +5 -0
  72. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/index.html.svn-base +5 -0
  73. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/modules-frame.html.svn-base +5 -0
  74. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/overview-summary.html.svn-base +5 -0
  75. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/packages-frame.html.svn-base +5 -0
  76. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/edoc-info.svn-base +3 -0
  77. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/erlang.png.svn-base +0 -0
  78. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/eunit.html.svn-base +172 -0
  79. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/index.html.svn-base +17 -0
  80. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/modules-frame.html.svn-base +12 -0
  81. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview-summary.html.svn-base +984 -0
  82. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview.edoc.svn-base +980 -0
  83. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/packages-frame.html.svn-base +11 -0
  84. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/stylesheet.css.svn-base +55 -0
  85. data/lib/erlang/messenger/lib/eunit/ebin/.svn/all-wcprops +5 -0
  86. data/lib/erlang/messenger/lib/eunit/ebin/.svn/dir-prop-base +8 -0
  87. data/lib/erlang/messenger/lib/eunit/ebin/.svn/entries +28 -0
  88. data/lib/erlang/messenger/lib/eunit/ebin/.svn/format +1 -0
  89. data/lib/erlang/messenger/lib/eunit/examples/.svn/all-wcprops +23 -0
  90. data/lib/erlang/messenger/lib/eunit/examples/.svn/entries +66 -0
  91. data/lib/erlang/messenger/lib/eunit/examples/.svn/format +1 -0
  92. data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/eunit_examples.erl.svn-base +5 -0
  93. data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/fib.erl.svn-base +5 -0
  94. data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/eunit_examples.erl.svn-base +339 -0
  95. data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/fib.erl.svn-base +19 -0
  96. data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/tests.txt.svn-base +1 -0
  97. data/lib/erlang/messenger/lib/eunit/include/.svn/all-wcprops +11 -0
  98. data/lib/erlang/messenger/lib/eunit/include/.svn/entries +41 -0
  99. data/lib/erlang/messenger/lib/eunit/include/.svn/format +1 -0
  100. data/lib/erlang/messenger/lib/eunit/include/.svn/prop-base/eunit.hrl.svn-base +5 -0
  101. data/lib/erlang/messenger/lib/eunit/include/.svn/text-base/eunit.hrl.svn-base +313 -0
  102. data/lib/erlang/messenger/lib/eunit/src/.svn/all-wcprops +113 -0
  103. data/lib/erlang/messenger/lib/eunit/src/.svn/entries +259 -0
  104. data/lib/erlang/messenger/lib/eunit/src/.svn/format +1 -0
  105. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/autoload.erl.svn-base +5 -0
  106. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/code_monitor.erl.svn-base +5 -0
  107. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit.erl.svn-base +5 -0
  108. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_autoexport.erl.svn-base +5 -0
  109. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_data.erl.svn-base +5 -0
  110. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_internal.hrl.svn-base +5 -0
  111. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_lib.erl.svn-base +5 -0
  112. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_proc.erl.svn-base +5 -0
  113. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_serial.erl.svn-base +5 -0
  114. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_server.erl.svn-base +5 -0
  115. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_striptests.erl.svn-base +5 -0
  116. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_test.erl.svn-base +5 -0
  117. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tests.erl.svn-base +5 -0
  118. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tty.erl.svn-base +5 -0
  119. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/file_monitor.erl.svn-base +5 -0
  120. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/autoload.erl.svn-base +388 -0
  121. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/code_monitor.erl.svn-base +243 -0
  122. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.app.src.svn-base +21 -0
  123. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.appup.src.svn-base +1 -0
  124. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.erl.svn-base +196 -0
  125. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_autoexport.erl.svn-base +102 -0
  126. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_data.erl.svn-base +798 -0
  127. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_internal.hrl.svn-base +48 -0
  128. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_lib.erl.svn-base +682 -0
  129. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_proc.erl.svn-base +552 -0
  130. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_serial.erl.svn-base +157 -0
  131. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_server.erl.svn-base +340 -0
  132. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_striptests.erl.svn-base +64 -0
  133. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_test.erl.svn-base +334 -0
  134. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tests.erl.svn-base +45 -0
  135. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tty.erl.svn-base +272 -0
  136. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/file_monitor.erl.svn-base +409 -0
  137. data/lib/erlang/messenger/pm_client_rel-0.1.boot +0 -0
  138. data/lib/erlang/messenger/pm_client_rel-0.1.script +238 -0
  139. data/lib/erlang/messenger/pm_master_rel-0.1.boot +0 -0
  140. data/lib/erlang/messenger/pm_master_rel-0.1.script +82 -85
  141. data/lib/erlang/messenger/pm_node_rel-0.1.boot +0 -0
  142. data/lib/erlang/messenger/pm_node_rel-0.1.script +80 -85
  143. data/lib/erlang/messenger/src/client_app.erl +39 -0
  144. data/lib/erlang/messenger/src/client_server.erl +60 -0
  145. data/lib/erlang/messenger/src/pm_client.erl +48 -18
  146. data/lib/erlang/messenger/src/pm_client_old.erl +52 -0
  147. data/lib/erlang/messenger/src/pm_client_supervisor.erl +38 -0
  148. data/lib/erlang/messenger/src/pm_cluster.erl +20 -16
  149. data/lib/erlang/messenger/src/pm_event_manager.erl +27 -0
  150. data/lib/erlang/messenger/src/pm_master.erl +126 -34
  151. data/lib/erlang/messenger/src/pm_master_event_handler.erl +72 -0
  152. data/lib/erlang/messenger/src/pm_master_supervisor.erl +9 -10
  153. data/lib/erlang/messenger/src/pm_node.erl +107 -30
  154. data/lib/erlang/messenger/src/pm_node_supervisor.erl +13 -15
  155. data/lib/erlang/messenger/src/pm_packager.erl +5 -2
  156. data/lib/erlang/messenger/src/pm_strings.erl +11 -0
  157. data/lib/erlang/messenger/src/utils.erl +43 -8
  158. data/lib/erlang/messenger/useful_snippets +17 -0
  159. data/lib/poolparty/aska/aska.rb +150 -0
  160. data/lib/poolparty/base_packages/haproxy.rb +19 -26
  161. data/lib/poolparty/base_packages/heartbeat.rb +48 -47
  162. data/lib/poolparty/base_packages/poolparty.rb +88 -36
  163. data/lib/poolparty/base_packages/runit.rb +21 -0
  164. data/lib/poolparty/config/postlaunchmessage.txt +5 -0
  165. data/lib/poolparty/core/array.rb +4 -1
  166. data/lib/poolparty/core/class.rb +2 -0
  167. data/lib/poolparty/core/exception.rb +2 -1
  168. data/lib/poolparty/core/hash.rb +2 -2
  169. data/lib/poolparty/core/kernel.rb +3 -3
  170. data/lib/poolparty/core/metaid.rb +15 -0
  171. data/lib/poolparty/core/object.rb +42 -2
  172. data/lib/poolparty/core/string.rb +21 -6
  173. data/lib/poolparty/core/symbol.rb +9 -0
  174. data/lib/poolparty/dependency_resolutions/puppet.rb +20 -7
  175. data/lib/poolparty/exceptions/CloudNotFoundException.rb +7 -0
  176. data/lib/poolparty/exceptions/LoadRulesException.rb +7 -0
  177. data/lib/poolparty/exceptions/MasterException.rb +10 -0
  178. data/lib/poolparty/helpers/binary.rb +37 -4
  179. data/lib/poolparty/helpers/console.rb +25 -8
  180. data/lib/poolparty/helpers/nice_printer.rb +36 -0
  181. data/lib/poolparty/helpers/optioner.rb +51 -16
  182. data/lib/poolparty/helpers/provisioner_base.rb +117 -28
  183. data/lib/poolparty/helpers/provisioners/master.rb +102 -35
  184. data/lib/poolparty/helpers/provisioners/slave.rb +25 -9
  185. data/lib/poolparty/modules/cloud_dsl.rb +13 -0
  186. data/lib/poolparty/modules/cloud_resourcer.rb +51 -8
  187. data/lib/poolparty/modules/configurable.rb +1 -1
  188. data/lib/poolparty/modules/definable_resource.rb +2 -2
  189. data/lib/poolparty/modules/file_writer.rb +37 -6
  190. data/lib/poolparty/modules/method_missing_sugar.rb +8 -3
  191. data/lib/poolparty/modules/pretty_printer.rb +1 -0
  192. data/lib/poolparty/modules/resourcing_dsl.rb +4 -2
  193. data/lib/poolparty/modules/thread_pool.rb +106 -0
  194. data/lib/poolparty/monitors/base_monitor.rb +65 -6
  195. data/lib/poolparty/monitors/monitors/cpu_monitor.rb +1 -1
  196. data/lib/poolparty/monitors/monitors/memory_monitor.rb +28 -1
  197. data/lib/poolparty/monitors/monitors/web_monitor.rb +18 -0
  198. data/lib/poolparty/net/messenger.rb +72 -0
  199. data/lib/poolparty/net/remote.rb +5 -2
  200. data/lib/poolparty/net/remote_bases/ec2/ec2_response_object.rb +66 -0
  201. data/lib/poolparty/net/remote_bases/ec2.rb +133 -131
  202. data/lib/poolparty/net/remote_instance.rb +28 -6
  203. data/lib/poolparty/net/remoter.rb +117 -64
  204. data/lib/poolparty/net/remoter_base.rb +49 -11
  205. data/lib/poolparty/plugins/deploydirectory.rb +66 -0
  206. data/lib/poolparty/plugins/line.rb +5 -4
  207. data/lib/poolparty/plugins/rsyncmirror.rb +26 -0
  208. data/lib/poolparty/plugins/runit.rb +96 -0
  209. data/lib/poolparty/plugins/svn.rb +1 -1
  210. data/lib/poolparty/pool/base.rb +47 -18
  211. data/lib/poolparty/pool/cloud.rb +121 -65
  212. data/lib/poolparty/pool/custom_resource.rb +4 -20
  213. data/lib/poolparty/pool/loggable.rb +3 -8
  214. data/lib/poolparty/pool/plugin.rb +14 -19
  215. data/lib/poolparty/pool/plugin_model.rb +8 -8
  216. data/lib/poolparty/pool/pool.rb +28 -11
  217. data/lib/poolparty/pool/resource.rb +109 -40
  218. data/lib/poolparty/pool/resources/class_package.rb +74 -33
  219. data/lib/poolparty/pool/resources/conditional.rb +32 -10
  220. data/lib/poolparty/pool/resources/custom_service.rb +30 -0
  221. data/lib/poolparty/pool/resources/exec.rb +6 -5
  222. data/lib/poolparty/pool/resources/gem_package.rb +52 -0
  223. data/lib/poolparty/pool/resources/mount.rb +22 -0
  224. data/lib/poolparty/pool/resources/package.rb +13 -3
  225. data/lib/poolparty/pool/resources/sshkey.rb +1 -1
  226. data/lib/poolparty/pool/resources/variable.rb +4 -0
  227. data/lib/poolparty/pool/script.rb +8 -6
  228. data/lib/poolparty/templates/haproxy.conf +1 -1
  229. data/lib/poolparty/templates/messenger/client/log-run.erb +2 -0
  230. data/lib/poolparty/templates/messenger/client/run.erb +4 -0
  231. data/lib/poolparty/templates/messenger/master/log-run.erb +2 -0
  232. data/lib/poolparty/templates/messenger/master/run.erb +4 -0
  233. data/lib/poolparty/templates/messenger/node/log-run.erb +2 -0
  234. data/lib/poolparty/templates/messenger/node/run.erb +4 -0
  235. data/lib/poolparty/templates/poolparty.monitor +1 -1
  236. data/lib/poolparty/templates/puppet.conf +0 -0
  237. data/lib/poolparty/templates/puppetcleaner +6 -0
  238. data/lib/poolparty/templates/puppetrerun +9 -0
  239. data/lib/poolparty/templates/puppetrunner +8 -0
  240. data/lib/poolparty/templates/yaws.conf +19 -0
  241. data/lib/poolparty/version.rb +1 -1
  242. data/lib/poolparty.rb +35 -6
  243. data/lib/poolpartycl.rb +4 -0
  244. data/log/pool.logs +0 -0
  245. data/poolparty.gemspec +574 -61
  246. data/spec/poolparty/aska/aska_spec.rb +122 -0
  247. data/spec/poolparty/bin/console_spec.rb +18 -0
  248. data/spec/poolparty/core/hash_spec.rb +4 -4
  249. data/spec/poolparty/core/object_spec.rb +29 -0
  250. data/spec/poolparty/core/string_spec.rb +6 -0
  251. data/spec/poolparty/core/time_spec.rb +0 -3
  252. data/spec/poolparty/helpers/binary_spec.rb +2 -2
  253. data/spec/poolparty/helpers/optioner_spec.rb +1 -4
  254. data/spec/poolparty/helpers/provisioner_base_spec.rb +14 -1
  255. data/spec/poolparty/helpers/provisioners/master_spec.rb +3 -3
  256. data/spec/poolparty/modules/cloud_resourcer_spec.rb +3 -3
  257. data/spec/poolparty/modules/configurable_spec.rb +4 -1
  258. data/spec/poolparty/monitors/base_monitor_spec.rb +94 -2
  259. data/spec/poolparty/monitors/monitors/cpu_monitor_spec.rb +0 -1
  260. data/spec/poolparty/monitors/monitors/memory_monitor_spec.rb +47 -0
  261. data/spec/poolparty/{helpers → net}/messenger_spec.rb +3 -1
  262. data/spec/poolparty/net/remote_bases/ec2_spec.rb +46 -5
  263. data/spec/poolparty/net/remote_instance_spec.rb +2 -1
  264. data/spec/poolparty/net/remote_spec.rb +30 -8
  265. data/spec/poolparty/net/remoter_base_spec.rb +4 -1
  266. data/spec/poolparty/net/remoter_spec.rb +11 -108
  267. data/spec/poolparty/plugins/deploydirectory_spec.rb +51 -0
  268. data/spec/poolparty/pool/base_spec.rb +43 -33
  269. data/spec/poolparty/pool/cloud_spec.rb +299 -248
  270. data/spec/poolparty/pool/custom_resource_spec.rb +10 -5
  271. data/spec/poolparty/pool/example_spec.rb +0 -84
  272. data/spec/poolparty/pool/plugin_model_spec.rb +3 -2
  273. data/spec/poolparty/pool/plugin_spec.rb +89 -62
  274. data/spec/poolparty/pool/pool_spec.rb +17 -2
  275. data/spec/poolparty/pool/resource_spec.rb +341 -236
  276. data/spec/poolparty/pool/resources/class_package_spec.rb +102 -66
  277. data/spec/poolparty/pool/resources/conditional_spec.rb +65 -26
  278. data/spec/poolparty/pool/resources/cron_spec.rb +3 -2
  279. data/spec/poolparty/pool/resources/exec_spec.rb +1 -1
  280. data/spec/poolparty/pool/resources/gem_spec.rb +18 -14
  281. data/spec/poolparty/pool/resources/remote_file_spec.rb +1 -1
  282. data/spec/poolparty/pool/resources/variable_spec.rb +1 -1
  283. data/spec/poolparty/pool/script_spec.rb +58 -37
  284. data/spec/poolparty/pool/test_plugins/webserver.rb +1 -0
  285. data/spec/poolparty/spec_helper.rb +16 -5
  286. data/tasks/deployment.rake +19 -3
  287. data/tasks/development.rake +11 -2
  288. data/tasks/ec2.rake +9 -1
  289. data/website/index.html +2 -2
  290. metadata +167 -70
  291. data/bin/pool-provision +0 -34
  292. data/erl_crash.dump +0 -8409
  293. data/examples/with_apache_plugin.rb +0 -22
  294. data/lib/erlang/messenger/Makefile +0 -15
  295. data/lib/erlang/messenger/ebin/master_app.beam +0 -0
  296. data/lib/erlang/messenger/ebin/node_app.beam +0 -0
  297. data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
  298. data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
  299. data/lib/erlang/messenger/ebin/pm_event_handler.beam +0 -0
  300. data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
  301. data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
  302. data/lib/erlang/messenger/ebin/pm_node.beam +0 -0
  303. data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
  304. data/lib/erlang/messenger/ebin/pm_packager.beam +0 -0
  305. data/lib/erlang/messenger/ebin/utils.beam +0 -0
  306. data/lib/erlang/messenger/lib/eunit/Makefile +0 -28
  307. data/lib/erlang/messenger/lib/eunit/ebin/autoload.beam +0 -0
  308. data/lib/erlang/messenger/lib/eunit/ebin/code_monitor.beam +0 -0
  309. data/lib/erlang/messenger/lib/eunit/ebin/eunit.beam +0 -0
  310. data/lib/erlang/messenger/lib/eunit/ebin/eunit_autoexport.beam +0 -0
  311. data/lib/erlang/messenger/lib/eunit/ebin/eunit_data.beam +0 -0
  312. data/lib/erlang/messenger/lib/eunit/ebin/eunit_lib.beam +0 -0
  313. data/lib/erlang/messenger/lib/eunit/ebin/eunit_proc.beam +0 -0
  314. data/lib/erlang/messenger/lib/eunit/ebin/eunit_serial.beam +0 -0
  315. data/lib/erlang/messenger/lib/eunit/ebin/eunit_server.beam +0 -0
  316. data/lib/erlang/messenger/lib/eunit/ebin/eunit_striptests.beam +0 -0
  317. data/lib/erlang/messenger/lib/eunit/ebin/eunit_test.beam +0 -0
  318. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tests.beam +0 -0
  319. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tty.beam +0 -0
  320. data/lib/erlang/messenger/lib/eunit/ebin/file_monitor.beam +0 -0
  321. data/lib/erlang/messenger/lib/eunit/src/Makefile +0 -46
  322. data/lib/erlang/messenger/src/pm_event_handler.erl +0 -21
  323. data/lib/poolparty/config/allowed_commands.yml +0 -1
  324. data/lib/poolparty/helpers/messenger.rb +0 -29
  325. data/lib/poolparty/plugins/git.rb +0 -39
  326. data/lib/poolparty/pool/resources/gem.rb +0 -28
  327. data/lib/poolparty/pool/tmp/.ppkeys +0 -3
  328. data/lib/poolparty/pool/tmp/happydayz +0 -1
  329. data/lib/poolparty/pool/tmp/install_master.sh +0 -33
  330. data/lib/poolparty/pool/tmp/pool.spec +0 -11
  331. data/lib/poolparty/pool/tmp/poolparty.pp +0 -600
  332. data/lib/poolparty/pool/tmp/tc-instances.list +0 -1
  333. data/lib/poolparty/templates/fileserver.conf +0 -4
  334. data/spec/poolparty/plugins/git_spec.rb +0 -33
  335. data/test_manifest.pp +0 -658
@@ -5,15 +5,30 @@ module PoolParty
5
5
 
6
6
  include Display
7
7
 
8
- # Load a file that contains a pool into memory
9
- def load_pool(filename)
10
- filename = filename.chomp
11
- unless filename && ::File.readable?(filename)
12
- puts "Could not load pool: #{filename}"
13
- exit
14
- else
15
- PoolParty::Script.inflate(open(filename).read, File.dirname(filename))
8
+ # Print help commands for the console
9
+ # level 0 - Basic help
10
+ # level 1 - Commands
11
+ def help(level=0)
12
+ @np = NicePrinter.new(60)
13
+ @np.header
14
+ @np.center "PoolParty console help"
15
+ @np.center "Basics"
16
+ @np << "Load your pool with load_pool(filename)"
17
+ @np << "Reference clouds with"
18
+ @np << "c = cloud :cloudname"
19
+ @np.empty
20
+ if level >= 1
21
+ @np.center "CloudSpeak"
22
+ @np << "All the commands set on your cloud can be called within the console"
23
+ @np << "list_of_running_instances - get list of running nodes"
24
+ @np << "list_of_pending_instances - get list of pending nodes"
25
+ @np << "available_monitors - get list of the available monitors on the cloud"
26
+ @np << " note: all monitors can be called as a method on the cloud"
27
+ @np << " i.e. CpuMonitor makes the method cpu available on the cloud"
28
+ @np.empty
16
29
  end
30
+ @np.footer
31
+ @np.print
17
32
  end
18
33
 
19
34
  # Clear all the pools and reload the console
@@ -21,6 +36,8 @@ module PoolParty
21
36
  # as well
22
37
  def reload!
23
38
  reset!
39
+ require File.dirname(__FILE__) + "/../../../poolparty"
40
+ require File.dirname(__FILE__) + "/../../../poolpartycl"
24
41
  end
25
42
 
26
43
  end
@@ -0,0 +1,36 @@
1
+ class NicePrinter
2
+
3
+ attr_accessor :num_lines
4
+ attr_reader :centered_lines
5
+
6
+ def initialize(num_lines=60)
7
+ @num_lines = num_lines
8
+ @centered_lines = @num_lines - 4
9
+ end
10
+
11
+ def center(line)
12
+ lines << "* #{line.center(@centered_lines)} *"
13
+ end
14
+ def left(line)
15
+ lines << "* #{line.ljust(@centered_lines)} *"
16
+ end
17
+ def header
18
+ lines << "*"*@num_lines
19
+ end
20
+ def footer
21
+ header
22
+ end
23
+ def empty
24
+ lines << "* #{" ".ljust(@centered_lines)} *"
25
+ end
26
+ def print
27
+ puts lines.join("\n")
28
+ ""
29
+ end
30
+ def <<(line)
31
+ left(line)
32
+ end
33
+ def lines
34
+ @lines ||= []
35
+ end
36
+ end
@@ -1,4 +1,6 @@
1
1
  require 'optparse'
2
+ require "poolparty"
3
+ require "poolpartycl"
2
4
  require 'rdoc/usage'
3
5
  require 'ostruct'
4
6
  require 'date'
@@ -11,9 +13,12 @@ module PoolParty
11
13
  def initialize(args=[], opts={}, &block)
12
14
  @arguments = parse_args(args)
13
15
  @parse_options = opts[:parse_options] ? opts[:parse_options] : true
16
+ @extra_help = opts.has_key?(:extra_help) ? opts[:extra_help] : ""
17
+ @abstract = opts[:abstract] ? opts[:abstract] : false
18
+ @command = opts[:command] ? opts[:command] : false
14
19
 
15
- set_default_options
16
20
  parse_options(&block) if @parse_options
21
+ set_default_options
17
22
  self
18
23
  end
19
24
 
@@ -26,43 +31,73 @@ module PoolParty
26
31
  end
27
32
 
28
33
  def set_default_options
29
- @options = {}
30
- @options[:verbose] = false
31
- @options[:quiet] = false
32
- @options[:version] = PoolParty::VERSION::STRING
34
+ self.verbose false
35
+ self.quiet false
33
36
  end
34
37
 
35
38
  def parse_options(&blk)
39
+ progname = $0.include?("-") ? "#{::File.basename($0[/(\w+)-/, 1])} #{::File.basename($0[/-(.*)/, 1])}" : ::File.basename($0)
36
40
  opts = OptionParser.new
37
- opts.banner = "Usage: pool [command] [options]"
41
+ opts.banner = "Usage: #{progname} #{@abstract ? "[command] " : ""}[options]"
38
42
 
39
43
  opts.separator ""
40
- opts.separator "Options:"
41
44
 
42
- opts.on('-V', '--version', 'Display the version') { output_version ; exit 0 }
43
- opts.on('-v', '--verbose', 'Be verbose') { @options[:verbose] = true }
44
- opts.on('-s [file]', '--spec-file [file]', 'Set the spec file') { |file| self.spec file }
45
- opts.on('-t', '--test', 'Testing mode') { self.testing "true" }
46
-
47
- blk.call(opts, self) if blk
45
+ unless @abstract
46
+ opts.separator "Options:"
47
+
48
+ opts.on('-v', '--verbose', 'Be verbose') { self.verbose true }
49
+ opts.on('-s [file]', '--spec-file [file]', 'Set the spec file') { |file| self.spec file.chomp }
50
+ opts.on('-t', '--test', 'Testing mode') { self.testing true }
51
+
52
+ blk.call(opts, self) if blk
53
+ end
48
54
 
55
+ opts.on('-V', '--version', 'Display the version') { puts @version ; exit 0 }
49
56
  opts.on_tail("-h", "--help", "Show this message") do
50
57
  puts opts
58
+ puts @extra_help
51
59
  exit
52
60
  end
53
61
 
54
62
  opts.parse(@arguments.dup)
55
63
 
56
- process_options
64
+ process_options
57
65
  output_options if verbose
66
+ unless @abstract
67
+ self.loaded_pool load_pool(self.spec || Binary.get_existing_spec_location)
68
+
69
+ self.loaded_clouds extract_cloud_from_options(self)
70
+ self.loaded_pools extract_pool_from_options(self)
71
+
72
+ reject_junk_options!
73
+ raise CloudNotFoundException.new("Please specify your cloud with -s, move it to ./pool.spec or in your POOL_SPEC environment variable") unless loaded_clouds && !loaded_clouds.empty?
74
+ loaded_pools.each do |pl|
75
+ pl.configure(self.options)
76
+ end
77
+ loaded_clouds.each do |cl|
78
+ cl.configure(self.options)
79
+ end
80
+ end
81
+ end
82
+ def reject_junk_options!
83
+ %w(loaded_pool cloudname extract_pool_from_options).each do |opt|
84
+ @options.delete(opt.to_sym)
85
+ end
58
86
  end
59
87
  def process_options
60
- @options[:verbose] = false if @options[:quiet]
61
88
  end
62
89
 
63
90
  def output_version
64
- puts version
91
+ puts @version
65
92
  end
66
93
 
67
94
  end
95
+
96
+ def extract_cloud_from_options(o)
97
+ o.cloudname ? [cloud(o.cloudname.downcase.to_sym)] : clouds.collect {|n,cl| cl}
98
+ end
99
+
100
+ def extract_pool_from_options(o)
101
+ o.poolname ? [pool(o.poolname.downcase.to_sym)] : pools.collect {|n,pl| pl}
102
+ end
68
103
  end
@@ -15,9 +15,13 @@ module PoolParty
15
15
  def self.configure_master(cloud, testing=false)
16
16
  Provisioner::Master.new(cloud).process_configure!(testing)
17
17
  end
18
+
19
+ def self.reconfigure_master(cloud, testing=false)
20
+ Provisioner::Master.new(cloud).process_reconfigure!(testing)
21
+ end
18
22
 
19
23
  def self.provision_slaves(cloud, testing=false)
20
- cloud.nonmaster_nonterminated_instances.each do |sl|
24
+ cloud.nonmaster_nonterminated_instances.each do |sl|
21
25
  provision_slave(sl, cloud, testing)
22
26
  end
23
27
  end
@@ -36,17 +40,26 @@ module PoolParty
36
40
  Provisioner::Slave.new(instance, cloud).process_configure!(testing)
37
41
  end
38
42
 
43
+ def self.process_clean_reconfigure_for!(instance, cloud, testing=false)
44
+ Provisioner::Master.new(cloud).process_clean_reconfigure_for!(instance, testing)
45
+ end
46
+
47
+ def self.clear_master_ssl_certs(cloud, testing=false)
48
+ Provisioner::Master.new(cloud).clear_master_ssl_certs
49
+ end
50
+
39
51
  class ProvisionerBase
40
52
 
41
53
  include Configurable
42
54
  include CloudResourcer
55
+ include FileWriter
43
56
 
44
- def initialize(instance,cloud=self, os=:ubuntu)
57
+ def initialize(instance,cld=self, os=:ubuntu)
45
58
  @instance = instance
46
- @cloud = cloud
59
+ @cloud = cld
47
60
 
48
61
  options(cloud.options) if cloud && cloud.respond_to?(:options)
49
- set_vars_from_options(instance.options) unless instance.nil? || instance.options.empty?
62
+ set_vars_from_options(instance.options) unless instance.nil? || !instance.options || !instance.options.empty?
50
63
  options(instance.options) if instance.respond_to?(:options)
51
64
 
52
65
  @os = os.to_s.downcase.to_sym
@@ -55,32 +68,56 @@ module PoolParty
55
68
  # Callback after initialized
56
69
  def loaded(opts={}, parent=self)
57
70
  end
71
+
72
+ ### Installation tasks
73
+
58
74
  # This is the actual runner for the installation
59
75
  def install
60
76
  valid? ? install_string : error
61
77
  end
78
+ # Write the installation tasks to a file in the storage directory
62
79
  def write_install_file
63
80
  error unless valid?
64
81
  ::FileUtils.mkdir_p Base.storage_directory unless ::File.exists?(Base.storage_directory)
65
82
  provisioner_file = ::File.join(Base.storage_directory, "install_#{name}.sh")
66
83
  ::File.open(provisioner_file, "w+") {|f| f << install }
67
84
  end
85
+ def name
86
+ @instance.name
87
+ end
88
+ # TODO: Clean up this method
68
89
  def process_install!(testing=false)
69
90
  error unless valid?
70
91
  write_install_file
71
- setup_runner(@cloud)
92
+ setup_runner
72
93
 
73
94
  unless testing
74
- puts "Logging on to #{@instance.ip}" if verbose
75
- @cloud.prepare_reconfiguration
95
+ vputs "Logging on to #{@instance.ip} (#{@instance.name})"
76
96
  @cloud.rsync_storage_files_to(@instance)
97
+ vputs "Preparing configuration on the master"
98
+
99
+ before_install(@instance)
100
+
101
+ process_clean_reconfigure_for!(@instance, testing)
102
+
103
+ vputs "Logging in and running provisioning on #{@instance.name}"
104
+ cmd = "cd #{Base.remote_storage_path} && /bin/chmod +x install_#{name}.sh && /bin/sh install_#{name}.sh; /bin/rm install_#{name}.sh"
105
+ verbose ? @cloud.run_command_on(cmd, @instance) : hide_output {@cloud.run_command_on(cmd, @instance)}
106
+
107
+ process_clean_reconfigure_for!(@instance, testing)
77
108
 
78
- cmd = "cd #{Base.remote_storage_path} && chmod +x install_#{name}.sh && /bin/sh install_#{name}.sh && rm install_#{name}.sh"
79
- hide_output do
80
- @cloud.run_command_on(cmd, @instance)
81
- end
82
- end
109
+ after_install(@instance)
110
+ end
111
+ end
112
+ # Install callbacks
113
+ # Before installation callback
114
+ def before_install(instance)
83
115
  end
116
+ def after_install(instance)
117
+ end
118
+
119
+ ### Configuraton tasks
120
+
84
121
  def configure
85
122
  valid? ? configure_string : error
86
123
  end
@@ -92,19 +129,48 @@ module PoolParty
92
129
  def process_configure!(testing=false)
93
130
  error unless valid?
94
131
  write_configure_file
95
- setup_runner(@cloud)
132
+ setup_runner
96
133
 
97
134
  unless testing
98
- puts "Logging on to #{@instance.ip}" if verbose
135
+ vputs "Logging on to #{@instance.ip}"
99
136
  @cloud.rsync_storage_files_to(@instance)
100
137
 
101
- cmd = "cd #{Base.remote_storage_path} && chmod +x configure_#{name}.sh && /bin/sh configure_#{name}.sh && rm configure_#{name}.sh"
102
- @cloud.run_command_on(cmd, @instance)
138
+ cmd = "cd #{Base.remote_storage_path} && /bin/chmod +x configure_#{name}.sh && /bin/sh configure_#{name}.sh && /bin/rm configure_#{name}.sh"
139
+ verbose ? @cloud.run_command_on(cmd, @instance) : hide_output {@cloud.run_command_on(cmd, @instance)}
140
+ end
141
+ end
142
+ def process_clean_reconfigure_for!(instance, testing=false)
143
+ if instance.is_a?(String)
144
+ name = instance
145
+ instance = MyOpenStruct.new(:name => name)
103
146
  end
147
+ vputs "Cleaning certs from master: #{instance.name}"
148
+ # puppetca --clean #{instance.name}.compute-1.internal; puppetca --clean #{instance.name}.ec2.internal
149
+ # find /etc/puppet/ssl -type f -exec rm {} \;
150
+ unless testing
151
+ # @cloud.run_command_on("rm -rf /etc/puppet/ssl", instance) unless instance.master?
152
+ str = returning String.new do |s|
153
+ s << "puppetca --clean #{instance.name}.compute-1.internal 2>&1 > /dev/null;"
154
+ s << "puppetca --clean #{instance.name}.ec2.internal 2>&1 > /dev/null"
155
+ end
156
+ @cloud.run_command_on(str, @cloud.master)
157
+ end
158
+ end
159
+ def clear_master_ssl_certs
160
+ str = returning String.new do |s|
161
+ s << "puppetca --clean master.compute-1.internal 2>&1 > /dev/null;"
162
+ s << "puppetca --clean master.ec2.internal 2>&1 > /dev/null"
163
+ end
164
+ @cloud.run_command_on("if [ -f '/usr/bin/puppetcleaner' ]; then /usr/bin/env puppetcleaner; else #{str}; fi", @cloud.master)
165
+ end
166
+ def process_reconfigure!(testing=false)
167
+ @cloud.run_command_on(PoolParty::Remote::RemoteInstance.puppet_runner_command, @instance) unless testing
104
168
  end
105
- def setup_runner(cloud)
106
- cloud.prepare_to_configuration
107
- cloud.build_and_store_new_config_file
169
+ # Tasks that need to be performed everytime we do any
170
+ # remote ssh'ing into any instance
171
+ def setup_runner(force=false)
172
+ @cloud.prepare_for_configuration
173
+ @cloud.build_and_store_new_config_file(force)
108
174
  end
109
175
  def valid?
110
176
  true
@@ -114,7 +180,7 @@ module PoolParty
114
180
  end
115
181
  # Gather all the tasks into one string
116
182
  def install_string
117
- (default_install_tasks).each do |task|
183
+ [default_install_tasks, last_install_tasks].flatten.each do |task|
118
184
  case task.class
119
185
  when String
120
186
  task
@@ -123,8 +189,11 @@ module PoolParty
123
189
  end
124
190
  end.nice_runnable
125
191
  end
192
+ def last_install_tasks
193
+ []
194
+ end
126
195
  def configure_string
127
- (default_configure_tasks).each do |task|
196
+ [default_configure_tasks, last_configure_tasks].flatten.each do |task|
128
197
  case task.class
129
198
  when String
130
199
  task
@@ -133,12 +202,17 @@ module PoolParty
133
202
  end
134
203
  end.nice_runnable
135
204
  end
205
+ def last_configure_tasks
206
+ []
207
+ end
136
208
  # Tasks with default tasks
137
209
  # These are run on all the provisioners, master or slave
138
210
  def default_install_tasks
139
211
  [
212
+ "#!/usr/bin/env sh",
140
213
  upgrade_system,
141
214
  fix_rubygems,
215
+ make_logger_directory,
142
216
  install_puppet,
143
217
  custom_install_tasks
144
218
  ] << install_tasks
@@ -208,7 +282,11 @@ module PoolParty
208
282
  end
209
283
 
210
284
  def fix_rubygems
211
- "echo '#{open(::File.join(template_directory, "gem")).read}' > /usr/bin/gem"
285
+ <<-EOE
286
+ #{installer_for("ruby rubygems")}
287
+ gem update --system # Force rubygems update
288
+ echo '#{open(::File.join(template_directory, "gem")).read}' > /usr/bin/gem
289
+ EOE
212
290
  end
213
291
 
214
292
  def create_local_node
@@ -228,11 +306,18 @@ module PoolParty
228
306
  def upgrade_system
229
307
  case @os
230
308
  when :ubuntu
231
- "
232
- touch /etc/apt/sources.list
233
- echo 'deb http://mirrors.kernel.org/ubuntu hardy main universe' >> /etc/apt/sources.list
234
- aptitude update -y
235
- aptitude autoclean
309
+ "
310
+ if grep -q 'http://mirrors.kernel.org/ubuntu hardy main universe' /etc/apt/sources.list
311
+ then
312
+ echo 'Updated already'
313
+ else
314
+ touch /etc/apt/sources.list
315
+ echo 'deb http://mirrors.kernel.org/ubuntu hardy main universe' >> /etc/apt/sources.list
316
+ aptitude update -y #{unix_hide_string} <<heredoc
317
+ Y
318
+
319
+ heredoc
320
+ fi
236
321
  "
237
322
  else
238
323
  "# No system upgrade needed"
@@ -242,7 +327,11 @@ module PoolParty
242
327
  def install_puppet
243
328
  "#{installer_for( puppet_packages )}"
244
329
  end
245
-
330
+
331
+ def make_logger_directory
332
+ "mkdir -p /var/log/poolparty"
333
+ end
334
+
246
335
  def create_poolparty_manifest
247
336
  <<-EOS
248
337
  cp #{Base.remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes
@@ -2,9 +2,10 @@ module PoolParty
2
2
  module Provisioner
3
3
  class Master < ProvisionerBase
4
4
 
5
- def initialize(cloud=self, os=:ubuntu)
6
- super(cloud.master, cloud, os)
7
- @master_ip = cloud.master.ip
5
+ def initialize(cl=self, os=:ubuntu)
6
+ raise MasterException.new(:no_ip) unless cl.master && cl.master.ip
7
+ super(cl.master, cl, os)
8
+ @master_ip = cl.master.ip
8
9
  end
9
10
 
10
11
  def valid?
@@ -17,19 +18,21 @@ module PoolParty
17
18
 
18
19
  def install_tasks
19
20
  [
20
- install_haproxy,
21
- install_heartbeat,
22
21
  create_local_hosts_entry,
23
22
  setup_basic_structure,
24
23
  setup_configs,
25
24
  setup_fileserver,
26
- setup_autosigning,
25
+ setup_autosigning,
26
+ install_poolparty,
27
+ setup_poolparty,
28
+ restart_puppetmaster,
29
+ run_first_time,
30
+ create_local_node,
27
31
  ] << configure_tasks
28
32
  end
29
33
 
30
34
  def configure_tasks
31
35
  [
32
- # start_puppetmaster,
33
36
  create_local_node,
34
37
  move_templates,
35
38
  create_poolparty_manifest,
@@ -40,30 +43,33 @@ module PoolParty
40
43
  # If the master is not in the hosts file, then add it to the hosts file
41
44
  def create_local_hosts_entry
42
45
  <<-EOS
43
- if [ -z \"$(grep -v '#' /etc/hosts | grep 'master')" ]; then echo '#{@master_ip} puppet master' >> /etc/hosts; fi
46
+ echo "Creating local host entry"
47
+ if [ -z \"$(grep -v '#' /etc/hosts | grep 'puppet')" ]; then echo '#{@master_ip} puppet master localhost' >> /etc/hosts; fi
48
+ hostname master
44
49
  EOS
45
50
  end
46
51
 
47
52
  def setup_basic_structure
48
53
  <<-EOS
49
- puppetmasterd --mkusers
50
- mkdir -p #{Base.remote_storage_path}
51
- echo "import 'nodes/*.pp'" > /etc/puppet/manifests/site.pp
52
- echo "import 'classes/*.pp'" >> /etc/puppet/manifests/site.pp
54
+ echo "Creating basic structure for poolparty"
53
55
  mkdir -p /etc/puppet/manifests/nodes
54
56
  mkdir -p /etc/puppet/manifests/classes
57
+ echo "import 'nodes/*.pp'" > /etc/puppet/manifests/site.pp
58
+ echo "import 'classes/*.pp'" >> /etc/puppet/manifests/site.pp
55
59
  cp #{Base.remote_storage_path}/namespaceauth.conf /etc/puppet/namespaceauth.conf
56
60
  EOS
57
61
  end
58
62
 
59
63
  def setup_configs
60
64
  <<-EOS
65
+ echo "Setting up configuration"
61
66
  echo "#{open(File.join(template_directory, "puppet.conf")).read}" > /etc/puppet/puppet.conf
62
67
  EOS
63
68
  end
64
69
 
65
70
  def setup_fileserver
66
71
  <<-EOS
72
+ echo "Setting up the master fileserver"
67
73
  echo "
68
74
  [files]
69
75
  path #{Base.remote_storage_path}
@@ -76,10 +82,75 @@ mkdir -p /etc/poolparty
76
82
  # Change this eventually for better security supportsetup_fileserver
77
83
  def setup_autosigning
78
84
  <<-EOS
85
+ echo "Creating accessibility for the nodes"
79
86
  echo "*" > /etc/puppet/autosign.conf
80
87
  EOS
81
88
  end
89
+
90
+ def setup_poolparty
91
+ <<-EOS
92
+ echo "Setting the poolparty configuration"
93
+ cp #{Base.remote_storage_path}/#{Base.key_file_locations.first} "#{Base.base_config_directory}/.ppkeys"
94
+ cp #{Base.remote_storage_path}/#{Base.default_specfile_name} #{Base.base_config_directory}/#{Base.default_specfile_name}
95
+ EOS
96
+ end
97
+
98
+ def copy_ssh_app
99
+ "cp #{Base.remote_storage_path}/#{@cloud.full_keypair_name} #{@cloud.remote_keypair_path}" if @cloud.remote_keypair_path != "#{Base.remote_storage_path}/#{@cloud.full_keypair_name}"
100
+ end
101
+
102
+ def install_poolparty
103
+ <<-EOE
104
+ echo "Installing poolparty"
105
+ cd /var/poolparty
106
+ wget http://rubyforge.org/frs/download.php/44731/logging-0.9.4.gem -O logging.gem 2>&1
107
+ wget http://rubyforge.org/frs/download.php/45581/ZenTest-3.11.0.gem -O ZenTest.gem 2>&1
108
+ wget http://rubyforge.org/frs/download.php/45600/ParseTree-3.0.1.gem -O ParseTree.gem 2>&1
109
+ wget http://rubyforge.org/frs/download.php/45587/ruby2ruby-1.2.0.gem -O ruby2ruby.gem 2>&1
110
+ wget http://rubyforge.org/frs/download.php/45627/activesupport-2.1.2.gem -O activesupport.gem 2>&1
111
+ wget http://rubyforge.org/frs/download.php/18366/xml-simple-1.0.11.gem -O xml-simple.gem 2>&1
112
+ wget http://rubyforge.org/frs/download.php/45683/RubyInline-3.8.1.gem -O RubyInline.gem 2>&1
113
+ wget http://rubyforge.org/frs/download.php/42580/flexmock-0.8.3.gem -O flexmock.gem 2>&1
114
+ wget http://rubyforge.org/frs/download.php/45685/hoe-1.8.2.gem -O hoe.gem 2>&1
115
+ wget http://rubyforge.org/frs/download.php/18698/lockfile-1.4.3.gem -O lockfile.gem 2>&1
116
+ wget http://rubyforge.org/frs/download.php/45546/rubyforge-1.0.1.gem -O rubyforge.gem 2>&1
117
+ wget http://rubyforge.org/frs/download.php/43954/rake-0.8.3.gem -O rake.gem 2>&1
118
+ wget http://rubyforge.org/frs/download.php/45589/sexp_processor-3.0.0.gem -O sexp_processor.gem 2>&1
119
+ wget http://github.com/auser/poolparty/tree/master%2Fpkg%2Fpoolparty.gem?raw=true -O poolparty.gem 2>&1
120
+ # wget http://rubyforge.org/frs/download.php/43666/amazon-ec2-0.3.1.gem -O amazon-ec2.gem 2>&1
82
121
 
122
+ #{
123
+ %w(rake lockfile rubyforge hoe ZenTest sexp_processor flexmock logging activesupport
124
+ RubyInline ParseTree ruby2ruby xml-simple poolparty).map do |dep|
125
+ "gem install --ignore-dependencies -y --no-ri --no-rdoc #{dep}.gem #{unix_hide_string}"
126
+ end.join("\n")
127
+ }
128
+ EOE
129
+ end
130
+
131
+ # ps aux | grep puppetmasterd | awk '{print $2}' | xargs kill
132
+ # /etc/init.d/puppetmaster stop; rm -rf /etc/puppet/ssl; /etc/init.d/puppetmaster start
133
+ def restart_puppetmaster
134
+ <<-EOS
135
+ echo "(Re)starting poolparty"
136
+ . /etc/profile
137
+ # /etc/init.d/puppetmaster stop #{unix_hide_string}
138
+ ps aux | grep puppetmaster | awk '{print $2}' | xargs kill;rm -rf /etc/puppet/ssl;puppetmasterd --verbose;/etc/init.d/puppetmaster start
139
+ EOS
140
+ end
141
+
142
+ def run_first_time
143
+ <<-EOE
144
+ echo "Running first time run"
145
+ cp #{Base.remote_storage_path}/#{Base.template_directory}/puppetrerun /usr/bin/puppetrerun
146
+ cp #{Base.remote_storage_path}/#{Base.template_directory}/puppetrunner /usr/bin/puppetrunner
147
+ chmod +x /usr/bin/puppetrerun
148
+ chmod +x /usr/bin/puppetrunner
149
+ EOE
150
+ end
151
+
152
+ # TODO:
153
+ # Consider this method in the manifest
83
154
  def create_local_node
84
155
  str = <<-EOS
85
156
  node default {
@@ -91,48 +162,44 @@ node default {
91
162
  node "#{ri.name}" inherits default {}
92
163
  EOS
93
164
  end
94
- "echo '#{str}' > /etc/puppet/manifests/nodes/nodes.pp"
165
+ "echo '#{str}' > #{Base.manifest_path}/nodes/nodes.pp"
95
166
  end
96
167
 
97
168
  def move_templates
98
169
  <<-EOS
170
+ echo "Moving templates into place"
99
171
  mkdir -p #{Base.template_path}
100
- cp #{Base.remote_storage_path}/#{Base.template_directory}/* #{Base.template_path}
172
+ cp -R #{Base.remote_storage_path}/#{Base.template_directory}/* #{Base.template_path}
101
173
  EOS
102
174
  end
103
175
 
104
176
  def create_poolparty_manifest
105
177
  <<-EOS
106
- mv #{Base.remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes/poolparty.pp
107
- cp #{Base.remote_storage_path}/#{Base.key_file_locations.first} "#{Base.base_config_directory}/.ppkeys"
108
- cp #{Base.remote_storage_path}/#{Base.default_specfile_name} #{Base.base_config_directory}/#{Base.default_specfile_name}
178
+ echo "Creating the manifest"
179
+ cp #{Base.remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes/poolparty.pp
109
180
  #{copy_ssh_app}
110
181
  EOS
111
182
  end
112
183
 
113
- def copy_ssh_app
114
- if @cloud.remote_keypair_path != "#{Base.remote_storage_path}/#{@cloud.full_keypair_name}"
115
- "cp #{Base.remote_storage_path}/#{@cloud.full_keypair_name} #{@cloud.remote_keypair_path}"
116
- end
117
- end
118
-
119
- # ps aux | grep puppetmasterd | awk '{print $2}' | xargs kill
120
- # rm -rf /etc/puppet/ssl
121
- # puppetmasterd --verbose
122
- def start_puppetmaster
123
- <<-EOS
124
- EOS
184
+ def clean_master_certs
185
+ str = returning Array.new do |s|
186
+ s << "puppetca --clean master.compute-1.internal 2>&1 > /dev/null"
187
+ s << "puppetca --clean master.ec2.internal 2>&1 > /dev/null"
188
+ end.join(";")
189
+ "if [ -f '/usr/bin/puppetcleaner' ]; then /usr/bin/env puppetcleaner; else #{str}; fi"
125
190
  end
126
-
127
- # puppetd --listen --fqdn #{@instance.name}
191
+
128
192
  def restart_puppetd
129
193
  <<-EOS
130
- killall ruby
131
- rm -rf /etc/puppet/ssl/*
132
- puppetmasterd --verbose
133
- . /etc/profile && #{@instance.puppet_runner_command}
194
+ echo "Running puppet manifest"
195
+ /usr/bin/puppetrunner
134
196
  EOS
135
197
  end
198
+ def last_install_tasks
199
+ [
200
+ "/usr/bin/puppetrerun"
201
+ ]
202
+ end
136
203
  end
137
204
  end
138
205
  end