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
@@ -17,24 +17,57 @@ module PoolParty
17
17
  resources[type] ||= []
18
18
  end
19
19
 
20
- def add_resource(type, opts={}, parent=self, &block)
21
- resource = get_resource(type, opts[:name], parent)
22
- if resource
23
- resource
20
+ def add_resource(type, opts={}, parent=self, &block)
21
+ if in_a_resource_store?(type, opts[:name])
22
+ @res = get_resource(type, opts[:name], parent)
23
+ # if should_duplicate_resource?(type, @res, parent, opts)
24
+ # unless @res.parent == parent
25
+ # @pa = parent
26
+ # @res.instance_eval {@parent = @pa}
27
+ # end
28
+ # parent.resource(type) << @res
29
+ # end
24
30
  else
25
- returning "PoolParty::Resources::#{type.to_s.camelize}".classify.constantize.new(opts, parent, &block) do |o|
26
- resource(type) << o
27
- end
31
+ @res = returning "PoolParty::Resources::#{type.to_s.camelize}".camelize.constantize.new(opts, parent, &block) do |o|
32
+ store_into_global_resource_store(o)
33
+ resource(type) << o
34
+ end
28
35
  end
36
+ @res
29
37
  end
30
-
31
- def get_resource(type, key, parent=self)
32
- resource(type).select {|resource| resource.key == key }.first
38
+ def should_duplicate_resource?(type, res, pare, opts)
39
+ pare != @res.parent &&
40
+ pare.cloud != @res.cloud &&
41
+ in_global_resource_store?(type, opts[:name]) &&
42
+ !in_resources?(type, res, pare)
43
+ end
44
+ def get_resource(ty, key, parent=self)
45
+ get_from_local_resource_store(ty, key, parent) || get_from_global_resource_store(ty, key)
46
+ end
47
+ def get_from_local_resource_store(type, key, parent)
48
+ resource(type).select {|r| r.key == key }.first
49
+ end
50
+ def in_a_resource_store?(type, key, parent=self)
51
+ !(get_resource(type, key) && in_global_resource_store?(type, key)).nil?
52
+ end
53
+ def in_resources?(type, key, parent=self)
54
+ !get_resource(type, key).nil?
55
+ end
56
+ def global_resources_store
57
+ $global_resources ||= []
58
+ end
59
+ def store_into_global_resource_store(r)
60
+ global_resources_store << r unless in_global_resource_store?(r.class_name_sym, r.key)
61
+ end
62
+ def get_from_global_resource_store(ty, key)
63
+ global_resources_store.select {|r| r if r.same_resources_of(ty, key) }.first
64
+ end
65
+ def in_global_resource_store?(ty, key)
66
+ !get_from_global_resource_store(ty, key).nil?
33
67
  end
34
-
35
68
  #:nodoc:
36
69
  def reset_resources!
37
- @resources = nil
70
+ $global_resources = $global_classpackage_store = @resources = nil
38
71
  end
39
72
 
40
73
  # def resources_string(pre="")
@@ -46,7 +79,7 @@ module PoolParty
46
79
  def custom_file(path, str)
47
80
  write_to_file_in_storage_directory(path, str)
48
81
  end
49
-
82
+
50
83
  class Resource
51
84
  attr_accessor :prestring, :poststring
52
85
 
@@ -58,7 +91,7 @@ module PoolParty
58
91
 
59
92
  def self.inherited(subclass)
60
93
  subclass = subclass.to_s.split("::")[-1] if subclass.to_s.index("::")
61
- lowercase_class_name = subclass.to_s.downcase
94
+ lowercase_class_name = subclass.to_s.underscore
62
95
 
63
96
  # Add add resource method to the Resources module
64
97
  unless PoolParty::Resources.respond_to?(lowercase_class_name.to_sym)
@@ -66,6 +99,9 @@ module PoolParty
66
99
  def #{lowercase_class_name}(opts={}, parent=self, &blk)
