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
data/bin/cloud-contract CHANGED
@@ -6,22 +6,12 @@ require "poolpartycl"
6
6
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
7
  opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
8
8
  end
9
- load_pool(o.spec || Binary.get_existing_spec_location)
10
9
 
11
- @testing = o.testing
12
-
13
- include Remote
14
-
15
- begin
16
- @cloud = cloud(o.cloudname.downcase.to_sym)
17
- rescue
18
- puts "Cloud name required. Please specify it with -n name"
19
- exit(0)
20
- end
21
-
22
- with_cloud(@cloud, {:testing => @testing}) do
23
- puts header("Contracting cloud #{name}")
24
- puts "#{list_of_running_instances.size} running instances (#{minimum_instances} minimum instances)"
25
- puts testing ? "Not contracting (test mode)" : "Contracting the cloud if possible"
26
- contract_cloud_if_necessary( !testing )
10
+ o.loaded_clouds.each do |cl|
11
+ with_cloud(cl) do
12
+ puts header("Contracting cloud #{name}")
13
+ puts "#{list_of_running_instances.size} running instances (#{minimum_instances} minimum instances)"
14
+ puts testing ? "Not contracting (test mode)" : "Contracting the cloud if possible"
15
+ contract_cloud_if_necessary( !testing )
16
+ end
27
17
  end
