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
@@ -0,0 +1,409 @@
1
+ %% This library is free software; you can redistribute it and/or modify
2
+ %% it under the terms of the GNU Lesser General Public License as
3
+ %% published by the Free Software Foundation; either version 2 of the
4
+ %% License, or (at your option) any later version.
5
+ %%
6
+ %% This library is distributed in the hope that it will be useful, but
7
+ %% WITHOUT ANY WARRANTY; without even the implied warranty of
8
+ %% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
9
+ %% Lesser General Public License for more details.
10
+ %%
11
+ %% You should have received a copy of the GNU Lesser General Public
12
+ %% License along with this library; if not, write to the Free Software
13
+ %% Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
14
+ %% USA
15
+ %%
16
+ %% $Id$
17
+ %%
18
+ %% @private (for now)
19
+ %% @author Richard Carlsson <richardc@it.uu.se>
20
+ %% @copyright 2006 Richard Carlsson
21
+ %% @doc Erlang file monitoring service
22
+
23
+ %% The behaviour of this service is inspired by the open source FAM
24
+ %% daemon [http://oss.sgi.com/projects/fam/].
25
+
26
+ -module(file_monitor).
27
+
28
+ -export([start/0, start/1, start/2, stop/0, stop/1, monitor_file/2,
29
+ monitor_file/3, monitor_dir/2, monitor_dir/3, demonitor/1,
30
+ demonitor/2]).
31
+
32
+ -export([main/1]). %% private
33
+
34
+ -include_lib("kernel/include/file.hrl").
35
+
36
+ -define(POLL_TIME, 5000). % default; change with option poll_time
37
+ -define(SERVER, file_monitor).
38
+
39
+ %% NOTE: paths should be absolute, but this is not checked
40
+
41
+ %% We don't change the paths, e.g. from relative to absolute, but we
42
+ %% make sure that the path is a flat string and return it to the caller.
43
+
44
+ monitor_file(Path, Pid) ->
45
+ monitor_file(?SERVER, Path, Pid).
46
+
47
+ monitor_file(Server, Path, Pid) ->
48
+ monitor(Server, file, filename:flatten(Path), Pid).
49
+
50
+ monitor_dir(Path, Pid) ->
51
+ monitor_dir(?SERVER, Path, Pid).
52
+
53
+ monitor_dir(Server, Path, Pid) ->
54
+ monitor(Server, dir, filename:flatten(Path), Pid).
55
+
56
+ monitor(Server, Type, Path, Pid) when is_pid(Pid) ->
57
+ {ok, Ref} = command(Server, {monitor, {Type, Path}, Pid}),
58
+ {ok, Path, Ref}.
59
+
60
+ demonitor(Ref) ->
61
+ demonitor(?SERVER, Ref).
62
+
63
+ demonitor(Server, Ref) ->
64
+ ok = command(Server, {demonitor, Ref}).
65
+
66
+
67
+ command(Server, Cmd) ->
68
+ ServerPid = ensure_started(Server),
69
+ ServerPid ! {command, self(), Cmd},
70
+ receive
71
+ {ServerPid, Result} -> Result
72
+ end.
73
+
74
+
75
+ stop() ->
76
+ stop(?SERVER).
77
+
78
+ stop(Server) ->
79
+ Server ! stop,
80
+ ok.
81
+
82
+ ensure_started(Name) when is_atom(Name) ->
83
+ start(Name, []);
84
+ ensure_started(Pid) when is_pid(Pid) ->
85
+ Pid.
86
+
87
+ start() ->
88
+ start([]).
89
+
90
+ start(Options) ->
91
+ start(?SERVER, Options).
92
+
93
+ start(Name, Options) ->
94
+ case whereis(Name) of
95
+ undefined ->
96
+ Parent = self(),
97
+ Pid = spawn(fun () -> server_init(Name, Parent, Options) end),
98
+ receive
99
+ {Pid, ok} -> Pid;
100
+ {Pid, error} -> throw(no_server)
101
+ end;
102
+ Pid -> Pid
103
+ end.
104
+
105
+ -record(state, {name, time, dirs, files, clients, refs}).
106
+
107
+ server_init(undefined = Name, Parent, Options) ->
108
+ %% anonymous server
109
+ server_init_1(Name, Parent, Options);
110
+ server_init(Name, Parent, Options) ->
111
+ case catch register(Name, self()) of
112
+ true ->
113
+ server_init_1(Name, Parent, Options);
114
+ _ ->
115
+ Parent ! {self(), error},
116
+ exit(failed)
117
+ end.
118
+
119
+ server_init_1(Name, Parent, Options) ->
120
+ Parent ! {self(), ok},
121
+ server(set_timer(init_state(Name, Options))).
122
+
123
+ init_state(Name, Options) ->
124
+ Time = case proplists:get_value(poll_time, Options) of
125
+ N when is_integer(N), N >= 100 -> N;
126
+ _ -> ?POLL_TIME
127
+ end,
128
+ #state{name = Name,
129
+ time = Time,
130
+ dirs = dict:new(),
131
+ files = dict:new(),
132
+ clients = dict:new(),
133
+ refs = dict:new()}.
134
+
135
+ server(St) -> ?MODULE:main(St).
136
+
137
+ %% @private
138
+ main(St) ->
139
+ receive
140
+ {command, From, {monitor, Object, Pid}} when is_pid(Pid) ->
141
+ {Ref, St1} = new_monitor(Object, Pid, St),
142
+ server_reply(From, {ok, Ref}),
143
+ server(add_client(Pid, St1));
144
+ {command, From, {demonitor, Ref}} ->
145
+ server_reply(From, ok),
146
+ server(delete_monitor(Ref, St));
147
+ stop ->
148
+ exit(normal);
149
+ time ->
150
+ server(set_timer(poll(St)));
151
+ {'DOWN', _Ref, process, Pid, _Info} ->
152
+ server(purge_pid(Pid, del_client(Pid, St)));
153
+ _ ->
154
+ server(St)
155
+ end.
156
+
157
+ server_reply(To, Msg) ->
158
+ To ! {self(), Msg}.
159
+
160
+ set_timer(St) ->
161
+ erlang:send_after(St#state.time, self(), time),
162
+ St.
163
+
164
+
165
+ %% client monitoring (once a client, always a client - until death)
166
+
167
+ add_client(Pid, St) ->
168
+ case dict:is_key(Pid, St#state.clients) of
169
+ true ->
170
+ St;
171
+ false ->
172
+ Ref = erlang:monitor(process, Pid),
173
+ St#state{clients = dict:store(Pid, Ref, St#state.clients)}
174
+ end.
175
+
176
+ del_client(Pid, St) ->
177
+ case dict:find(Pid, St#state.clients) of
178
+ {ok, Ref} ->
179
+ erlang:demonitor(Ref, [flush]),
180
+ St#state{clients = dict:erase(Pid, St#state.clients)};
181
+ error ->
182
+ St
183
+ end.
184
+
185
+
186
+ -record(monitor, {pid, reference}).
187
+
188
+ -record(entry, {info = undefined, files = [], monitors = sets:new()}).
189
+
190
+ new_monitor(Object, Pid, St) ->
191
+ Ref = make_ref(),
192
+ Monitor = #monitor{pid = Pid, reference = Ref},
193
+ new_monitor(Object, Monitor, Ref,
194
+ St#state{refs = dict:store(Ref, {Pid, Object},
195
+ St#state.refs)}).
196
+
197
+ %% We must separate the namespaces for files and dirs, since we can't
198
+ %% trust the users to keep them distinct; there may be simultaneous file
199
+ %% and dir monitors for the same path.
200
+
201
+ new_monitor({file, Path}, Monitor, Ref, St) ->
202
+ {Ref, St#state{files = add_monitor(Path, Monitor, file,
203
+ St#state.files)}};
204
+ new_monitor({dir, Path}, Monitor, Ref, St) ->
205
+ {Ref, St#state{dirs = add_monitor(Path, Monitor, dir,
206
+ St#state.dirs)}}.
207
+
208
+ %% Adding a new monitor forces an immediate poll of the file, such that
209
+ %% previous monitors only see any real change, while the new monitor
210
+ %% either gets {exists, ...} or {error, ...}.
211
+
212
+ add_monitor(Path, Monitor, Type, Dict) ->
213
+ Entry = case dict:find(Path, Dict) of
214
+ {ok, OldEntry} -> poll_file(Path, OldEntry, Type);
215
+ error -> new_entry(Path, Type)
216
+ end,
217
+ event(#entry{}, dummy_entry(Entry, Monitor), Type, Path),
218
+ NewEntry = Entry#entry{monitors =
219
+ sets:add_element(Monitor,
220
+ Entry#entry.monitors)},
221
+ dict:store(Path, NewEntry, Dict).
222
+
223
+ dummy_entry(Entry, Monitor) ->
224
+ Entry#entry{monitors = sets:add_element(Monitor, sets:new())}.
225
+
226
+ new_entry(Path, Type) ->
227
+ refresh_entry(Path, #entry{monitors = sets:new()}, Type).
228
+
229
+ %% deleting a monitor by reference
230
+
231
+ delete_monitor(Ref, St) ->
232
+ case dict:find(Ref, St#state.refs) of
233
+ {ok, {_Pid, Object}} ->
234
+ St1 = St#state{refs = dict:erase(Ref, St#state.refs)},
235
+ delete_monitor_1(Ref, Object, St1);
236
+ error ->
237
+ St
238
+ end.
239
+
240
+ delete_monitor_1(Ref, {file, Path}, St) ->
241
+ St#state{files = delete_monitor_2(Path, Ref, St#state.files)};
242
+ delete_monitor_1(Ref, {dir, Path}, St) ->
243
+ St#state{dirs = delete_monitor_2(Path, Ref, St#state.dirs)}.
244
+
245
+ delete_monitor_2(Path, Ref, Dict) ->
246
+ case dict:find(Path, Dict) of
247
+ {ok, Entry} ->
248
+ purge_empty_sets(
249
+ dict:store(Path, purge_monitor_ref(Ref, Entry), Dict));
250
+ error ->
251
+ Dict
252
+ end.
253
+
254
+ purge_monitor_ref(Ref, Entry) ->
255
+ Entry#entry{monitors =
256
+ sets:filter(fun (#monitor{reference = R})
257
+ when R == Ref -> false;
258
+ (_) -> true
259
+ end,
260
+ Entry#entry.monitors)}.
261
+
262
+ %% purging monitors belonging to dead clients
263
+
264
+ purge_pid(Pid, St) ->
265
+ Files = dict:map(fun (_Path, Entry) ->
266
+ purge_monitor_pid(Pid, Entry)
267
+ end,
268
+ St#state.files),
269
+ Dirs = dict:map(fun (_Path, Entry) ->
270
+ purge_monitor_pid(Pid, Entry)
271
+ end,
272
+ St#state.dirs),
273
+ Refs = dict:filter(fun (_Ref, {P, _})
274
+ when P == Pid -> false;
275
+ (_, _) -> true
276
+ end,
277
+ St#state.refs),
278
+ St#state{refs = Refs,
279
+ files = purge_empty_sets(Files),
280
+ dirs = purge_empty_sets(Dirs)}.
281
+
282
+ purge_monitor_pid(Pid, Entry) ->
283
+ Entry#entry{monitors =
284
+ sets:filter(fun (#monitor{pid = P})
285
+ when P == Pid -> false;
286
+ (_) -> true
287
+ end,
288
+ Entry#entry.monitors)}.
289
+
290
+ purge_empty_sets(Dict) ->
291
+ dict:filter(fun (_Path, Entry) ->
292
+ sets:size(Entry#entry.monitors) > 0
293
+ end, Dict).
294
+
295
+
296
+ %% generating events upon state changes
297
+
298
+ %% Message formats:
299
+ %% {exists, Path, Type, #file_info{}, Files}
300
+ %% {changed, Path, Type, #file_info{}, Files}
301
+ %% {error, Path, Type, Info}
302
+ %%
303
+ %% Type is dir or file. If Type is file, Files is always []. If Type is
304
+ %% dir, Files is a list of {added, FileName} and {deleted, FileName},
305
+ %% where FileName is relative to dir, without any path component.
306
+ %%
307
+ %% When a new monitor is installed for a path, an initial {exists,...}
308
+ %% or {error,...} message will be sent to the monitor owner.
309
+ %%
310
+ %% Subsequent events will be either {changed,...} or {error,...}.
311
+
312
+ event(#entry{info = Info}, #entry{info = Info}, _Type, _Path) ->
313
+ %% no change in state
314
+ ok;
315
+ event(#entry{info = undefined}, #entry{info = NewInfo}=Entry,
316
+ Type, Path)
317
+ when not is_atom(NewInfo) ->
318
+ %% file or directory exists, for a fresh monitor
319
+ Files = [{added, F} || F <- Entry#entry.files],
320
+ cast({exists, Path, Type, NewInfo, Files}, Entry#entry.monitors);
321
+ event(_OldEntry, #entry{info = NewInfo}=Entry, Type, Path)
322
+ when is_atom(NewInfo) ->
323
+ %% file is not available
324
+ cast({error, Path, Type, NewInfo}, Entry#entry.monitors);
325
+ event(_OldEntry, Entry, file, Path) ->
326
+ %% a normal file has changed
327
+ cast({changed, Path, file, Entry#entry.info, []},
328
+ Entry#entry.monitors);
329
+ event(#entry{info = OldInfo}, #entry{info = NewInfo}=Entry, dir, Path)
330
+ when is_atom(OldInfo) ->
331
+ %% a directory has suddenly become available
332
+ Files = [{added, F} || F <- Entry#entry.files],
333
+ cast({changed, Path, dir, NewInfo, Files}, Entry#entry.monitors);
334
+ event(OldEntry, #entry{info = NewInfo}=Entry, dir, Path) ->
335
+ %% a directory has changed
336
+ Files = diff_lists(Entry#entry.files, OldEntry#entry.files),
337
+ cast({changed, Path, dir, NewInfo, Files}, Entry#entry.monitors).
338
+
339
+
340
+ poll(St) ->
341
+ St#state{files = dict:map(fun (Path, Entry) ->
342
+ poll_file(Path, Entry, file)
343
+ end,
344
+ St#state.files),
345
+ dirs = dict:map(fun (Path, Entry) ->
346
+ poll_file(Path, Entry, dir)
347
+ end,
348
+ St#state.dirs)}.
349
+
350
+ poll_file(Path, Entry, Type) ->
351
+ NewEntry = refresh_entry(Path, Entry, Type),
352
+ event(Entry, NewEntry, Type, Path),
353
+ NewEntry.
354
+
355
+ refresh_entry(Path, Entry, Type) ->
356
+ Info = get_file_info(Path),
357
+ Files = case Type of
358
+ dir when not is_atom(Info) -> get_dir_files(Path);
359
+ _ -> []
360
+ end,
361
+ Entry#entry{info = Info, files = Files}.
362
+
363
+
364
+ %% We clear some fields of the file_info so that we only trigger on real
365
+ %% changes; see the //kernel/file.erl manual and file.hrl for details.
366
+
367
+ get_file_info(Path) ->
368
+ case file:read_file_info(Path) of
369
+ {ok, Info} ->
370
+ Info#file_info{access = undefined,
371
+ atime = undefined};
372
+ {error, Error} ->
373
+ Error % posix error code as atom
374
+ end.
375
+
376
+ %% Listing the members of a directory; note that it yields the empty
377
+ %% list if it fails - this is not the place for error detection.
378
+
379
+ get_dir_files(Path) ->
380
+ case file:list_dir(Path) of
381
+ {ok, Files} -> lists:sort(Files);
382
+ {error, _} -> []
383
+ end.
384
+
385
+ %% both lists must be sorted for this diff to work
386
+
387
+ diff_lists([F1 | Fs1], [F2 | _]=Fs2) when F1 < F2 ->
388
+ [{added, F1} | diff_lists(Fs1, Fs2)];
389
+ diff_lists([F1 | _]=Fs1, [F2 | Fs2]) when F1 > F2 ->
390
+ [{deleted, F2} | diff_lists(Fs1, Fs2)];
391
+ diff_lists([_ | Fs1], [_ | Fs2]) ->
392
+ diff_lists(Fs1, Fs2);
393
+ diff_lists([F | Fs1], Fs2) ->
394
+ [{added, F} | diff_lists(Fs1, Fs2)];
395
+ diff_lists(Fs1, [F | Fs2]) ->
396
+ [{deleted, F} | diff_lists(Fs1, Fs2)];
397
+ diff_lists([], []) ->
398
+ [].
399
+
400
+
401
+ %% Multicasting events to clients
402
+
403
+ cast(Msg, Monitors) ->
404
+ sets:fold(fun (#monitor{pid = Pid, reference = Ref}, Msg) ->
405
+ %%erlang:display({file_monitor, Ref, Msg}),
406
+ Pid ! {file_monitor, Ref, Msg},
407
+ Msg % note that this is a fold, not a map
408
+ end,
409
+ Msg, Monitors).
@@ -0,0 +1,238 @@
1
+ %% script generated at {2008,11,23} {3,48,11}
2
+ {script,
3
+ {"client","0.1"},
4
+ [{preLoaded,[erlang,erl_prim_loader,prim_file,prim_inet,init,otp_ring0]},
5
+ {progress,preloaded},
6
+ {path,
7
+ ["/opt/local/lib/erlang/lib/kernel-2.12.5/ebin",
8
+ "/opt/local/lib/erlang/lib/stdlib-1.15.5/ebin"]},
9
+ {primLoad,[error_handler]},
10
+ {kernel_load_completed},
11
+ {progress,kernel_load_completed},
12
+ {path,["/opt/local/lib/erlang/lib/kernel-2.12.5/ebin"]},
13
+ {primLoad,
14
+ [zlib,wrap_log_reader,user_sup,user_drv,user,seq_trace,rpc,ram_file,
15
+ prim_zip,pg2,packages,os,net_kernel,net_adm,net,kernel_config,
16
+ kernel,inet_udp,inet_tcp_dist,inet_tcp,inet_sctp,inet_res,
17
+ inet_parse,inet_hosts,inet_gethost_native,inet_dns,inet_db,
18
+ inet_config,inet6_udp,inet6_tcp_dist,inet6_tcp,inet,
19
+ hipe_unified_loader,heart,group,global_search,global_group,global,
20
+ gen_udp,gen_tcp,gen_sctp,file_server,file_io_server,file,erts_debug,
21
+ error_logger,erl_reply,erl_epmd,erl_distribution,erl_ddll,
22
+ erl_boot_server,dist_util,dist_ac,disk_log_sup,disk_log_server,
23
+ disk_log_1,disk_log,code_server,code,auth,application_starter,
24
+ application_master,application_controller,application]},
25
+ {path,["/opt/local/lib/erlang/lib/stdlib-1.15.5/ebin"]},
26
+ {primLoad,
27
+ [zip,win32reg,unicode,timer,sys,supervisor_bridge,supervisor,string,
28
+ sofs,slave,shell_default,shell,sets,regexp,re,random,queue,qlc_pt,
29
+ qlc,proplists,proc_lib,pool,pg,otp_internal,ordsets,orddict,
30
+ ms_transform,math,log_mf_h,lists,lib,io_lib_pretty,io_lib_fread,
31
+ io_lib_format,io_lib,io,gen_server,gen_fsm,gen_event,gen,gb_trees,
32
+ gb_sets,filename,filelib,file_sorter,eval_bits,ets,escript,
33
+ error_logger_tty_h,error_logger_file_h,erl_tar,erl_scan,erl_pp,
34
+ erl_posix_msg,erl_parse,erl_lint,erl_internal,erl_expand_records,
35
+ erl_eval,erl_compile,erl_bits,epp,edlin_expand,edlin,digraph_utils,
36
+ digraph,dict,dets_v9,dets_v8,dets_utils,dets_sup,dets_server,dets,
37
+ calendar,c,beam_lib,base64,array]},
38
+ {path,["/opt/local/lib/erlang/lib/inets-5.0.12/ebin"]},
39
+ {primLoad,
40
+ [tftp_sup,tftp_logger,tftp_lib,tftp_file,tftp_engine,tftp_binary,
41
+ tftp,mod_trace,mod_security_server,mod_security,mod_responsecontrol,
42
+ mod_range,mod_log,mod_include,mod_htaccess,mod_head,mod_get,mod_esi,
43
+ mod_disk_log,mod_dir,mod_cgi,mod_browser,mod_auth_server,
44
+ mod_auth_plain,mod_auth_mnesia,mod_auth_dets,mod_auth,mod_alias,
45
+ mod_actions,inets_sup,inets_service,inets_app,inets,httpd_util,
46
+ httpd_sup,httpd_socket,httpd_script_env,httpd_response,
47
+ httpd_request_handler,httpd_request,httpd_misc_sup,httpd_manager,
48
+ httpd_log,httpd_instance_sup,httpd_file,httpd_example,httpd_esi,
49
+ httpd_conf,httpd_cgi,httpd_acceptor_sup,httpd_acceptor,httpd,
50
+ httpc_sup,httpc_response,httpc_request,httpc_profile_sup,
51
+ httpc_manager,httpc_handler_sup,httpc_handler,http_util,http_uri,
52
+ http_transport,http_response,http_request,http_cookie,http_chunk,
53
+ http,ftp_sup,ftp_response,ftp_progress,ftp]},
54
+ {path,["/opt/local/lib/erlang/lib/crypto-1.5.3/ebin"]},
55
+ {primLoad,[crypto_sup,crypto_server,crypto_app,crypto]},
56
+ {path,["/opt/local/lib/erlang/lib/sasl-2.1.5.4/ebin"]},
57
+ {primLoad,
58
+ [systools_relup,systools_rc,systools_make,systools_lib,systools,
59
+ sasl_report_tty_h,sasl_report_file_h,sasl_report,sasl,
60
+ release_handler_1,release_handler,rb_format_supp,rb,overload,
61
+ misc_supp,format_lib_supp,erlsrv,alarm_handler]},
62
+ {path,
63
+ ["/Users/petegolibersuch/Development/ruby/poolparty/lib/erlang/messenger/ebin"]},
64
+ {primLoad,
65
+ [utils,pm_client_supervisor,pm_client,client_server,client_app]},
66
+ {progress,modules_loaded},
67
+ {path,
68
+ ["/opt/local/lib/erlang/lib/kernel-2.12.5/ebin",
69
+ "/opt/local/lib/erlang/lib/stdlib-1.15.5/ebin",
70
+ "/opt/local/lib/erlang/lib/inets-5.0.12/ebin",
71
+ "/opt/local/lib/erlang/lib/crypto-1.5.3/ebin",
72
+ "/opt/local/lib/erlang/lib/sasl-2.1.5.4/ebin",
73
+ "/Users/petegolibersuch/Development/ruby/poolparty/lib/erlang/messenger/ebin"]},
74
+ {kernelProcess,heart,{heart,start,[]}},
75
+ {kernelProcess,error_logger,{error_logger,start_link,[]}},
76
+ {kernelProcess,application_controller,
77
+ {application_controller,start,
78
+ [{application,kernel,
79
+ [{description,"ERTS CXC 138 10"},
80
+ {vsn,"2.12.5"},
81
+ {id,[]},
82
+ {modules,
83
+ [application,application_controller,application_master,
84
+ application_starter,auth,code,packages,code_server,
85
+ dist_util,erl_boot_server,erl_distribution,
86
+ erl_prim_loader,erl_reply,erlang,error_handler,
87
+ error_logger,file,file_server,file_io_server,
88
+ prim_file,prim_zip,global,global_group,global_search,
89
+ group,heart,hipe_unified_loader,inet6_tcp,
90
+ inet6_tcp_dist,inet6_udp,inet_config,inet_hosts,
91
+ inet_gethost_native,inet_tcp_dist,init,kernel,
92
+ kernel_config,net,net_adm,net_kernel,os,ram_file,rpc,
93
+ user,user_drv,user_sup,disk_log,disk_log_1,
94
+ disk_log_server,disk_log_sup,dist_ac,erl_ddll,
95
+ erl_epmd,erts_debug,gen_tcp,gen_udp,gen_sctp,
96
+ prim_inet,inet,inet_db,inet_dns,inet_parse,inet_res,
97
+ inet_tcp,inet_udp,inet_sctp,pg2,seq_trace,
98
+ wrap_log_reader,zlib,otp_ring0]},
99
+ {registered,
100
+ [application_controller,erl_reply,auth,boot_server,
101
+ code_server,disk_log_server,disk_log_sup,
102
+ erl_prim_loader,error_logger,file_server_2,
103
+ fixtable_server,global_group,global_name_server,heart,
104
+ init,kernel_config,kernel_sup,net_kernel,net_sup,rex,
105
+ user,os_server,ddll_server,erl_epmd,inet_db,pg2]},
106
+ {applications,[]},
107
+ {included_applications,[]},
108
+ {env,[{error_logger,tty}]},
109
+ {start_phases,undefined},
110
+ {maxT,infinity},
111
+ {maxP,infinity},
112
+ {mod,{kernel,[]}}]}]}},
113
+ {progress,init_kernel_started},
114
+ {apply,
115
+ {application,load,
116
+ [{application,stdlib,
117
+ [{description,"ERTS CXC 138 10"},
118
+ {vsn,"1.15.5"},
119
+ {id,[]},
120
+ {modules,
121
+ [array,base64,beam_lib,c,calendar,dets,dets_server,
122
+ dets_sup,dets_utils,dets_v8,dets_v9,dict,digraph,
123
+ digraph_utils,edlin,edlin_expand,epp,eval_bits,
124
+ erl_bits,erl_compile,erl_eval,erl_expand_records,
125
+ erl_internal,erl_lint,erl_parse,erl_posix_msg,erl_pp,
126
+ erl_scan,erl_tar,error_logger_file_h,
127
+ error_logger_tty_h,escript,ets,file_sorter,filelib,
128
+ filename,gb_trees,gb_sets,gen,gen_event,gen_fsm,
129
+ gen_server,io,io_lib,io_lib_format,io_lib_fread,
130
+ io_lib_pretty,lib,lists,log_mf_h,math,ms_transform,
131
+ orddict,ordsets,otp_internal,pg,pool,proc_lib,
132
+ proplists,qlc,qlc_pt,queue,random,re,regexp,sets,
133
+ shell,shell_default,slave,sofs,string,supervisor,
134
+ supervisor_bridge,sys,timer,unicode,win32reg,zip]},
135
+ {registered,
136
+ [timer_server,rsh_starter,take_over_monitor,
137
+ pool_master,dets]},
138
+ {applications,[kernel]},
139
+ {included_applications,[]},
140
+ {env,[]},
141
+ {start_phases,undefined},
142
+ {maxT,infinity},
143
+ {maxP,infinity}]}]}},
144
+ {apply,
145
+ {application,load,
146
+ [{application,inets,
147
+ [{description,"INETS CXC 138 49"},
148
+ {vsn,"5.0.12"},
149
+ {id,[]},
150
+ {modules,
151
+ [inets,inets_sup,inets_app,inets_service,ftp,
152
+ ftp_progress,ftp_response,ftp_sup,http,httpc_handler,
153
+ httpc_handler_sup,httpc_manager,httpc_profile_sup,
154
+ httpc_request,httpc_response,httpc_sup,http_cookie,
155
+ http_uri,http_chunk,http_request,http_response,
156
+ http_transport,http_util,httpd,httpd_acceptor,
157
+ httpd_acceptor_sup,httpd_cgi,httpd_conf,httpd_esi,
158
+ httpd_example,httpd_file,httpd_instance_sup,httpd_log,
159
+ httpd_manager,httpd_misc_sup,httpd_request,
160
+ httpd_request_handler,httpd_response,httpd_script_env,
161
+ httpd_socket,httpd_sup,httpd_util,mod_actions,
162
+ mod_alias,mod_auth,mod_auth_dets,mod_auth_mnesia,
163
+ mod_auth_plain,mod_auth_server,mod_browser,mod_cgi,
164
+ mod_dir,mod_disk_log,mod_esi,mod_get,mod_head,
165
+ mod_htaccess,mod_include,mod_log,mod_range,
166
+ mod_responsecontrol,mod_security,mod_security_server,
167
+ mod_trace,tftp,tftp_binary,tftp_engine,tftp_file,
168
+ tftp_lib,tftp_logger,tftp_sup]},
169
+ {registered,[inets_sup,httpc_manager]},
170
+ {applications,[kernel,stdlib]},
171
+ {included_applications,[]},
172
+ {env,[]},
173
+ {start_phases,undefined},
174
+ {maxT,infinity},
175
+ {maxP,infinity},
176
+ {mod,{inets_app,[]}}]}]}},
177
+ {apply,
178
+ {application,load,
179
+ [{application,crypto,
180
+ [{description,"CRYPTO version 1"},
181
+ {vsn,"1.5.3"},
182
+ {id,[]},
183
+ {modules,[crypto,crypto_app,crypto_sup,crypto_server]},
184
+ {registered,[crypto_sup,crypto_server]},
185
+ {applications,[kernel,stdlib]},
186
+ {included_applications,[]},
187
+ {env,[]},
188
+ {start_phases,undefined},
189
+ {maxT,infinity},
190
+ {maxP,infinity},
191
+ {mod,{crypto_app,[]}}]}]}},
192
+ {apply,
193
+ {application,load,
194
+ [{application,sasl,
195
+ [{description,"SASL CXC 138 11"},
196
+ {vsn,"2.1.5.4"},
197
+ {id,[]},
198
+ {modules,
199
+ [sasl,alarm_handler,format_lib_supp,misc_supp,overload,
200
+ rb,rb_format_supp,release_handler,release_handler_1,
201
+ erlsrv,sasl_report,sasl_report_tty_h,
202
+ sasl_report_file_h,systools,systools_make,systools_rc,
203
+ systools_relup,systools_lib]},
204
+ {registered,
205
+ [sasl_sup,alarm_handler,overload,release_handler]},
206
+ {applications,[kernel,stdlib]},
207
+ {included_applications,[]},
208
+ {env,[{sasl_error_logger,tty},{errlog_type,all}]},
209
+ {start_phases,undefined},
210
+ {maxT,infinity},
211
+ {maxP,infinity},
212
+ {mod,{sasl,[]}}]}]}},
213
+ {apply,
214
+ {application,load,
215
+ [{application,client,
216
+ [{description,"Client Server for PoolParty"},
217
+ {vsn,"0.1"},
218
+ {id,[]},
219
+ {modules,
220
+ [client_app,pm_client,client_server,
221
+ pm_client_supervisor,utils]},
222
+ {registered,[client_server,pm_client_supervisor]},
223
+ {applications,[kernel,stdlib]},
224
+ {included_applications,[]},
225
+ {env,[]},
226
+ {start_phases,[]},
227
+ {maxT,infinity},
228
+ {maxP,infinity},
229
+ {mod,{client_app,[]}}]}]}},
230
+ {progress,applications_loaded},
231
+ {apply,{application,start_boot,[kernel,permanent]}},
232
+ {apply,{application,start_boot,[stdlib,permanent]}},
233
+ {apply,{application,start_boot,[inets,permanent]}},
234
+ {apply,{application,start_boot,[crypto,permanent]}},
235
+ {apply,{application,start_boot,[sasl,permanent]}},
236
+ {apply,{application,start_boot,[client,permanent]}},
237
+ {apply,{c,erlangrc,[]}},
238
+ {progress,started}]}.