67
100
  add_resource(:#{lowercase_class_name}, opts, parent, &blk)
68
101
  end
102
+ def get_#{lowercase_class_name}(name)
103
+ get_resource(:#{lowercase_class_name}, name) if in_a_resource_store?(:#{lowercase_class_name}, name)
104
+ end
69
105
  EOE
70
106
  PoolParty::Resources.module_eval method
71
107
  PoolParty::Resources.add_has_and_does_not_have_methods_for(lowercase_class_name.to_sym)
@@ -88,59 +124,79 @@ module PoolParty
88
124
  # Then it takes the value of the block and sets whatever is sent there as
89
125
  # the options
90
126
  # Finally, it uses the parent's options as the lowest priority
91
- def initialize(opts={}, parent=self, &block)
127
+ def initialize(opts={}, parent=self, &block)
128
+ run_setup(parent, &block)
92
129
  # Take the options of the parents
93
- set_resource_parent(parent)
94
130
  set_vars_from_options(opts) unless opts.empty?
95
- self.instance_eval &block if block
131
+
132
+ set_resource_parent
133
+
96
134
  loaded(opts, @parent)
97
135
  end
98
136
 
99
- def set_resource_parent(parent=nil)
100
- if parent && parent != self
101
- @parent = parent
102
- requires parent.to_s if @parent.is_a?(PoolParty::Resources::Resource) && printable? && @parent.printable?
137
+ # Helper to set the containing parent on the resource
138
+ def set_resource_parent
139
+ if @parent && @parent != self
140
+ if can_set_requires_for_parent
141
+ # requires @parent.to_s
142
+ end
103
143
  end
104
144
  end
105
145
 
106
- # def requirement_tree
107
- # p = @parent
108
- # returning Array.new do |arr|
109
- # arr << p.to_s
110
- # while p && p != self && p.is_a?(PoolParty::Resources::Resource) && p.requires
111
- # arr << p.requires
112
- # p = p.parent
113
- # end
114
- # end.flatten.uniq
115
- # end
116
-
146
+ def can_set_requires_for_parent
147
+ @parent.is_a?(PoolParty::Resources::Resource) &&
148
+ @parent.printable? &&
149
+ @parent.name != name &&
150
+ !@parent.is_a?(PoolParty::Resources::Classpackage)
151
+ end
152
+
117
153
  # Stub, so you can create virtual resources
118
154
  # This is called after the resource is initialized
119
155
  # with the options given to it in the init-block
120
156
  def loaded(opts={}, parent=self)
121
157
  end
122
158
 
159
+ def cloud
160
+ @pa = parent
161
+ while !(@pa.is_a?(PoolParty::Cloud::Cloud) || @pa.nil? || @pa == self)
162
+ @pa = @pa.respond_to?(:parent) ? @pa.parent : nil
163
+ end
164
+ @pa
165
+ end
166
+
167
+ def parent_tree
168
+ @pa = self
169
+ returning Array.new do |arr|
170
+ while !(@pa.is_a?(PoolParty::Cloud::Cloud) || @pa.nil? || @pa == self)
171
+ @pa = @pa.respond_to?(:parent) ? @pa.parent : nil
172
+ arr << @pa
173
+ end
174
+ end
175
+ end
176
+
123
177
  # DSL Overriders
124
178
  include PoolParty::ResourcingDsl
125
179
 
180
+ def same_resources_of(t, k)
181
+ key == k && class_name_sym == t
182
+ end
183
+ def duplicatable?
184
+ false
185
+ end
126
186
  # This way we can subclass resources without worry
127
187
  def class_type_name
128
- self.class.to_s.top_level_class
129
- end
130
- def self.custom_function(str)
131
- custom_functions << str
188
+ self.class.to_s.top_level_class.underscore
132
189
  end
133
-
134
190
  def self.custom_function(str)
135
191
  custom_functions << str
136
- end
192
+ end
137
193
  def self.custom_functions
138
194
  @custom_functions ||= []
139
195
  end
140
196
  def custom_function(str)
141
197
  self.class.custom_functions << str
142
198
  end
143
-
199
+
144
200
  def self.custom_functions_to_string(pre="")
145
201
  returning Array.new do |output|
146
202
  PoolParty::Resources.available_custom_resources.each do |resource|
@@ -154,6 +210,14 @@ module PoolParty
154
210
  def disallowed_options
155
211
  []
156
212
  end
213
+ def allowed_options
214
+ [
215
+ :subscribe, :owner, :group, :path, :mode, :source, :notify, :subscribe, :check, :creates, :cwd, :command, :ensure,
216
+ :require, :schedule, :range, :alias, :hour, :minute, :user, :month, :monthday, :name, :onlyif, :unless, :refreshonly,
217
+ :refresh, :content, :template, :ip, :repeat, :provider, :key, :device, :fstype, :remounts, :options, :atboot, :before,
218
+ :binary, :status, :start, :stop, :restart, :pattern, :recurse
219
+ ]
220
+ end
157
221
  def key
158
222
  name
159
223
  end
@@ -163,6 +227,10 @@ module PoolParty
163
227
  def printable?
164
228
  true
165
229
  end
230
+ # Private method just for resource retrievling purposes
231
+ def class_name_sym
232
+ self.class.to_s.top_level_class.downcase.to_sym
233
+ end
166
234
  # We want to gather the options, but if the option sent is nil
167
235
  # then we want to override the option value by sending the key as
168
236
  # a method so that we can override this if necessary.
@@ -177,7 +245,8 @@ module PoolParty
177
245
  else
178
246
  opts = {}
179
247
  end
180
- @modified_options = opts.reject {|k,v| disallowed_options.include?(k) }
248
+ @full_allowed_options ||= allowed_options.reject {|ele| disallowed_options.include?(ele) }
249
+ @modified_options = opts.reject {|k,v| !@full_allowed_options.include?(k) }
181
250
  end
182
251
  @modified_options
183
252
  end
@@ -1,64 +1,105 @@
1
1
  module PoolParty
2
2
  module Resources
3
3
 
4
+ def global_classpackages
5
+ @global_classpackage_store ||= []
6
+ end
7
+
8
+ def in_global_classpackages?(name)
9
+ !get_from_global_classpackage_store(name).nil?
10
+ end
11
+
12
+ def get_from_global_classpackage_store(key)
13
+ global_classpackages.select {|a| a if key == a.name }.first
14
+ end
15
+
16
+ def store_into_global_classpackage_store(r)
17
+ arr = r.is_a?(Array) ? r : [r]
18
+ arr.each do |a|
19
+ global_classpackages << a unless in_global_classpackages?(a.name)
20
+ end
21
+ end
22
+
4
23
  # Wrap all the resources into a class package from
5
24
  def classpackage_with_self(parent=self, &block)
6
- @cp = PoolParty::Resources::Classpackage.new(parent.options, parent, &block)
7
- @cp.instance_eval {@resources = parent.resources}
8
- parent.instance_eval {@resources = nil}
9
- @cp
25
+ name = (parent.options.name || Classpackage.name(parent).to_s).sanitize
26
+ if in_global_classpackages?(name)
27
+ returning get_from_global_classpackage_store(name) do |cls|
28
+ cls.run_in_context(parent, &block) if block
29
+ end
30
+ else
31
+ @@parent_resources = parent.resources
32
+ @@cp = parent.add_resource(:classpackage, parent.options.merge(:name => name), parent, &block)
33
+ @@cp = @@cp.is_a?(Array) ? @@cp[-1] : @@cp
34
+
35
+ @@cp.run_in_context(parent) do
36
+ @@parent_resources.each do |ty, res|
37
+ resources[ty] = res unless ty == :classpackage
38
+ end
39
+ end
40
+ parent.instance_eval do
41
+ @resources = {:classpackage => [@@cp]}
42
+ end
43
+ @@cp.instance_eval &block if block
44
+
45
+ store_into_global_classpackage_store(@@cp)
46
+ end
47
+ return @@cp
48
+ @@parent_resources = nil
10
49
  end
11
50
 
12
51
  class Classpackage < Resource
13
52
 
14
53
  default_options({
15
- :name => nil
54
+ :name => "custom"
16
55
  })
17
56
 
18
57
  def initialize(opts={}, parent=self, &block)
19
58
  # Take the options of the parents
20
- set_parent(parent, false) if parent
59
+ # set_parent(parent, false) if parent
21
60
  set_vars_from_options(opts) unless opts.empty?
22
- self.instance_eval &block if block
23
- # store_block(&block)
61
+ # self.instance_eval &block if block
62
+ run_setup(parent, &block) if block
63
+ # self.run_in_context &block if block
64
+ # store_block(&block)
24
65
  loaded
25
66
  end
26
67
 
27
- def to_string
28
- returning String.new do |output|
29
- output << "# #{name.sanitize}"
30
- output << "\nclass #{name.sanitize.downcase} {\n"
31
- output << resources_string_from_resources(resources)
32
- output << "\n}\n"
68
+ def to_string(pre="")
69
+ if resources.size > 0 && not_printed?
70
+ returning Array.new do |output|
71
+ output << "#{pre}class #{name.sanitize.downcase} {"
72
+ output << "#{pre}#{resources_string_from_resources(resources)}"
73
+ output << "#{pre}}"
74
+ output << include_string
75
+ @not_printed = false
76
+ end.join("\n")
77
+ else
78
+ ""
33
79
  end
34
80
  end
35
81
 
82
+ def not_printed?
83
+ true
84
+ end
85
+
36
86
  def include_string
37
87
  "include #{name.sanitize.downcase}"
38
88
  end
39
89
 
40
- def name(*args)
41
- args.empty? ? (@name || parent.name) : @name ||= args.first
90
+ def virtual_resource?
91
+ true
92
+ end
93
+
94
+ def printable?
95
+ false
96
+ end
97
+
98
+ def self.name(parent=nil)
99
+ "custom_#{parent ? parent.object_id.to_s : "parent"}"
42
100
  end
43
101
 
44
102
  end
45
103
 
46
- def resources_string_from_resources(resources, pre="\t")
47
- @variables = resources.extract! {|name,resource| name == :variable}
48
- returning Array.new do |str|
49
- unless @variables.empty?
50
- str << "\n# Variables \n"
51
- @variables.each do |name, variable|
52
- str << variable.to_string("#{pre}")
53
- end
54
- end
55
-
56
- resources.each do |type, resource|
57
- str << "\n#{pre*2}# #{type}\n"
58
- str << resource.to_string("#{pre*2}")
59
- end
60
- end.join("\n")
61
- end
62
-
63
104
  end
64
105
  end
@@ -1,21 +1,30 @@
1
1
  module PoolParty
2
2
  module Resources
3
3
 
4
- def execute_if(attr_s="$hostname", str="", parent=self, &block)
5
- parent = parent.is_a?(PoolParty::Cloud::Cloud) ? parent : parent.parent
6
- opts = {:attribute => attr_s, :equal => str}
7
- options = parent.respond_to?(:options) ? parent.options.merge!(opts) : opts
8
- @c = PoolParty::Resources::Conditional.new(options, parent, &block)
9
- parent.instance_eval {add_resource(:conditional, options, parent, &block) }
10
- @c
4
+ def execute_on_master(parent=self, &block)
5
+ execute_if("$hostname", "master", {}, parent, &block)
6
+ end
7
+
8
+ def execute_on_node(parent=self, &block)
9
+ execute_if("$hostname", "master", {:notequal => true}, parent, &block)
10
+ end
11
+
12
+ def execute_if(attr_s="$hostname", str="", cust_opts={}, parent=self, &block)
13
+ # parent = parent.is_a?(PoolParty::Cloud::Cloud) ? parent : parent.parent
14
+ opts = {:attribute => attr_s, :equal => str}.merge(cust_opts)
15
+ options = (parent.respond_to?(:options) && parent && parent != self) ? parent.options.merge!(opts) : opts
16
+ # @c = PoolParty::Resources::Conditional.new(options, parent, &block)
17
+ # conditional(options, parent, &block)
18
+ add_resource(:conditional, options, parent, &block)
11
19
  end
12
20
 
13
21
  class Conditional < Resource
14
22
 
15
23
  def initialize(opts={}, parent=self, &block)
16
- name "#{opts[:attribute]} == #{opts[:equal]}"
24
+ name "#{opts[:name] ? opts[:name] : opts[:attribute]} #{opts[:equal]}"
17
25
  attribute opts[:attribute]
18
26
  equal opts[:equal]
27
+ notequal opts.has_key?(:notequal) ? opts[:notequal] : false
19
28
  super
20
29
  end
21
30
 
@@ -25,16 +34,29 @@ module PoolParty
25
34
  true
26
35
  end
27
36
 
37
+ def disallowed_options
38
+ [:comparison, :notequal]
39
+ end
40
+
28
41
  def printable?
29
42
  false
30
43
  end
31
44
 
45
+ def duplicatable?
46
+ false
47
+ end
48
+
32
49
  def to_string(pre="")
33
50
  returning Array.new do |output|
34
51
  output << "# #{name.sanitize}"
35
52
  output << "case #{attribute} {"
36
- output << "#{equal} : { #{resources_string_from_resources(resources)} }"
37
- output << "default : {}"
53
+ if notequal
54
+ output << "#{equal} : {}"
55
+ output << "default : { #{resources_string_from_resources(resources)} }"
56
+ else
57
+ output << "#{equal} : { #{resources_string_from_resources(resources)} }"
58
+ output << "default : {}"
59
+ end
38
60
  output << "}"
39
61
  end.join("\n")
40
62
  end
@@ -0,0 +1,30 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class Customservice < Resource
5
+
6
+ default_options({
7
+ :ensure => "running",
8
+ :provider => "base"
9
+ })
10
+
11
+ def bin(arg)
12
+ options.merge!(:binary => arg)
13
+ options.merge!(:start => arg)
14
+ options.merge!(:stop => arg.gsub(/start/, 'stop'))
15
+ options.merge!(:restart => "#{arg.gsub(/start/, 'stop')} && #{arg}")
16
+ end
17
+
18
+ def present
19
+ "running"
20
+ end
21
+ def absent
22
+ "stopping"
23
+ end
24
+ def class_type_name
25
+ "Service"
26
+ end
27
+ end
28
+
29
+ end
30
+ end
@@ -9,11 +9,12 @@ module PoolParty
9
9
 
10
10
  # Execs cannot have the following parameters
11
11
  # We use version in the gempackage resource
12
- # So we have to exclude it here. Alternatively, we could
13
- # exclude it in the gempackage, but this is an example
14
- # of how to exclude it as well
15
- def disallowed_options
16
- [:ensure, :name, :source, :version]
12
+ # So we have to exclude it here.
13
+ def allowed_options
14
+ [
15
+ :command, :creates, :cwd, :env, :environment, :group, :logoutput, :user,
16
+ :onlyif, :path, :refresh, :refreshonly, :returns, :timeout, :unless
17
+ ]
17
18
  end
18
19
 
19
20
  def key
@@ -0,0 +1,52 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class Gempackage < Resource
5
+
6
+ # When we call gempackage, we want the exec to run on the directory we suggest
7
+ # we also only want it to run if there is NOT a local gem already installed with
8
+ # the package details (version and name)
9
+ #
10
+ # TODO: Add it so that it tries to pull the gem off the master fileserver first...
11
+ def loaded(opts={}, parent=self)
12
+ if download_url
13
+
14
+ execute_on_master do
15
+ has_exec(:name => "download-#{name}", :cwd => Base.remote_storage_path, :command => "wget #{download_url} -O #{name}.gem", :ifnot => "test -f #{Base.remote_storage_path}/#{name}.gem")
16
+ end
17
+
18
+ has_file({
19
+ :name => "#{Base.remote_storage_path}/#{name}.gem",
20
+ :source => "#{Base.fileserver_base}/#{name}.gem",
21
+ :requires => get_host("master")
22
+ })
23
+
24
+ has_exec(opts.merge({:name => "#{name}", :cwd =>"#{Base.remote_storage_path}"})) do
25
+ command "gem install -y --no-ri --no-rdoc #{Base.remote_storage_path}/#{name}.gem"
26
+ ifnot "gem list --local #{name} | grep #{name} #{"| grep #{version}" if version}"
27
+ requires get_file("#{Base.remote_storage_path}/#{name}.gem")
28
+ end
29
+
30
+ else
31
+ has_exec(opts.merge({:name => "#{name}", :cwd => "/tmp", :path => "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/var/lib/gems/1.8/bin"})) do
32
+ command "gem install -y --no-ri --no-rdoc #{"--version #{version}" if version} #{"--source #{source}" if source} #{name} <<heredoc
33
+ 1
34
+ heredoc"
35
+ ifnot "gem list --local #{name} | grep #{name} #{"| grep #{version}" if version}"
36
+ end
37
+ end
38
+ end
39
+ def virtual_resource?
40
+ true
41
+ end
42
+ def printable?
43
+ true
44
+ end
45
+ def class_type_name
46
+ "Exec"
47
+ end
48
+
49
+ end
50
+
51
+ end
52
+ end
@@ -0,0 +1,22 @@
1
+ module PoolParty
2
+ module Resources
3
+
4
+ class Mount < Resource
5
+
6
+ default_options({
7
+ :name => "/data",
8
+ :remounts => "true",
9
+ :options => "rw,nosuid,noquota",
10
+ :fstype => "xfs",
11
+ :atboot => "yes"
12
+ })
13
+
14
+ def disallowed_options
15
+ [:name]
16
+ end
17
+
18
+
19
+ end
20
+
21
+ end
22
+ end
@@ -4,9 +4,19 @@ module PoolParty
4
4
  class Package < Resource
5
5
 
6
6
  default_options({
7
- :ensure => "installed",
8
- :name => nil
9
- })
7
+ :ensure => "installed"
8
+ })
9
+
10
+ def disallowed_options
11
+ [:name]
12
+ end
13
+
14
+ def present
15
+ "installed"
16
+ end
17
+ def absent
18
+ "absent"
19
+ end
10
20
 