@@ -0,0 +1,39 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
+ require "poolparty"
4
+ require "poolpartycl"
5
+
6
+ available_monitors = PoolParty::Monitors.available_monitors
7
+ o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
8
+ opts.on('-n name', '--name name', 'Host name') { |h| optioner.hostname h }
9
+ opts.on('-l', '--no-shell', 'No shell') {optioner.noshell true}
10
+ end
11
+
12
+ o.loaded_clouds.each do |cloud|
13
+
14
+ with_cloud(cloud) do
15
+
16
+ @nonprovisioned_nodes = list_of_running_instances.map {|a| a.name } - cloud.get_current_nodes
17
+ # @tp = ThreadPool.new(10)
18
+ @nonprovisioned_nodes.each do |node|
19
+ vputs "Provisioning #{node}"
20
+ next if node == "master"
21
+ # @tp.process do
22
+ str = returning Array.new do |s|
23
+ s << "/usr/sbin/puppetca --clean #{node}.compute-1.internal"
24
+ s << "/usr/sbin/puppetca --clean #{node}.ec2.internal"
25
+ end.join(";")
26
+
27
+ node_id = node.gsub(/node/, '')
28
+
29
+ cmd = ". /etc/profile && #{str};cloud-provision -n #{cloud.name} -i #{node_id};#{str}"
30
+ running_cmd = "ps aux | grep -v grep | grep \"cloud-provision -n #{cloud.name} -i #{node_id};\""
31
+
32
+ vputs "Executing #{cmd}"
33
+ running = %x[#{running_cmd}]
34
+ `#{cmd}` if running.chomp.empty?
35
+ end
36
+ # @tp.join
37
+ end
38
+
39
+ end
data/bin/cloud-expand CHANGED
@@ -4,24 +4,16 @@ require "poolparty"
4
4
  require "poolpartycl"
5
5
 
6
6
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
7
+ opts.on('-n name', '--name name', 'Expand the cloud on this name') { |c| optioner.cloudname c }
8
8
  end
9
- load_pool(o.spec || Binary.get_existing_spec_location)
10
9
 
11
- @testing = o.testing
10
+ o.loaded_clouds.each do |cloud|
12
11
 
13
- include Remote
14
-
15
- begin
16
- @cloud = cloud(o.cloudname.downcase.to_sym)
17
- rescue
18
- puts "Cloud name required. Please specify it with -n name"
19
- exit(0)
20
- end
21
-
22
- with_cloud(@cloud, {:testing => @testing}) do
23
- puts header("Expanding cloud #{name}")
24
- puts "#{list_of_running_instances.size} running instances of #{maximum_instances} possible instances"
25
- puts testing ? "Not expanding (test mode)" : "Expanding the cloud"
26
- expand_cloud_if_necessary( !testing )
12
+ with_cloud(cloud) do
13
+ vputs header("Expanding cloud #{name}")
14
+ vputs "#{list_of_running_instances.size} running instances of #{maximum_instances} possible instances"
15
+ vputs testing ? "Not expanding (test mode)" : "Expanding the cloud"
16
+ expand_cloud_if_necessary( !testing )
17
+ end
18
+
27
19
  end
@@ -0,0 +1,27 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
+ require "poolparty"
4
+ require "poolpartycl"
5
+
6
+ o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
+ opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
8
+ end
9
+
10
+ o.loaded_clouds.each do |cloud|
11
+
12
+ with_cloud(cloud) do
13
+ vputs header("Load handling cloud #{name}")
14
+ vputs "should_expand_cloud: #{should_contract_cloud?}"
15
+ if should_expand_cloud?
16
+ vputs "Expanding cloud based on load"
17
+ logger.debug "Expanding cloud based on load"
18
+ logger.debug rules_values
19
+ expand_cloud_if_necessary
20
+ elsif should_contract_cloud?
21
+ vputs "Contracting cloud based on load"
22
+ logger.debug rules_values
23
+ contract_cloud_if_necessary
24
+ end
25
+ end
26
+
27
+ end
data/bin/cloud-list CHANGED
@@ -2,23 +2,17 @@
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
4
  require "poolpartycl"
5
+
5
6
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
6
7
  opts.on('-f [remote|local]', '--from [remote|local]', 'Remote or local (default: local)') { |o| optioner.location o }
7
8
  opts.on('-r', '--remote', 'Remote listing') { optioner.location "remote" }
8
9
  opts.on('-l', '--local', 'Local listing') { optioner.location "local" }
9
10
  opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
10
11
  end
11
- load_pool(o.spec || Binary.get_existing_spec_location)
12
-
13
- @location = o.location ? o.location : "remote"
14
-
15
- include Remote
16
-
17
- @clouds = o.cloudname ? [cloud(o.cloudname.downcase.to_sym)] : clouds
18
12
 
19
- @clouds.each do |name, cloud|
13
+ o.loaded_clouds.each do |cloud|
20
14
 
21
- with_cloud(cloud, {:location => @location}) do
15
+ with_cloud(cloud) do
22
16
  puts header("Listing cloud #{name}")
23
17
  puts subheader("Active instances")
24
18
  puts list_of_running_instances.map{|a| a.to_s}.join("\n")
data/bin/cloud-maintain CHANGED
@@ -8,29 +8,23 @@ o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
8
8
  opts.on('-l', '--local', 'Local listing') { optioner.location "local" }
9
9
  opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
10
10
  end
11
- load_pool(o.spec || Binary.get_existing_spec_location)
12
11
 
13
- @location = o.location ? o.location : "remote"
12
+ o.loaded_clouds.each do |cloud|
14
13
 
15
- include Remote
16
-
17
- @clouds = o.cloudname ? [cloud(o.cloudname.downcase.to_sym)] : clouds
18
-
19
- @clouds.each do |name, cloud|
20
-
21
- with_cloud(cloud, {:location => @location, :testing => o.testing}) do
22
- logger.info header("Maintaining cloud #{name}")
14
+ with_cloud(cloud) do
15
+ vputs header("Maintaining cloud #{name}")
16
+ logger.warn "Maintaining cloud"
17
+ logger.warn rules_values
23
18
  if !minimum_number_of_instances_are_running?
24
- logger.warn "#{list_of_running_instances.size} running instances of between #{minimum_instances} and #{maximum_instances}"
25
- logger.warn "Launching new instance"
26
- expand_cloud_if_necessary( !testing )
27
- elsif !maximum_number_of_instances_are_not_running?
28
- logger.warn "#{list_of_running_instances.size} running instances of between #{minimum_instances} and #{maximum_instances}"
29
- logger.warn "Shutting down non-master instance"
19
+ vputs "#{list_of_running_instances.size} running instances of between #{minimum_instances} and #{maximum_instances}"
20
+ vputs "Launching new instance"
21
+ launch_minimum_number_of_instances
22
+ elsif maximum_number_of_instances_are_running?
23
+ vputs "#{list_of_running_instances.size} running instances of between #{minimum_instances} and #{maximum_instances}"
24
+ vputs "Shutting down non-master instance"
30
25
  contract_cloud_if_necessary( !testing )
31
- else
32
- logger.info "Cloud is maintained"
33
26
  end
27
+ vputs "Cloud is maintained"
34
28
  end
35
29
 
36
30
  end
data/bin/cloud-osxcopy CHANGED
@@ -2,18 +2,12 @@
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
4
  require "poolpartycl"
5
+
5
6
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
6
- opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
7
+ opts.on('-n name', '--name name', 'Copy the master ip for this cloud') { |c| optioner.cloudname c }
7
8
  end
8
- load_pool(o.spec || Binary.get_existing_spec_location)
9
-
10
- @location = o.location ? o.location : "remote"
11
-
12
- include Remote
13
-
14
- @clouds = o.cloudname ? [cloud(o.cloudname.downcase.to_sym)] : clouds
15
9
 
16
- @clouds.each do |name, cloud|
10
+ o.loaded_clouds.each do |cloud|
17
11
 
18
12
  with_cloud(cloud, {:location => @location}) do
19
13
  Kernel.system "echo #{master.ip.chomp} | pbcopy"
data/bin/cloud-provision CHANGED
@@ -2,34 +2,33 @@
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
4
  require "poolpartycl"
5
+
5
6
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
6
- opts.on('-c [master|slaves|all]', '--class [master|slave|all]', 'Provision class (default: all)') { |c| optioner.provision_class c }
7
- opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
7
+ opts.on('-n cloudname', '--name name', 'Start cloud by this name') { |c| optioner.cloudname c }
8
+ opts.on('-p', '--slave', 'Provision slave (default: false)') { optioner.provision_slave true }
9
+ opts.on('-i num', '--id num', 'Instance num to provision') { |i| optioner.instance_number i }
8
10
  end
9
11
 
10
- load_pool(o.spec || Binary.get_existing_spec_location)
11
-
12
- @provision_class = o.provision_class || "all"
13
-
14
- include Remote
12
+ o.loaded_clouds.each do |cloud|
15
13
 
16
- @clouds = o.cloudname ? {:cloud => cloud(o.cloudname.downcase.to_sym)} : clouds
14
+ with_cloud(cloud) do
17
15
 
18
- @clouds.each do |name, cloud|
19
-
20
- with_cloud(cloud, {:testing => o.testing, :location => @location, :provision_class => @provision_class}) do
16
+ instance_num = instance_number.to_i if instance_number
21
17
 
22
- provisioning_in_progress
23
-
24
- if provision_class == "slave" || provision_class == "all"
25
- Provisioner.provision_slaves(self, testing)
26
- end
27
- if provision_class == "master" || provision_class == "all"
28
- Provisioner.provision_master(self, testing)
18
+ if instance_num
19
+ @instance = get_instance_by_number( instance_num )
20
+ instance_num == 0 ? Provisioner.provision_master(self, testing) : Provisioner.provision_slave(@instance, self, testing)
21
+ Provisioner.process_clean_reconfigure_for!(@instance, self, testing)
22
+ else
23
+ if provision_slave
24
+ vputs "Provisioning slaves"
25
+ Provisioner.provision_slaves(self, testing)
26
+ else
27
+ vputs "Provisioning master"
28
+ (verbose || testing) ? Provisioner.provision_master(self, testing) : hide_output { Provisioner.provision_master(self, testing) }
29
+ end
29
30
  end
30
31
 
31
- provisioning_complete
32
+ end
32
33
 
33
- clear_base_directory unless testing
34
- end
35
34
  end
data/bin/cloud-refresh CHANGED
@@ -6,21 +6,12 @@ require "poolpartycl"
6
6
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
7
  opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
8
8
  end
9
- load_pool(o.spec || Binary.get_existing_spec_location)
10
9
 
11
- @provision_class = o.provision_class || "all"
12
-
13
- include Remote
14
-
15
- @clouds = o.cloudname ? {:cloud => cloud(o.cloudname.downcase.to_sym)} : clouds
16
-
17
- @clouds.each do |name, cloud|
10
+ o.loaded_clouds.each do |cloud|
18
11
 
19
- with_cloud(cloud, {:testing => o.testing}) do
20
- cmd = <<-EOE
21
- puppetrun --host #{list_of_node_names.join(", --host ")}
22
- EOE
23
- run_command_on(cmd.runnable, master)
12
+ with_cloud(cloud) do
13
+ vputs "Calling reconfigure_cloud!('force_reconfig') on #{master.ip}"
14
+ reconfigure_cloud!("force_reconfig")
24
15
  end
25
16
 
26
17
  end
data/bin/cloud-run CHANGED
@@ -11,9 +11,8 @@ o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
11
11
  opts.on('-c command', '--command command', 'Command to run on the instance') { |c| optioner.command c }
12
12
  end
13
13
 
14
- load_pool(o.spec || Binary.get_existing_spec_location)
15
-
16
14
  @cmd = o.command if (o.command)
17
- @cloud = o.cloudname ? cloud(o.cloudname.downcase.to_sym) : cloud(clouds.keys.first)
18
15
 
19
- instance = @cloud.run_command_on_instance_number( @cmd, o.num.to_i || 0 ) if @cloud
16
+ o.loaded_clouds.each do |cl|
17
+ @cloud.run_command_on_instance_number( @cmd, o.num.to_i || 0 ) if @cloud
18
+ end
data/bin/cloud-ssh CHANGED
@@ -2,12 +2,13 @@
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
4
  require "poolpartycl"
5
+
5
6
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
6
7
  opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
7
8
  opts.on('-i num', '--id num', 'Instance num to ssh (default: 0)') { |i| optioner.num i }
8
9
  end
9
10
  load_pool(o.spec || Binary.get_existing_spec_location)
10
11
 
11
- @cloud = o.cloudname ? cloud(o.cloudname.downcase.to_sym) : cloud(clouds.keys.first)
12
+ @cloud = o.loaded_clouds.first
12
13
 
13
- instance = @cloud.ssh_into_instance_number( o.num.to_i || 0 ) if @cloud
14
+ @cloud.ssh_into_instance_number( o.num.to_i || 0 ) if @cloud
data/bin/cloud-start CHANGED
@@ -2,32 +2,29 @@
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
4
  require "poolpartycl"
5
+
5
6
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
6
- opts.on('-c cloudname', '--cloud name', 'Start cloud by this name') { |c| optioner.cloudname c }
7
+ opts.on('-n cloudname', '--name name', 'Start cloud by this name') { |c| optioner.cloudname c }
8
+ opts.on('-d', '--daemonize', 'Daemonize starting the cloud') { optioner.daemon true }
7
9
  end
8
10
 
9
- load_pool(o.spec || Binary.get_existing_spec_location)
10
-
11
- @testing = o.testing
12
-
13
- @clouds = o.cloudname ? {:cloud => cloud(o.cloudname.downcase.to_sym)} : clouds
14
-
15
- @clouds.each do |name, cloud|
16
-
17
- with_cloud(cloud, {:testing => @testing}) do
18
- puts header("Starting cloud")
19
- puts "#{list_of_running_instances.size} running instances (#{minimum_instances} - #{maximum_instances})"
20
- if (minimum_instances - list_of_running_instances.size) > 0
11
+ o.loaded_clouds.each do |cloud|
12
+ with_cloud(cloud) do
13
+ vputs header("Starting cloud #{name}")
14
+ vputs "#{list_of_running_instances.size} running instances (#{minimum_instances} - #{maximum_instances})"
15
+ # if list_of_running_instances.size <= 1
21
16
  puts "Starting the master instance"
22
- if testing
23
- puts("\tNot launching while in testing mode")
24
- else
25
- provisioning_in_progress
26
- launch_and_configure_master!
27
- provisioning_complete
28
- end
17
+ # if testing
18
+ # puts("\tNot launching while in testing mode")
19
+ # else
20
+ vputs "Launching and configuring the master"
21
+ daemon ? daemonize {launch_and_configure_master!} : launch_and_configure_master!
22
+ # end
23
+ # end
24
+ when_no_pending_instances do
25
+ puts open(::File.join(File.dirname(__FILE__), "..", "lib", "poolparty", "config", "postlaunchmessage.txt")).read ^ {:master_ip => master.ip.chomp}
26
+ clear_base_directory unless testing
29
27
  end
30
- clear_base_directory unless testing
31
28
  end
32
29
 
33
30
  end
data/bin/cloud-stats ADDED
@@ -0,0 +1,17 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
+ require "poolparty"
4
+ require "poolpartycl"
5
+
6
+ o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
+ opts.on('-n name', '--name name', 'Stats for cloud name') { |c| optioner.cloudname c }
8
+ end
9
+
10
+ o.loaded_clouds.each do |cloud|
11
+
12
+ with_cloud(cloud) do
13
+ puts header("#{name.to_s.capitalize} cloud stats")
14
+ run_command_on(". /etc/profile && server-show-stats", master)
15
+ end
16
+
17
+ end
data/bin/cloud-terminate CHANGED
@@ -2,17 +2,14 @@
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
4
  require "poolpartycl"
5
+
5
6
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
6
- opts.on('-c [master|slaves|all]', '--class [master|slaves|all]', 'Provision class (default: all)') { |c| optioner.provision_class c }
7
- opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
7
+ opts.on('-n name', '--name name', 'Terminate the cloud of this name') { |c| optioner.cloudname c }
8
8
  end
9
- load_pool(o.spec || Binary.get_existing_spec_location)
10
-
11
- @clouds = o.cloudname ? {:cloud => cloud(o.cloudname.downcase.to_sym)} : clouds
12
9
 
13
- @clouds.each do |name, cloud|
10
+ o.loaded_clouds.each do |cloud|
14
11
 
15
- with_cloud(cloud, {:testing => o.testing, :location => @location, :provision_class => @provision_class}) do
12
+ with_cloud(cloud) do
16
13
 
17
14
  list_of_running_instances.each do |inst|
18
15
  puts "Shutting down #{inst.instance_id}"
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
+ require "poolparty"
4
+ require "poolpartycl"
5
+
6
+ o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
+ opts.on('-n name', '--name name', 'Stats for cloud name') { |c| optioner.cloudname c }
8
+ end
9
+
10
+ o.loaded_clouds.each do |cloud|
11
+ # @nodes = cloud.messenger_send!("get_current_nodes")
12
+ # @nodes = @nodes.split(" ").map {|a| a.split(/@/)[-1] }
13
+ puts cloud.get_current_nodes.join(" ")
14
+ end
data/bin/pool CHANGED
@@ -3,19 +3,19 @@ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
4
  require "poolpartycl"
5
5
 
6
- # Get the git-style program action
7
- # o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
8
- # opts.on('-n [name]','--name [name]', 'Binary to run') { |o| optioner.name o }
9
- # end
6
+ name = ARGV.select {|arg| arg if Binary.available_binaries_for("pool").include?(arg) }.first
7
+ # If the options include -h and they don't include a valid command, then we can just pass the
8
+ # original options back, but if they do contain a binary, we don't want -h getting through to
9
+ # these options, so we'll strip it if it's included
10
+ DUP_ARG = ARGV.dup
11
+ new_args = DUP_ARG.map {|arg| DUP_ARG.delete(arg) unless help_array.include?(arg) || Binary.available_binaries_for("pool").include?(arg) }
12
+ new_args = new_args.reject {|arg| Binary.available_binaries_for("pool").include?(arg) }.empty? ? ARGV : (name ? (help_array.each {|arg| DUP_ARG.delete(arg)}; DUP_ARG) : DUP_ARG)
10
13
 
11
- name = ARGV.shift
14
+ # Let's make sure if no command is passed in that we show the help message
15
+ new_args.push("-h") unless name
12
16
 
13
- # If there was no program action given
14
- if !name || name == "-h" || name == "--help"
15
- puts "Usage: pool <specfile> <action> <options>"
16
- puts "Pool actions:"
17
- puts Binary.list_binaries_for("pool")
18
- exit
17
+ o = PoolParty::Optioner.new(new_args, {:extra_help => "\nPool actions\n#{Binary.list_binaries_for("pool")}\n\n", :abstract => true}) do |opts, optioner|
18
+ opts.on('-n poolname', '--name name', 'Address this pool') { |c| optioner.poolname c }
19
19
  end
20
20
 
21
21
  program_name = "#{File.basename($0)}-#{name}"
@@ -27,5 +27,5 @@ command_line = "#{program_location}"
27
27
  if Binary.available_binaries_for("pool").include?(name)
28
28
  system command_line, *ARGV
29
29
  else
30
- puts "Unknown poolparty binary: #{program_name}"
30
+ puts "Unknown poolparty binary: #{name}"
31
31
  end
data/bin/pool-describe CHANGED
@@ -4,6 +4,5 @@ require "poolparty"
4
4
  require "poolpartycl"
5
5
 
6
6
  o = PoolParty::Optioner.new(ARGV)
7
- load_pool(o.spec || Binary.get_existing_spec_location)
8
7
 
9
8
  puts pool_describe
@@ -14,4 +14,5 @@ source = RubiGen::PathSource.new(:application,
14
14
  File.join(File.dirname(__FILE__), "../generators"))
15
15
  RubiGen::Base.reset_sources
16
16
  RubiGen::Base.append_sources source
17
+ ARGV.reject! {|a| a == "generate" }
17
18
  RubiGen::Scripts::Generate.new.run(ARGV, :generator => 'poolspec')
data/bin/pool-init ADDED
@@ -0,0 +1,28 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'rubigen'
5
+
6
+ # First, let's generate the spec
7
+ if %w(-V --version).include? ARGV.first
8
+ require 'poolspec/version'
9
+ puts "#{File.basename($0)} #{Poolspec::VERSION::STRING}"
10
+ exit(0)
11
+ end
12
+
13
+ name = ARGV.first
14
+
15
+ puts "Creating pool named #{name}"
16
+ `pool generate #{name}`
17
+
18
+ # Now add the keypairs for the pool based on the default pool name and cloud name
19
+
20
+ @pool = load_pool(self.spec || Binary.get_existing_spec_location)
21
+ @clouds = [@pool.cloud("#{name}_app")]
22
+
23
+ @clouds.each do |cloud|
24
+ with_cloud(cloud) do
25
+ vputs header("Creating keypair for #{name}")
26
+ create_keypair unless testing
27
+ end
28
+ end
data/bin/pool-list CHANGED
@@ -2,27 +2,29 @@
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
4
  require "poolpartycl"
5
+
5
6
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
6
7
  opts.on('-f [remote|local]', '--from [remote|local]', 'Remote or local (default: local)') { |o| optioner.location o }
7
8
  opts.on('-r', '--remote', 'Remote listing') { optioner.location "remote" }
8
9
  opts.on('-l', '--local', 'Local listing') { optioner.location "local" }
9
10
  opts.on('-n name', '--name name', 'Listing for pool name') { |p| optioner.poolname p }
10
11
  end
11
- load_pool(o.spec || Binary.get_existing_spec_location)
12
-
13
- @location = o.location ? o.location : "remote"
14
-
15
- include Remote
16
-
17
- @pools = o.poolname ? [pool(o.poolname.downcase.to_sym)] : pools
18
12
 
19
- @pools.each do |name, pool|
20
- with_pool(pool, {:location => @location}) do
13
+ o.loaded_pools.each do |pool|
14
+ with_pool(pool) do
21
15
  puts header("Listing pool #{name}")
22
16
  clouds.each do |name, cloud|
23
- puts subheader("Cloud: #{name}")
24
- out = location == "remote" ? cloud.list_from_remote({:cache => true}).map{|a| a.to_s} : cloud.list_from_local.map{|a| a.to_s}
25
- puts out
17
+ puts subheader("Cloud: #{name} (#{cloud.keypair})")
18
+ with_cloud(cloud) do
19
+ puts header("Listing cloud #{name}")
20
+ puts subheader("Active instances")
21
+ puts list_of_running_instances.map{|a| a.to_s}.join("\n")
22
+ puts ""
23
+ if list_of_pending_instances.size > 0
24
+ puts subheader("Pending instances")
25
+ puts list_of_pending_instances.map{|a| a.to_s}.join("\n")
26
+ end
27
+ end
26
28
  end
27
29
  end
28
30
  end
data/bin/pool-start CHANGED
@@ -2,29 +2,23 @@
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
4
  require "poolpartycl"
5
+
5
6
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
6
7
  opts.on('-p poolname', '--pool name', 'Start pool by this name') { |p| optioner.poolname p }
7
8
  end
8
9
 
9
- load_pool(o.spec || Binary.get_existing_spec_location)
10
-
11
- @testing = o.testing
12
-
13
- include Remote
14
-
15
- @pools = o.poolname ? [pool(o.poolname.downcase.to_sym)] : pools
16
-
17
- @pools.each do |name, pl|
10
+ o.loaded_pools.each do |pl|
18
11
 
19
- with_pool(pl, {:testing => @testing}) do
12
+ with_pool(pl) do
13
+ puts subheader("Pool: #{pl.name}")
20
14
 
21
- puts header("Starting pool")
22
- clouds.each do |name, cloud|
23
- puts subheader("Cloud: #{name}")
24
- puts "#{cloud.list_of_running_instances.size} running instances (#{cloud.minimum_instances} - #{cloud.maximum_instances})"
25
- if (cloud.minimum_instances - cloud.list_of_running_instances.size) > 0
26
- puts "Starting #{cloud.minimum_instances - cloud.list_of_running_instances.size} instances (from #{cloud.keypair})"
27
- testing ? puts("\tNot launching while in testing mode") : cloud.launch_minimum_number_of_instances
15
+ pool_clouds.each do |cl|
16
+ vputs subheader("Cloud: #{cl.name}")
17
+
18
+ cl.launch_and_configure_master!
19
+ when_no_pending_instances do
20
+ puts open(::File.join(File.dirname(__FILE__), "..", "lib", "poolparty", "config", "postlaunchmessage.txt")).read ^ {:master_ip => cl.master.ip.chomp}
21
+ clear_base_directory unless testing
28
22
  end
29
23
  end
30
24
  end
@@ -3,18 +3,25 @@ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
4
  require "poolpartycl"
5
5
 
6
- root_dir = ::File.expand_path( ::File.join(::File.dirname(__FILE__), "..", "lib/erlang/messenger") )
6
+ root_dir = ::File.expand_path( ::File.join(::File.dirname(__FILE__), "..", "lib/erlang/messenger/ebin") )
7
+
8
+ o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
9
+ end
7
10
 
8
11
  INCLUDE = "include"
9
- ERLC_FLAGS = "-I#{INCLUDE} +warn_unused_vars +warn_unused_import"
12
+ ERLC_FLAGS = "-I#{INCLUDE}"
10
13
  @version = "0.1"
11
14
 
15
+ # erl -pa ./ebin/ -run pm_packager recompile_scripts #{@version} -run init stop -noshell
16
+ # erlc -pa ./ebin -o ebin ./src/*.erl
17
+ # erl -pa ./ebin -s pm_packager start -s init stop
12
18
  cmd =<<-EOE
13
19
  cd #{root_dir}
14
- rm ebin/*
15
- erlc -pa ./ebin -W #{ERLC_FLAGS} -o ebin ./src/*.erl
16
- erl -pa ./ebin/ -run pm_packager recompile_scripts #{@version} -run init stop -noshell
17
- erl -pa ./ebin -s pm_packager start -s init stop
20
+ rake recompile
21
+ rake build_boot_scripts
18
22
  EOE
19
23
 
24
+ vputs "** Building messenger **", o
25
+ vputs "Running command #{cmd.runnable}", o
26
+
20
27
  out = %x[#{cmd.runnable}]