poolparty 0.2.18 → 0.2.69

Sign up to get free protection for your applications and to get access to all the features.
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}]