11
21
  end
12
22
 
@@ -5,7 +5,7 @@ module PoolParty
5
5
 
6
6
  default_options({
7
7
  :command => nil,
8
- :key => "ALONGSTRINGOFDIGITS",
8
+ # :key => "ALONGSTRINGOFDIGITS",
9
9
  :target => "~/.ssh/poolparty_id_rsa"
10
10
  })
11
11
 
@@ -11,6 +11,10 @@ module PoolParty
11
11
  def to_string(pre="\t")
12
12
  "$#{name} = #{value_string}"
13
13
  end
14
+
15
+ def duplicatable?
16
+ false
17
+ end
14
18
 
15
19
  def value_string
16
20
  value.to_option_string
@@ -22,14 +22,16 @@ module PoolParty
22
22
 
23
23
  def self.for_save_string
24
24
  returning Array.new do |out|
25
- clouds.each do |name, cl|
26
- with_cloud(cl) do
25
+ pools.collect {|n,pl| pl}.each do |pl|
26
+ out << "pool :#{pl.name} do"
27
+ clouds.each do |n,cl|
27
28
  out << <<-EOE
28
- cloud :#{name} do
29
- #{cl.minimum_runnable_options.map {|o| "\t#{o} \"#{cl.send o}\""}.join("\n")}
30
- end
29
+ cloud :#{cl.name} do
30
+ #{cl.minimum_runnable_options.map {|o| "#{o} #{cl.send(o).respec_string}"}.join("\n")}
31
+ end
31
32
  EOE
32
- end
33
+ end
34
+ out << "end"
33
35
  end
34
36
  end.join("\n")
35
37
  end
@@ -28,7 +28,7 @@ defaults
28
28
  stats uri /poolparty
29
29
  stats realm Statistics\ for\ PoolParty
30
30
 
31
- listen <%= name_haproxy %>
31
+ listen poolparty
32
32
  bind 0.0.0.0:<%= ports_haproxy.join(",0.0.0.0:") %>
33
33
  cookie POOLPARTYPARTY
34
34
  <%- node_ips_haproxy.chomp.split(/\t/).each_with_index do |ip, index| -%>
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ exec svlogd -tt ./main
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+
3
+ exec 2>&1
4
+ . /etc/profile && server-start-client
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ exec svlogd -tt ./main
@@ -0,0 +1,4 @@
1
+ #!/bin/sh
2
+
3
+ exec 2>&1
4
+ . /etc/profile && server-start-master
@@ -0,0 +1,2 @@
1
+ #!/bin/sh
2
+ exec svlogd -tt ./main