poolparty 0.2.84 → 1.2.2

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 (642) hide show
  1. data/History.txt +7 -0
  2. data/License.txt +1 -1
  3. data/PostInstall.txt +1 -1
  4. data/README.txt +13 -22
  5. data/Rakefile +26 -35
  6. data/VERSION.yml +4 -0
  7. data/bin/cloud +24 -3
  8. data/bin/cloud-bootstrap +31 -0
  9. data/bin/cloud-configure +36 -20
  10. data/bin/{pool-console → cloud-console} +0 -0
  11. data/bin/cloud-contract +7 -7
  12. data/bin/cloud-describe +28 -0
  13. data/bin/cloud-expand +13 -6
  14. data/bin/cloud-handle-load +3 -3
  15. data/bin/cloud-list +9 -14
  16. data/bin/cloud-osxcopy +6 -5
  17. data/bin/cloud-provision +17 -22
  18. data/bin/cloud-setup-dev +11 -11
  19. data/bin/cloud-show +28 -0
  20. data/bin/cloud-spec +2 -2
  21. data/bin/cloud-ssh +10 -3
  22. data/bin/cloud-start +21 -23
  23. data/bin/cloud-terminate +15 -7
  24. data/bin/cloud-verify +32 -0
  25. data/bin/install-poolparty +216 -0
  26. data/bin/server-butterfly +25 -0
  27. data/bin/server-cloud-elections +37 -0
  28. data/bin/server-ensure-provisioning +33 -0
  29. data/bin/server-get-load +9 -12
  30. data/bin/server-list-active +25 -12
  31. data/bin/server-manage-election +67 -0
  32. data/bin/server-monitor.ru +42 -0
  33. data/bin/server-query-agent +15 -0
  34. data/bin/server-rerun +1 -1
  35. data/bin/server-write-new-nodes +2 -2
  36. data/config/jeweler.rb +52 -0
  37. data/config/requirements.rb +1 -9
  38. data/examples/basic.rb +10 -10
  39. data/examples/deploy.rb +5 -0
  40. data/examples/fairchild.rb +28 -0
  41. data/examples/fairchild_chef.rb +19 -0
  42. data/examples/maize.rb +37 -0
  43. data/examples/paparazzi.conf.erb +21 -0
  44. data/generators/poolspec/poolspec_generator.rb +1 -9
  45. data/generators/poolspec/templates/pool_spec_template.erb +0 -1
  46. data/lib/poolparty/{aska/aska.rb → aska.rb} +19 -28
  47. data/lib/poolparty/base_packages/haproxy.rb +48 -31
  48. data/lib/poolparty/base_packages/heartbeat.rb +6 -62
  49. data/lib/poolparty/base_packages/poolparty.rb +5 -105
  50. data/lib/poolparty/base_packages/ruby.rb +4 -4
  51. data/lib/poolparty/base_packages/runit.rb +1 -1
  52. data/lib/poolparty/core/array.rb +21 -3
  53. data/lib/poolparty/core/hash.rb +45 -10
  54. data/lib/poolparty/core/kernel.rb +30 -8
  55. data/lib/poolparty/core/nil.rb +8 -0
  56. data/lib/poolparty/core/object.rb +34 -25
  57. data/lib/poolparty/core/ordered_hash.rb +99 -0
  58. data/lib/poolparty/core/string.rb +112 -15
  59. data/lib/poolparty/core/symbol.rb +10 -0
  60. data/lib/poolparty/dependencies.rb +49 -0
  61. data/lib/poolparty/dependency_resolver/chef_resolver.rb +237 -0
  62. data/lib/poolparty/dependency_resolver/dependency_resolver.rb +42 -0
  63. data/lib/poolparty/dependency_resolver/dependency_resolver_cloud_extensions.rb +29 -0
  64. data/lib/poolparty/{dependency_resolutions → dependency_resolver}/puppet.rb +34 -29
  65. data/lib/poolparty/dependency_resolver/puppet_resolver.rb +188 -0
  66. data/lib/poolparty/exceptions/MasterException.rb +2 -2
  67. data/lib/poolparty/exceptions/RemoteException.rb +1 -1
  68. data/lib/poolparty/exceptions/dependency_resolver_exception.rb +5 -0
  69. data/lib/poolparty/exceptions/package_exception.rb +7 -0
  70. data/lib/poolparty/extra/deployments.rb +7 -7
  71. data/lib/poolparty/helpers/binary.rb +26 -32
  72. data/lib/poolparty/helpers/console.rb +1 -1
  73. data/lib/poolparty/helpers/display.rb +1 -5
  74. data/lib/poolparty/helpers/hash_printer.rb +44 -0
  75. data/lib/poolparty/helpers/loading.rb +4 -0
  76. data/lib/poolparty/helpers/optioner.rb +39 -25
  77. data/lib/poolparty/lite.rb +30 -0
  78. data/lib/poolparty/modules/callbacks.rb +44 -0
  79. data/lib/poolparty/modules/cloud_dsl.rb +38 -8
  80. data/lib/poolparty/modules/cloud_resourcer.rb +67 -97
  81. data/lib/poolparty/modules/daemonizable.rb +141 -0
  82. data/lib/poolparty/modules/definable_resource.rb +8 -14
  83. data/lib/poolparty/modules/file_writer.rb +25 -17
  84. data/lib/poolparty/modules/pinger.rb +28 -0
  85. data/lib/poolparty/modules/pretty_printer.rb +1 -1
  86. data/lib/poolparty/modules/resourcing_dsl.rb +55 -40
  87. data/lib/poolparty/modules/searchable_paths.rb +91 -0
  88. data/lib/poolparty/modules/thread_pool.rb +107 -106
  89. data/lib/poolparty/modules/user_helpers.rb +20 -0
  90. data/lib/poolparty/monitors/base_monitor.rb +18 -75
  91. data/lib/poolparty/monitors/monitor_rack.rb +123 -0
  92. data/lib/poolparty/monitors/monitors/favicon_monitor.rb +12 -0
  93. data/lib/poolparty/monitors/monitors/load_monitor.rb +9 -0
  94. data/lib/poolparty/monitors/monitors/memory_monitor.rb +9 -9
  95. data/lib/poolparty/monitors/monitors/neighborhood_monitor.rb +77 -0
  96. data/lib/poolparty/monitors/monitors/stats_monitor.rb +187 -0
  97. data/lib/poolparty/monitors/monitors/time_monitor.rb +15 -0
  98. data/lib/poolparty/net/init.rb +10 -0
  99. data/lib/poolparty/net/remote_bases.rb +20 -0
  100. data/lib/poolparty/net/remote_instance.rb +26 -44
  101. data/lib/poolparty/net/remoter/cloud_control.rb +24 -0
  102. data/lib/poolparty/net/remoter/connections.rb +172 -0
  103. data/lib/poolparty/net/remoter/interactive.rb +45 -0
  104. data/lib/poolparty/net/remoter_base.rb +116 -111
  105. data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +245 -0
  106. data/lib/poolparty/net/remoter_bases/ec2/ec2_remote_instance.rb +53 -0
  107. data/lib/poolparty/net/{remote_bases → remoter_bases}/ec2/ec2_response_object.rb +2 -4
  108. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vm_disk.rb +12 -0
  109. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx.rb +33 -0
  110. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx_file.rb +117 -0
  111. data/lib/poolparty/net/remoter_bases/vmrun/vmrun.rb +158 -0
  112. data/lib/poolparty/net/remoter_bases/vmrun/vmrun_instance.rb +71 -0
  113. data/lib/poolparty/plugins/apache2/apache.rb +340 -0
  114. data/lib/poolparty/plugins/bind.rb +11 -0
  115. data/lib/poolparty/plugins/chef.rb +173 -0
  116. data/lib/poolparty/plugins/chef_deploy.rb +58 -0
  117. data/lib/poolparty/plugins/deploy_directory.rb +49 -0
  118. data/lib/poolparty/plugins/gem_package.rb +61 -0
  119. data/lib/poolparty/plugins/git.rb +41 -24
  120. data/lib/poolparty/plugins/line_in_file.rb +30 -0
  121. data/lib/poolparty/plugins/nanite.rb +41 -0
  122. data/lib/poolparty/plugins/rails_deploy.rb +76 -0
  123. data/lib/poolparty/plugins/svn.rb +56 -39
  124. data/lib/poolparty/poolparty/cloud.rb +137 -167
  125. data/lib/poolparty/poolparty/{base.rb → default.rb} +62 -25
  126. data/lib/poolparty/poolparty/key.rb +78 -0
  127. data/lib/poolparty/poolparty/loggable.rb +28 -27
  128. data/lib/poolparty/poolparty/neighborhoods.rb +102 -0
  129. data/lib/poolparty/poolparty/plugin.rb +53 -18
  130. data/lib/poolparty/poolparty/plugin_model.rb +20 -23
  131. data/lib/poolparty/poolparty/pool.rb +34 -26
  132. data/lib/poolparty/poolparty/poolparty_base_class.rb +190 -0
  133. data/lib/poolparty/poolparty/resource.rb +92 -178
  134. data/lib/poolparty/poolparty/script.rb +32 -20
  135. data/lib/poolparty/poolparty/service.rb +44 -0
  136. data/lib/poolparty/poolparty/template.rb +27 -0
  137. data/lib/poolparty/provision/boot_strapper.rb +164 -0
  138. data/lib/poolparty/provision/configurations/chef.rb +26 -0
  139. data/lib/poolparty/provision/configurations/puppet.rb +28 -0
  140. data/lib/poolparty/provision/dr_configure.rb +142 -0
  141. data/lib/poolparty/resources/cron.rb +51 -0
  142. data/lib/poolparty/resources/directory.rb +36 -0
  143. data/lib/poolparty/resources/exec.rb +47 -0
  144. data/lib/poolparty/resources/file.rb +73 -0
  145. data/lib/poolparty/resources/host.rb +37 -0
  146. data/lib/poolparty/resources/mount.rb +45 -0
  147. data/lib/poolparty/resources/package.rb +41 -0
  148. data/lib/poolparty/resources/remote_file.rb +52 -0
  149. data/lib/poolparty/resources/service.rb +41 -0
  150. data/lib/poolparty/resources/sshkey.rb +49 -0
  151. data/lib/poolparty/resources/symlink.rb +43 -0
  152. data/lib/poolparty/{poolparty/resources/remote_user.rb → resources/user.rb} +1 -5
  153. data/lib/poolparty/resources/variable.rb +34 -0
  154. data/lib/poolparty/resources.rb +42 -0
  155. data/lib/poolparty/schema.rb +79 -0
  156. data/lib/poolparty/templates/apache2/apache2.conf +14 -0
  157. data/lib/poolparty/templates/apache2/base.conf.erb +168 -0
  158. data/lib/poolparty/templates/apache2/browser_fixes.conf.erb +26 -0
  159. data/lib/poolparty/templates/apache2/debian.conf.erb +675 -0
  160. data/lib/poolparty/templates/apache2/default-site.conf.erb +41 -0
  161. data/lib/poolparty/templates/apache2/directory_indexes.conf.erb +101 -0
  162. data/lib/poolparty/templates/apache2/logging-syslog.conf.erb +42 -0
  163. data/lib/poolparty/templates/apache2/mime-extras.conf.erb +211 -0
  164. data/lib/poolparty/templates/apache2/mime-minimal.conf.erb +15 -0
  165. data/lib/poolparty/templates/apache2/mpm-worker.conf.erb +20 -0
  166. data/lib/poolparty/templates/apache2/mpm-worker.erb +20 -0
  167. data/lib/poolparty/templates/apache2/passenger.conf.erb +20 -0
  168. data/lib/poolparty/templates/apache2/php.ini.erb +1253 -0
  169. data/lib/poolparty/templates/apache2/server-status.erb +19 -0
  170. data/lib/poolparty/templates/erlang_cookie_maker +6 -0
  171. data/lib/poolparty/templates/gemrc_template +11 -0
  172. data/lib/poolparty/templates/ha.cf +1 -1
  173. data/lib/poolparty/templates/haproxy.conf +29 -27
  174. data/lib/poolparty/templates/haresources +2 -2
  175. data/lib/poolparty/templates/monitor.ru +16 -0
  176. data/lib/poolparty/templates/php.ini.erb +1253 -0
  177. data/lib/poolparty/templates/puppet/add_puppet_to_hosts +6 -0
  178. data/lib/poolparty/templates/puppet/puppet.conf +2 -0
  179. data/lib/poolparty/templates/puppet/puppetrunner +14 -0
  180. data/lib/poolparty/templates/puppet/site.pp +4 -0
  181. data/lib/poolparty/templates/puppetrunner +11 -5
  182. data/lib/poolparty/verification/verifier_base.rb +17 -0
  183. data/lib/poolparty/verification/verifiers/http_match.rb +43 -0
  184. data/lib/poolparty/verification/verifiers/http_status.rb +59 -0
  185. data/lib/poolparty/verification/verifiers/ping.rb +34 -0
  186. data/lib/poolparty/verification/verify.rb +76 -0
  187. data/lib/poolparty.rb +76 -22
  188. data/lib/poolpartycl.rb +66 -1
  189. data/script/destroy +1 -1
  190. data/script/generate +1 -1
  191. data/spec/bin/bin_spec_helper.rb +7 -0
  192. data/spec/bin/fixtures/bin_cloud_for_test.rb +13 -0
  193. data/spec/bin/server-list-active_spec.rb +24 -0
  194. data/spec/poolparty/aska/aska_spec.rb +5 -5
  195. data/spec/poolparty/base_packages/haproxy_spec.rb +2 -8
  196. data/spec/poolparty/base_packages/heartbeat_spec.rb +3 -26
  197. data/spec/poolparty/bin/console_spec.rb +11 -29
  198. data/spec/poolparty/core/array_spec.rb +20 -3
  199. data/spec/poolparty/core/hash_spec.rb +30 -28
  200. data/spec/poolparty/core/object_spec.rb +2 -3
  201. data/spec/poolparty/core/ordered_hash_spec.rb +48 -0
  202. data/spec/poolparty/core/string_spec.rb +1 -27
  203. data/spec/poolparty/dependencies_spec.rb +11 -0
  204. data/spec/poolparty/dependency_resolver/chef_resolver_spec.rb +107 -0
  205. data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +122 -0
  206. data/spec/poolparty/dependency_resolver/dependency_resolver_spec.rb +16 -0
  207. data/spec/poolparty/dependency_resolver/puppet_resolver_spec.rb +121 -0
  208. data/spec/poolparty/extra/deployments_spec.rb +9 -5
  209. data/spec/poolparty/fixtures/clouds.json +128 -0
  210. data/spec/poolparty/fixtures/test_template.erb +1 -0
  211. data/spec/poolparty/helpers/binary_spec.rb +1 -1
  212. data/spec/poolparty/helpers/hash_printer_spec.rb +34 -0
  213. data/spec/poolparty/helpers/optioner_spec.rb +1 -1
  214. data/spec/poolparty/id_rsa +27 -0
  215. data/spec/poolparty/modules/cloud_resourcer_spec.rb +26 -111
  216. data/spec/poolparty/modules/definable_resource.rb +1 -1
  217. data/spec/poolparty/modules/file_writer_spec.rb +10 -4
  218. data/spec/poolparty/modules/searchable_paths_spec.rb +76 -0
  219. data/spec/poolparty/monitors/base_monitor_spec.rb +112 -111
  220. data/spec/poolparty/monitors/monitors/cpu_monitor_spec.rb +18 -16
  221. data/spec/poolparty/monitors/monitors/memory_monitor_spec.rb +48 -47
  222. data/spec/poolparty/net/remote_instance_spec.rb +9 -73
  223. data/spec/poolparty/net/remote_spec.rb +287 -310
  224. data/spec/poolparty/net/remoter_base_spec.rb +3 -56
  225. data/spec/poolparty/net/remoter_bases/ec2_mocks_and_stubs.rb +24 -0
  226. data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +114 -0
  227. data/spec/poolparty/net/{remote_bases → remoter_bases}/ec2_spec.rb +51 -53
  228. data/spec/poolparty/net/remoter_spec.rb +96 -86
  229. data/spec/poolparty/plugins/chef_spec.rb +7 -0
  230. data/spec/poolparty/plugins/deploydirectory_spec.rb +51 -52
  231. data/spec/poolparty/plugins/git_spec.rb +16 -20
  232. data/spec/poolparty/plugins/line_spec.rb +14 -8
  233. data/spec/poolparty/poolparty/cloud_spec.rb +85 -183
  234. data/spec/poolparty/poolparty/configurers/files/ruby_basic.rb +3 -4
  235. data/spec/poolparty/poolparty/configurers/ruby_spec.rb +7 -23
  236. data/spec/poolparty/poolparty/{base_spec.rb → default_spec.rb} +44 -41
  237. data/spec/poolparty/poolparty/example_spec.rb +43 -11
  238. data/spec/poolparty/poolparty/key_spec.rb +42 -0
  239. data/spec/poolparty/poolparty/neighborhoods_spec.rb +65 -0
  240. data/spec/poolparty/poolparty/plugin_model_spec.rb +14 -24
  241. data/spec/poolparty/poolparty/plugin_spec.rb +25 -96
  242. data/spec/poolparty/poolparty/pool_spec.rb +3 -1
  243. data/spec/poolparty/poolparty/resource_spec.rb +70 -270
  244. data/spec/poolparty/poolparty/script_spec.rb +30 -53
  245. data/spec/poolparty/poolparty/service_spec.rb +5 -0
  246. data/spec/poolparty/poolparty/template_spec.rb +26 -0
  247. data/spec/poolparty/poolparty/test_plugins/webserver.rb +8 -25
  248. data/spec/poolparty/poolparty_base_class_spec.rb +84 -0
  249. data/spec/poolparty/poolparty_spec.rb +7 -4
  250. data/spec/poolparty/resources/cron_spec.rb +44 -0
  251. data/spec/poolparty/resources/directory_spec.rb +40 -0
  252. data/spec/poolparty/resources/exec_spec.rb +37 -0
  253. data/spec/poolparty/resources/file_spec.rb +64 -0
  254. data/spec/poolparty/resources/gem_spec.rb +7 -0
  255. data/spec/poolparty/resources/host_spec.rb +35 -0
  256. data/spec/poolparty/resources/package_spec.rb +26 -0
  257. data/spec/poolparty/resources/service_spec.rb +29 -0
  258. data/spec/poolparty/resources/sshkey_spec.rb +40 -0
  259. data/spec/poolparty/resources/symlink_spec.rb +29 -0
  260. data/spec/poolparty/resources/user_spec.rb +48 -0
  261. data/spec/poolparty/resources/variable_spec.rb +26 -0
  262. data/spec/poolparty/schema_spec.rb +53 -0
  263. data/spec/poolparty/spec_helper.rb +107 -23
  264. data/spec/poolparty/test_spec_helper.rb +13 -0
  265. data/tasks/development.rake +85 -69
  266. data/tasks/poolparty.rake +54 -0
  267. data/tasks/server.rake +41 -39
  268. data/tasks/spec.rake +35 -1
  269. data/test/fixtures/test_template.erb +1 -0
  270. data/test/poolparty/core/array_test.rb +21 -0
  271. data/test/poolparty/core/hash_test.rb +34 -0
  272. data/test/poolparty/core/string_test.rb +29 -0
  273. data/test/poolparty/dependency_resolver/puppet_resolver_test.rb +90 -0
  274. data/test/poolparty/modules/callbacks_test.rb +40 -0
  275. data/test/poolparty/modules/cloud_dsl_test.rb +60 -0
  276. data/test/poolparty/net/remoter_bases/vmrun/vmrun_test.rb +54 -0
  277. data/test/poolparty/net/remoter_test.rb +14 -0
  278. data/test/poolparty/poolparty/neighborhood_test.rb +23 -0
  279. data/test/poolparty/poolparty/poolparty_base_class_test.rb +84 -0
  280. data/test/poolparty/poolparty/template_test.rb +31 -0
  281. data/test/poolparty/provision/boot_strapper_test.rb +6 -0
  282. data/test/poolparty/provision/dr_configure_test.rb +6 -0
  283. data/test/poolparty/verification/verify_test.rb +49 -0
  284. data/test/test_helper.rb +8 -2
  285. data/test/test_poolparty.rb +6 -5
  286. data/vendor/chef/apache2/README.rdoc +59 -0
  287. data/vendor/chef/apache2/attributes/apache.rb +72 -0
  288. data/vendor/chef/apache2/definitions/apache_module.rb +36 -0
  289. data/vendor/chef/apache2/definitions/apache_site.rb +36 -0
  290. data/vendor/chef/apache2/definitions/web_app.rb +45 -0
  291. data/vendor/chef/apache2/files/default/apache2_module_conf_generate.pl +41 -0
  292. data/vendor/chef/apache2/recipes/default.rb +132 -0
  293. data/vendor/chef/apache2/recipes/mod_alias.rb +20 -0
  294. data/vendor/chef/apache2/recipes/mod_auth_basic.rb +20 -0
  295. data/vendor/chef/apache2/recipes/mod_auth_digest.rb +20 -0
  296. data/vendor/chef/apache2/recipes/mod_authn_file.rb +20 -0
  297. data/vendor/chef/apache2/recipes/mod_authnz_ldap.rb +20 -0
  298. data/vendor/chef/apache2/recipes/mod_authz_default.rb +20 -0
  299. data/vendor/chef/apache2/recipes/mod_authz_groupfile.rb +20 -0
  300. data/vendor/chef/apache2/recipes/mod_authz_host.rb +20 -0
  301. data/vendor/chef/apache2/recipes/mod_authz_user.rb +20 -0
  302. data/vendor/chef/apache2/recipes/mod_autoindex.rb +20 -0
  303. data/vendor/chef/apache2/recipes/mod_cgi.rb +20 -0
  304. data/vendor/chef/apache2/recipes/mod_dav.rb +20 -0
  305. data/vendor/chef/apache2/recipes/mod_dav_svn.rb +20 -0
  306. data/vendor/chef/apache2/recipes/mod_deflate.rb +20 -0
  307. data/vendor/chef/apache2/recipes/mod_dir.rb +20 -0
  308. data/vendor/chef/apache2/recipes/mod_env.rb +20 -0
  309. data/vendor/chef/apache2/recipes/mod_expires.rb +20 -0
  310. data/vendor/chef/apache2/recipes/mod_fcgid.rb +35 -0
  311. data/vendor/chef/apache2/recipes/mod_headers.rb +20 -0
  312. data/vendor/chef/apache2/recipes/mod_ldap.rb +20 -0
  313. data/vendor/chef/apache2/recipes/mod_log_config.rb +20 -0
  314. data/vendor/chef/apache2/recipes/mod_mime.rb +20 -0
  315. data/vendor/chef/apache2/recipes/mod_negotiation.rb +20 -0
  316. data/vendor/chef/apache2/recipes/mod_php5.rb +27 -0
  317. data/vendor/chef/apache2/recipes/mod_proxy.rb +20 -0
  318. data/vendor/chef/apache2/recipes/mod_proxy_http.rb +20 -0
  319. data/vendor/chef/apache2/recipes/mod_python.rb +22 -0
  320. data/vendor/chef/apache2/recipes/mod_rewrite.rb +20 -0
  321. data/vendor/chef/apache2/recipes/mod_setenvif.rb +20 -0
  322. data/vendor/chef/apache2/recipes/mod_ssl.rb +20 -0
  323. data/vendor/chef/apache2/recipes/mod_status.rb +20 -0
  324. data/vendor/chef/apache2/templates/default/a2dismod.erb +22 -0
  325. data/vendor/chef/apache2/templates/default/a2dissite.erb +29 -0
  326. data/vendor/chef/apache2/templates/default/a2enmod.erb +37 -0
  327. data/vendor/chef/apache2/templates/default/a2ensite.erb +38 -0
  328. data/vendor/chef/apache2/templates/default/apache2.conf.erb +630 -0
  329. data/vendor/chef/apache2/templates/default/default-site.erb +45 -0
  330. data/vendor/chef/apache2/templates/default/port_apache.erb +2 -0
  331. data/vendor/chef/apache2/templates/default/ports.conf.erb +6 -0
  332. data/vendor/chef/apache2/templates/default/web_app.conf.erb +43 -0
  333. data/vendor/chef/chef-deploy/LICENSE +201 -0
  334. data/vendor/chef/chef-deploy/README.rdoc +24 -0
  335. data/vendor/chef/chef-deploy/Rakefile +57 -0
  336. data/vendor/chef/chef-deploy/TODO +4 -0
  337. data/vendor/chef/chef-deploy/lib/chef-deploy/cached_deploy.rb +230 -0
  338. data/vendor/chef/chef-deploy/lib/chef-deploy/git.rb +132 -0
  339. data/vendor/chef/chef-deploy/lib/chef-deploy/subversion.rb +98 -0
  340. data/vendor/chef/chef-deploy/lib/chef-deploy.rb +183 -0
  341. data/vendor/gems/butterfly/History.txt +4 -0
  342. data/vendor/gems/butterfly/PostInstall.txt +2 -0
  343. data/vendor/gems/butterfly/README.rdoc +48 -0
  344. data/vendor/gems/butterfly/Rakefile +62 -0
  345. data/vendor/gems/butterfly/VERSION.yml +4 -0
  346. data/vendor/gems/butterfly/bin/flutter +4 -0
  347. data/vendor/gems/butterfly/butterfly.gemspec +37 -0
  348. data/vendor/gems/butterfly/examples/config.ru +15 -0
  349. data/vendor/gems/butterfly/examples/my_app.rb +12 -0
  350. data/vendor/gems/butterfly/lib/butterfly.rb +14 -0
  351. data/vendor/gems/butterfly/lib/handler.rb +48 -0
  352. data/vendor/gems/butterfly/lib/request.rb +29 -0
  353. data/vendor/gems/butterfly/lib/response.rb +49 -0
  354. data/vendor/gems/butterfly/script/console +10 -0
  355. data/vendor/gems/butterfly/script/destroy +14 -0
  356. data/vendor/gems/butterfly/script/generate +14 -0
  357. data/vendor/gems/butterfly/test/test_adapter_base.rb +23 -0
  358. data/vendor/gems/butterfly/test/test_butterfly_request.rb +46 -0
  359. data/vendor/gems/butterfly/test/test_butterfly_response.rb +43 -0
  360. data/vendor/gems/butterfly/test/test_butterfly_server.rb +16 -0
  361. data/vendor/gems/butterfly/test/test_default.rb +12 -0
  362. data/vendor/gems/butterfly/test/test_helper.rb +6 -0
  363. data/vendor/gems/dslify/History.txt +4 -0
  364. data/vendor/gems/dslify/Manifest.txt +25 -0
  365. data/vendor/gems/dslify/PostInstall.txt +5 -0
  366. data/vendor/gems/dslify/README.txt +60 -0
  367. data/vendor/gems/dslify/Rakefile +56 -0
  368. data/{config → vendor/gems/dslify/config}/hoe.rb +12 -55
  369. data/vendor/gems/dslify/config/requirements.rb +15 -0
  370. data/vendor/gems/dslify/dslify.gemspec +40 -0
  371. data/vendor/gems/dslify/lib/dslify/dslify.rb +76 -0
  372. data/vendor/gems/dslify/lib/dslify/version.rb +10 -0
  373. data/vendor/gems/dslify/lib/dslify.rb +7 -0
  374. data/vendor/gems/dslify/script/console +10 -0
  375. data/vendor/gems/dslify/script/destroy +14 -0
  376. data/vendor/gems/dslify/script/generate +14 -0
  377. data/{script → vendor/gems/dslify/script}/txt2html +4 -4
  378. data/{setup.rb → vendor/gems/dslify/setup.rb} +3 -3
  379. data/{tasks → vendor/gems/dslify/tasks}/deployment.rake +4 -18
  380. data/vendor/gems/dslify/tasks/environment.rake +7 -0
  381. data/{tasks → vendor/gems/dslify/tasks}/website.rake +0 -0
  382. data/vendor/gems/dslify/test/test_dslify.rb +138 -0
  383. data/vendor/gems/dslify/website/index.html +86 -0
  384. data/vendor/gems/dslify/website/index.txt +83 -0
  385. data/{website → vendor/gems/dslify/website}/javascripts/rounded_corners_lite.inc.js +0 -0
  386. data/{website → vendor/gems/dslify/website}/stylesheets/screen.css +18 -27
  387. data/{website → vendor/gems/dslify/website}/template.html.erb +1 -2
  388. data/vendor/gems/parenting/History.txt +4 -0
  389. data/vendor/gems/parenting/Manifest.txt +14 -0
  390. data/vendor/gems/parenting/PostInstall.txt +2 -0
  391. data/vendor/gems/parenting/README.rdoc +47 -0
  392. data/vendor/gems/parenting/Rakefile +28 -0
  393. data/vendor/gems/parenting/lib/parenting/parenting.rb +61 -0
  394. data/vendor/gems/parenting/lib/parenting.rb +10 -0
  395. data/vendor/gems/parenting/parenting.gemspec +39 -0
  396. data/vendor/gems/parenting/script/console +10 -0
  397. data/vendor/gems/parenting/script/destroy +14 -0
  398. data/vendor/gems/parenting/script/generate +14 -0
  399. data/vendor/gems/parenting/test/file_to_eval.rb +9 -0
  400. data/vendor/gems/parenting/test/test_helper.rb +5 -0
  401. data/vendor/gems/parenting/test/test_parenting.rb +117 -0
  402. data/vendor/gems/suitcase/LICENSE +20 -0
  403. data/vendor/gems/suitcase/README.rdoc +31 -0
  404. data/vendor/gems/suitcase/Rakefile +57 -0
  405. data/vendor/gems/suitcase/VERSION.yml +4 -0
  406. data/vendor/gems/suitcase/lib/suitcase/unzipper.rb +15 -0
  407. data/vendor/gems/suitcase/lib/suitcase/zipper.rb +119 -0
  408. data/vendor/gems/suitcase/lib/suitcase.rb +5 -0
  409. data/vendor/gems/suitcase/suitcase.gemspec +32 -0
  410. data/vendor/gems/suitcase/test/suitcase_test.rb +102 -0
  411. data/vendor/gems/suitcase/test/test_dir/box.rb +1 -0
  412. data/vendor/gems/suitcase/test/test_dir/test.txt +1 -0
  413. data/vendor/gems/suitcase/test/test_helper.rb +12 -0
  414. metadata +370 -343
  415. data/Capfile +0 -1
  416. data/Manifest.txt +0 -414
  417. data/bin/cloud-add-keypair +0 -28
  418. data/bin/cloud-ensure-provisioning +0 -39
  419. data/bin/cloud-maintain +0 -30
  420. data/bin/cloud-refresh +0 -17
  421. data/bin/cloud-run +0 -18
  422. data/bin/cloud-stats +0 -17
  423. data/bin/messenger-get-current-nodes +0 -14
  424. data/bin/pool +0 -31
  425. data/bin/pool-describe +0 -8
  426. data/bin/pool-generate +0 -18
  427. data/bin/pool-init +0 -28
  428. data/bin/pool-list +0 -30
  429. data/bin/pool-start +0 -26
  430. data/bin/server-build-messenger +0 -27
  431. data/bin/server-clean-cert-for +0 -15
  432. data/bin/server-list-responding +0 -24
  433. data/bin/server-start-client +0 -29
  434. data/bin/server-start-master +0 -26
  435. data/bin/server-start-node +0 -32
  436. data/bin/server-stop-client +0 -3
  437. data/bin/server-stop-master +0 -3
  438. data/bin/server-stop-node +0 -3
  439. data/bin/server-update-hosts +0 -49
  440. data/lib/erlang/messenger/Emakefile +0 -1
  441. data/lib/erlang/messenger/Makefile +0 -15
  442. data/lib/erlang/messenger/README +0 -5
  443. data/lib/erlang/messenger/Rakefile +0 -72
  444. data/lib/erlang/messenger/control +0 -11
  445. data/lib/erlang/messenger/ebin/client.app +0 -19
  446. data/lib/erlang/messenger/ebin/client_app.beam +0 -0
  447. data/lib/erlang/messenger/ebin/client_server.beam +0 -0
  448. data/lib/erlang/messenger/ebin/erl_crash.dump +0 -10326
  449. data/lib/erlang/messenger/ebin/master.app +0 -19
  450. data/lib/erlang/messenger/ebin/master_app.beam +0 -0
  451. data/lib/erlang/messenger/ebin/node.app +0 -19
  452. data/lib/erlang/messenger/ebin/node_app.beam +0 -0
  453. data/lib/erlang/messenger/ebin/packager.app +0 -19
  454. data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
  455. data/lib/erlang/messenger/ebin/pm_client_old.beam +0 -0
  456. data/lib/erlang/messenger/ebin/pm_client_rel-0.1.rel +0 -1
  457. data/lib/erlang/messenger/ebin/pm_client_supervisor.beam +0 -0
  458. data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
  459. data/lib/erlang/messenger/ebin/pm_event_manager.beam +0 -0
  460. data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
  461. data/lib/erlang/messenger/ebin/pm_master_event_handler.beam +0 -0
  462. data/lib/erlang/messenger/ebin/pm_master_rel-0.1.rel +0 -1
  463. data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
  464. data/lib/erlang/messenger/ebin/pm_node.beam +0 -0
  465. data/lib/erlang/messenger/ebin/pm_node_rel-0.1.rel +0 -1
  466. data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
  467. data/lib/erlang/messenger/ebin/pm_packager.beam +0 -0
  468. data/lib/erlang/messenger/ebin/pm_spawner.beam +0 -0
  469. data/lib/erlang/messenger/ebin/pm_strings.beam +0 -0
  470. data/lib/erlang/messenger/ebin/utils.beam +0 -0
  471. data/lib/erlang/messenger/include/defines.hrl +0 -27
  472. data/lib/erlang/messenger/lib/eunit/AUTHORS +0 -2
  473. data/lib/erlang/messenger/lib/eunit/CHANGELOG +0 -14
  474. data/lib/erlang/messenger/lib/eunit/COPYING +0 -504
  475. data/lib/erlang/messenger/lib/eunit/Makefile +0 -28
  476. data/lib/erlang/messenger/lib/eunit/NOTES +0 -276
  477. data/lib/erlang/messenger/lib/eunit/README +0 -3
  478. data/lib/erlang/messenger/lib/eunit/doc/edoc-info +0 -3
  479. data/lib/erlang/messenger/lib/eunit/doc/erlang.png +0 -0
  480. data/lib/erlang/messenger/lib/eunit/doc/eunit.html +0 -172
  481. data/lib/erlang/messenger/lib/eunit/doc/index.html +0 -17
  482. data/lib/erlang/messenger/lib/eunit/doc/modules-frame.html +0 -12
  483. data/lib/erlang/messenger/lib/eunit/doc/overview-summary.html +0 -984
  484. data/lib/erlang/messenger/lib/eunit/doc/overview.edoc +0 -980
  485. data/lib/erlang/messenger/lib/eunit/doc/packages-frame.html +0 -11
  486. data/lib/erlang/messenger/lib/eunit/doc/stylesheet.css +0 -55
  487. data/lib/erlang/messenger/lib/eunit/ebin/autoload.beam +0 -0
  488. data/lib/erlang/messenger/lib/eunit/ebin/code_monitor.beam +0 -0
  489. data/lib/erlang/messenger/lib/eunit/ebin/eunit.app +0 -21
  490. data/lib/erlang/messenger/lib/eunit/ebin/eunit.appup +0 -1
  491. data/lib/erlang/messenger/lib/eunit/ebin/eunit.beam +0 -0
  492. data/lib/erlang/messenger/lib/eunit/ebin/eunit_autoexport.beam +0 -0
  493. data/lib/erlang/messenger/lib/eunit/ebin/eunit_data.beam +0 -0
  494. data/lib/erlang/messenger/lib/eunit/ebin/eunit_lib.beam +0 -0
  495. data/lib/erlang/messenger/lib/eunit/ebin/eunit_proc.beam +0 -0
  496. data/lib/erlang/messenger/lib/eunit/ebin/eunit_serial.beam +0 -0
  497. data/lib/erlang/messenger/lib/eunit/ebin/eunit_server.beam +0 -0
  498. data/lib/erlang/messenger/lib/eunit/ebin/eunit_striptests.beam +0 -0
  499. data/lib/erlang/messenger/lib/eunit/ebin/eunit_test.beam +0 -0
  500. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tests.beam +0 -0
  501. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tty.beam +0 -0
  502. data/lib/erlang/messenger/lib/eunit/ebin/file_monitor.beam +0 -0
  503. data/lib/erlang/messenger/lib/eunit/examples/eunit_examples.erl +0 -339
  504. data/lib/erlang/messenger/lib/eunit/examples/fib.erl +0 -19
  505. data/lib/erlang/messenger/lib/eunit/examples/tests.txt +0 -1
  506. data/lib/erlang/messenger/lib/eunit/include/eunit.hrl +0 -313
  507. data/lib/erlang/messenger/lib/eunit/src/Makefile +0 -46
  508. data/lib/erlang/messenger/lib/eunit/src/autoload.erl +0 -388
  509. data/lib/erlang/messenger/lib/eunit/src/code_monitor.erl +0 -243
  510. data/lib/erlang/messenger/lib/eunit/src/eunit.app.src +0 -21
  511. data/lib/erlang/messenger/lib/eunit/src/eunit.appup.src +0 -1
  512. data/lib/erlang/messenger/lib/eunit/src/eunit.erl +0 -196
  513. data/lib/erlang/messenger/lib/eunit/src/eunit_autoexport.erl +0 -102
  514. data/lib/erlang/messenger/lib/eunit/src/eunit_data.erl +0 -798
  515. data/lib/erlang/messenger/lib/eunit/src/eunit_internal.hrl +0 -48
  516. data/lib/erlang/messenger/lib/eunit/src/eunit_lib.erl +0 -682
  517. data/lib/erlang/messenger/lib/eunit/src/eunit_proc.erl +0 -552
  518. data/lib/erlang/messenger/lib/eunit/src/eunit_serial.erl +0 -157
  519. data/lib/erlang/messenger/lib/eunit/src/eunit_server.erl +0 -340
  520. data/lib/erlang/messenger/lib/eunit/src/eunit_striptests.erl +0 -64
  521. data/lib/erlang/messenger/lib/eunit/src/eunit_test.erl +0 -334
  522. data/lib/erlang/messenger/lib/eunit/src/eunit_tests.erl +0 -45
  523. data/lib/erlang/messenger/lib/eunit/src/eunit_tty.erl +0 -272
  524. data/lib/erlang/messenger/lib/eunit/src/file_monitor.erl +0 -409
  525. data/lib/erlang/messenger/lib/eunit/sys.config +0 -9
  526. data/lib/erlang/messenger/lib/eunit/vsn.mk +0 -1
  527. data/lib/erlang/messenger/pm_client_rel-0.1.boot +0 -0
  528. data/lib/erlang/messenger/pm_client_rel-0.1.script +0 -238
  529. data/lib/erlang/messenger/pm_master_rel-0.1.boot +0 -0
  530. data/lib/erlang/messenger/pm_master_rel-0.1.script +0 -239
  531. data/lib/erlang/messenger/pm_node_rel-0.1.boot +0 -0
  532. data/lib/erlang/messenger/pm_node_rel-0.1.script +0 -237
  533. data/lib/erlang/messenger/src/client_app.erl +0 -39
  534. data/lib/erlang/messenger/src/client_server.erl +0 -60
  535. data/lib/erlang/messenger/src/master_app.erl +0 -39
  536. data/lib/erlang/messenger/src/node_app.erl +0 -39
  537. data/lib/erlang/messenger/src/pm_client.erl +0 -49
  538. data/lib/erlang/messenger/src/pm_client_supervisor.erl +0 -38
  539. data/lib/erlang/messenger/src/pm_cluster.erl +0 -61
  540. data/lib/erlang/messenger/src/pm_event_manager.erl +0 -27
  541. data/lib/erlang/messenger/src/pm_master.erl +0 -215
  542. data/lib/erlang/messenger/src/pm_master_event_handler.erl +0 -72
  543. data/lib/erlang/messenger/src/pm_master_supervisor.erl +0 -39
  544. data/lib/erlang/messenger/src/pm_node.erl +0 -200
  545. data/lib/erlang/messenger/src/pm_node_supervisor.erl +0 -38
  546. data/lib/erlang/messenger/src/pm_packager.erl +0 -76
  547. data/lib/erlang/messenger/src/pm_spawner.erl +0 -213
  548. data/lib/erlang/messenger/src/pm_strings.erl +0 -11
  549. data/lib/erlang/messenger/src/utils.erl +0 -73
  550. data/lib/erlang/messenger/useful_snippets +0 -17
  551. data/lib/poolparty/capistrano.rb +0 -18
  552. data/lib/poolparty/config/postlaunchmessage.txt +0 -5
  553. data/lib/poolparty/dependency_resolutions/base.rb +0 -12
  554. data/lib/poolparty/modules/configurable.rb +0 -36
  555. data/lib/poolparty/modules/method_missing_sugar.rb +0 -58
  556. data/lib/poolparty/monitors/monitors/cpu_monitor.rb +0 -15
  557. data/lib/poolparty/monitors/monitors/web_monitor.rb +0 -18
  558. data/lib/poolparty/net/messenger.rb +0 -72
  559. data/lib/poolparty/net/remote.rb +0 -38
  560. data/lib/poolparty/net/remote_bases/ec2.rb +0 -190
  561. data/lib/poolparty/net/remoter.rb +0 -343
  562. data/lib/poolparty/plugins/deploydirectory.rb +0 -71
  563. data/lib/poolparty/plugins/line.rb +0 -77
  564. data/lib/poolparty/plugins/rsyncmirror.rb +0 -26
  565. data/lib/poolparty/poolparty/custom_resource.rb +0 -45
  566. data/lib/poolparty/poolparty/resources/class_package.rb +0 -105
  567. data/lib/poolparty/poolparty/resources/conditional.rb +0 -67
  568. data/lib/poolparty/poolparty/resources/cron.rb +0 -14
  569. data/lib/poolparty/poolparty/resources/custom_service.rb +0 -30
  570. data/lib/poolparty/poolparty/resources/directory.rb +0 -26
  571. data/lib/poolparty/poolparty/resources/exec.rb +0 -28
  572. data/lib/poolparty/poolparty/resources/file.rb +0 -23
  573. data/lib/poolparty/poolparty/resources/gem_package.rb +0 -52
  574. data/lib/poolparty/poolparty/resources/host.rb +0 -14
  575. data/lib/poolparty/poolparty/resources/mount.rb +0 -22
  576. data/lib/poolparty/poolparty/resources/package.rb +0 -24
  577. data/lib/poolparty/poolparty/resources/remote_file.rb +0 -26
  578. data/lib/poolparty/poolparty/resources/service.rb +0 -21
  579. data/lib/poolparty/poolparty/resources/sshkey.rb +0 -23
  580. data/lib/poolparty/poolparty/resources/symlink.rb +0 -25
  581. data/lib/poolparty/poolparty/resources/variable.rb +0 -32
  582. data/lib/poolparty/provisioners/capistrano/capistrano.rb +0 -127
  583. data/lib/poolparty/provisioners/capistrano/capistrano_configurer.rb +0 -58
  584. data/lib/poolparty/provisioners/capistrano/recipies/base.rb +0 -104
  585. data/lib/poolparty/provisioners/capistrano/recipies/master.rb +0 -121
  586. data/lib/poolparty/provisioners/capistrano/recipies/slave.rb +0 -12
  587. data/lib/poolparty/provisioners/provisioner_base.rb +0 -204
  588. data/lib/poolparty/spec/core/string.rb +0 -16
  589. data/lib/poolparty/spec/matchers/a_spec_extensions_base.rb +0 -26
  590. data/lib/poolparty/spec/matchers/have_cron.rb +0 -28
  591. data/lib/poolparty/spec/matchers/have_deploydirectory.rb +0 -15
  592. data/lib/poolparty/spec/matchers/have_directory.rb +0 -31
  593. data/lib/poolparty/spec/matchers/have_exec.rb +0 -28
  594. data/lib/poolparty/spec/matchers/have_file.rb +0 -28
  595. data/lib/poolparty/spec/matchers/have_gempackage.rb +0 -28
  596. data/lib/poolparty/spec/matchers/have_git.rb +0 -28
  597. data/lib/poolparty/spec/matchers/have_host.rb +0 -28
  598. data/lib/poolparty/spec/matchers/have_mount.rb +0 -28
  599. data/lib/poolparty/spec/matchers/have_package.rb +0 -28
  600. data/lib/poolparty/spec/matchers/have_remotefile.rb +0 -28
  601. data/lib/poolparty/spec/matchers/have_rsyncmirror.rb +0 -28
  602. data/lib/poolparty/spec/matchers/have_service.rb +0 -28
  603. data/lib/poolparty/spec/matchers/have_sshkey.rb +0 -28
  604. data/lib/poolparty/spec/matchers/have_symlink.rb +0 -28
  605. data/lib/poolparty/spec/matchers/have_variable.rb +0 -32
  606. data/lib/poolparty/spec/spec/dynamic_matchers.rb +0 -63
  607. data/lib/poolparty/spec/spec/ensure_matchers_exist.rb +0 -7
  608. data/lib/poolparty/spec/templates/have_base.rb +0 -28
  609. data/lib/poolparty/templates/puppet.conf +0 -26
  610. data/lib/poolparty/templates/puppetcleaner +0 -12
  611. data/lib/poolparty/templates/puppetrerun +0 -22
  612. data/lib/poolparty/version.rb +0 -9
  613. data/lib/poolpartyspec.rb +0 -34
  614. data/log/pool.log +0 -0
  615. data/poolparty.gemspec +0 -580
  616. data/spec/poolparty/dependency_resolutions/base_spec.rb +0 -11
  617. data/spec/poolparty/modules/configurable_spec.rb +0 -29
  618. data/spec/poolparty/net/log/pool.log +0 -0
  619. data/spec/poolparty/net/messenger_spec.rb +0 -16
  620. data/spec/poolparty/plugins/svn_spec.rb +0 -16
  621. data/spec/poolparty/poolparty/custom_resource_spec.rb +0 -120
  622. data/spec/poolparty/poolparty/resources/class_package_spec.rb +0 -120
  623. data/spec/poolparty/poolparty/resources/conditional_spec.rb +0 -77
  624. data/spec/poolparty/poolparty/resources/cron_spec.rb +0 -50
  625. data/spec/poolparty/poolparty/resources/directory_spec.rb +0 -40
  626. data/spec/poolparty/poolparty/resources/exec_spec.rb +0 -37
  627. data/spec/poolparty/poolparty/resources/file_spec.rb +0 -40
  628. data/spec/poolparty/poolparty/resources/gem_spec.rb +0 -46
  629. data/spec/poolparty/poolparty/resources/host_spec.rb +0 -28
  630. data/spec/poolparty/poolparty/resources/package_spec.rb +0 -44
  631. data/spec/poolparty/poolparty/resources/remote_file_spec.rb +0 -40
  632. data/spec/poolparty/poolparty/resources/service_spec.rb +0 -45
  633. data/spec/poolparty/poolparty/resources/sshkey_spec.rb +0 -48
  634. data/spec/poolparty/poolparty/resources/symlink_spec.rb +0 -22
  635. data/spec/poolparty/poolparty/resources/user_spec.rb +0 -38
  636. data/spec/poolparty/poolparty/resources/variable_spec.rb +0 -24
  637. data/spec/poolparty/provisioners/capistrano/capistrano_spec.rb +0 -27
  638. data/spec/poolparty/provisioners/provisioner_base_spec.rb +0 -120
  639. data/spec/poolparty/spec/core/string_spec.rb +0 -57
  640. data/website/index.html +0 -107
  641. data/website/index.txt +0 -95
  642. data/website/stylesheets/code.css +0 -29
@@ -6,193 +6,125 @@
6
6
 
7
7
  Most of the Resources will not need to create their own
8
8
  =end
9
- module PoolParty
9
+ module PoolParty
10
10
  module Resources
11
-
12
- def resources
13
- @resources ||= {}
14
- end
15
-
16
- def resource(type=:file)
17
- resources[type] ||= []
18
- end
19
-
20
- def add_resource(type, opts={}, parent=self, &block)
21
- if opts[:name] && in_a_resource_store?(type, opts[:name])
22
- @res = get_from_local_resource_store(type, opts[:name], parent)
23
- @res ||= get_from_global_resource_store(type, opts[:name])
24
- # if should_duplicate_resource?(type, @res, parent, opts)
25
- # unless @res.parent == parent
26
- # @pa = parent
27
- # @res.instance_eval {@parent = @pa}
28
- # end
29
- # parent.resource(type) << @res
30
- # end
31
- else
32
- @res = returning "PoolParty::Resources::#{type.to_s.camelize}".camelize.constantize.new(opts, parent, &block) do |o|
33
- store_into_global_resource_store(o)
34
- resource(type) << o
35
- end
36
- end
37
- @res
38
- end
39
- def should_duplicate_resource?(type, res, pare, opts)
40
- pare != @res.parent &&
41
- pare.cloud != @res.cloud &&
42
- in_global_resource_store?(type, opts[:name]) &&
43
- !in_resources?(type, res, pare)
44
- end
45
- def get_resource(ty, key, parent=self)
46
- get_from_local_resource_store(ty, key, parent) || get_from_global_resource_store(ty, key)
47
- end
48
- def get_from_local_resource_store(type, key, parent)
49
- resource(type).select {|r| r.key == key }.first
50
- end
51
- def in_a_resource_store?(type, key, parent=self)
52
- !(get_resource(type, key) && in_global_resource_store?(type, key)).nil?
53
- end
54
- def in_resources?(type, key, parent=self)
55
- !get_resource(type, key).nil?
56
- end
57
- def global_resources_store
58
- $global_resources ||= []
59
- end
60
- def store_into_global_resource_store(r)
61
- global_resources_store << r unless in_global_resource_store?(r.class_name_sym, r.key)
62
- end
63
- def get_from_global_resource_store(ty, key)
64
- global_resources_store.select {|r| r if r.same_resources_of(ty, key) }.first
65
- end
66
- def in_global_resource_store?(ty, key)
67
- !get_from_global_resource_store(ty, key).nil?
68
- end
69
- #:nodoc:
70
- def reset_resources!
71
- $global_resources = $global_classpackage_store = @resources = nil
72
- end
73
-
74
- # def resources_string(pre="")
75
- # returning Array.new do |output|
76
- # output << resources_string_from_resources(resources)
77
- # end.join("\n")
78
- # end
11
+
79
12
 
80
13
  def custom_file(path, str)
81
14
  write_to_file_in_storage_directory(path, str)
82
15
  end
83
-
84
- class Resource
16
+
17
+ class Resource < PoolParty::PoolPartyBaseClass
85
18
  attr_accessor :prestring, :poststring
86
19
 
87
- include CloudResourcer
88
- include Configurable
20
+ # include CloudResourcer
21
+
89
22
  # For the time being, we'll make puppet the only available dependency resolution
90
23
  # base, but in the future, we can rip this out and make it an option
91
- include PoolParty::DependencyResolutions::Puppet
24
+ # include PoolParty::DependencyResolutions::Puppet
25
+ include PoolParty::DependencyResolverResourceExtensions
92
26
 
93
- extend PoolParty::Resources
94
- include PoolParty::Resources
27
+ # DSL Overriders
28
+ include PoolParty::ResourcingDsl
95
29
 
30
+ # ability to have searchable paths on resources
31
+ include SearchablePaths
32
+
33
+ # When we subclass Resource, we want to add a few methods to the Resources class
34
+ # This will anable us to call out to these resources in our DSLified manner
35
+ # When we call a method from the subclass, say it's the File class
36
+ # then we want to be able to have the method file() available.
37
+ # We also want to be able to fetch the resource with a get_file method.
38
+ # This will just call out to get the resource. If the resource isn't available
39
+ # in a resource store, we expect to return a nil result.
40
+ # Finally, the has_ and does_not_have_ methods are appended. See below for
41
+ # those methods. Then we make sure we add these resources as available_resources
42
+ # onto the class so we know it's available as a resource
96
43
  def self.inherited(subclass)
97
44
  subclass = subclass.to_s.split("::")[-1] if subclass.to_s.index("::")
98
45
  lowercase_class_name = subclass.to_s.underscore.downcase || subclass.downcase
46
+ method_name = "__#{lowercase_class_name}".to_sym
99
47
 
100
48
  # Add add resource method to the Resources module
101
- unless PoolParty::Resources.respond_to?(lowercase_class_name.to_sym)
49
+ unless PoolParty::PoolPartyBaseClass.respond_to?(method_name)
102
50
  method =<<-EOE
103
- def #{lowercase_class_name}(opts={}, parent=self, &blk)
104
- add_resource(:#{lowercase_class_name}, opts, parent, &blk)
51
+ private
52
+ def #{method_name}(opts={}, &blk)
53
+ add_resource(:#{lowercase_class_name}, opts, &blk)
105
54
  end
106
- def get_#{lowercase_class_name}(n, opts={}, parent=self, &block)
107
- res = in_a_resource_store?(:#{lowercase_class_name}, n) ?
108
- get_resource(:#{lowercase_class_name}, n) :
109
- nil
110
- # PoolParty::Resources::Resource.resource_string_name(#{lowercase_class_name}, n)
111
- # add_resource(:#{lowercase_class_name}, opts, parent, &blk)
112
- # res ||= PoolParty::Resources::Resource.resource_string_name(#{lowercase_class_name}, n)
55
+ def get_#{lowercase_class_name}(n, opts={}, &block)
56
+ res = get_resource(:#{lowercase_class_name}, n, opts, &block)
57
+ raise PackageException.new("Oops. Check that you specified the #{lowercase_class_name} \#\{n\}.") unless res
113
58
  res
114
59
  end
60
+ public
115
61
  EOE
116
- PoolParty::Resources.module_eval method
117
- PoolParty::Resources.add_has_and_does_not_have_methods_for(lowercase_class_name.to_sym)
62
+ PoolParty::PoolPartyBaseClass.module_eval method
63
+ PoolParty::PoolPartyBaseClass.add_has_and_does_not_have_methods_for(lowercase_class_name.to_sym)
118
64
 
119
65
  available_resources << subclass
120
66
  end
121
67
  end
122
68
 
69
+ # Keep track of the resources that are available. This way we can show some pretty output
70
+ # later and ensure that we are only calling available resources
123
71
  def self.available_resources
124
72
  @available_resources ||= []
125
73
  end
126
74
 
127
- def self.available_resource_methods
128
- available_resources.map {|a| a.my_methods }
129
- end
130
-
131
75
  # This is set in order of descending precedence
132
76
  # The options are overwritten from the bottom up
133
77
  # and the resource will use those as the values
134
78
  # Then it takes the value of the block and sets whatever is sent there as
135
79
  # the options
136
80
  # Finally, it uses the parent's options as the lowest priority
137
- def initialize(opts={}, parent=self, &block)
138
- run_setup(parent, &block)
139
- # Take the options of the parents
140
- set_vars_from_options(opts) unless opts.empty?
81
+ def initialize(opts={}, extra_opts={}, &block)
82
+ super(opts, extra_opts, &block)
83
+
84
+ @resource_name = @base_name
85
+ dsl_options[:name] = resource_name unless dsl_options.has_key?(:name)
141
86
 
142
- set_resource_parent
87
+ loaded(opts, &block)
143
88
 
144
- loaded(opts, @parent)
145
- end
146
-
147
- # Helper to set the containing parent on the resource
148
- def set_resource_parent
149
- if @parent && @parent != self
150
- if can_set_requires_for_parent
151
- # requires @parent.to_s
152
- end
153
- end
154
- end
155
-
156
- def can_set_requires_for_parent
157
- @parent.is_a?(PoolParty::Resources::Resource) &&
158
- @parent.printable? &&
159
- @parent.name != name &&
160
- !@parent.is_a?(PoolParty::Resources::Classpackage)
89
+ after_create
161
90
  end
162
91
 
163
92
  # Stub, so you can create virtual resources
164
93
  # This is called after the resource is initialized
165
94
  # with the options given to it in the init-block
166
- def loaded(opts={}, parent=self)
95
+ def loaded(opts={}, &block)
167
96
  end
168
97
 
169
- def cloud
170
- @pa = parent
171
- while !(@pa.is_a?(PoolParty::Cloud::Cloud) || @pa.nil? || @pa == self)
172
- @pa = @pa.respond_to?(:parent) ? @pa.parent : nil
173
- end
174
- @pa
98
+ def resource_name
99
+ @resource_name ||= nil
175
100
  end
176
101
 
177
- def parent_tree
178
- @pa = self
179
- returning Array.new do |arr|
180
- while !(@pa.is_a?(PoolParty::Cloud::Cloud) || @pa.nil? || @pa == self)
181
- @pa = @pa.respond_to?(:parent) ? @pa.parent : nil
182
- arr << @pa
183
- end
184
- end
102
+ def name(*args)
103
+ resource_name
185
104
  end
186
105
 
187
- # DSL Overriders
188
- include PoolParty::ResourcingDsl
106
+ # After create callback
107
+ def after_create
108
+ end
189
109
 
190
- def same_resources_of(t, k)
191
- key == k && class_name_sym == t
110
+ # We don't want to inherit the services on a resource, as resources
111
+ # are a base and should never have services.
112
+ def services
192
113
  end
114
+
115
+ def cloud
116
+ 2.upto(context_stack.size) do |i|
117
+ return ::PoolParty.context_stack[-i] if ::PoolParty.context_stack[-i].is_a?(PoolParty::Cloud::Cloud)
118
+ end
119
+ nil
120
+ end
121
+
193
122
  def duplicatable?
194
123
  false
195
124
  end
125
+ def resource?
126
+ true
127
+ end
196
128
  # This way we can subclass resources without worry
197
129
  def class_type_name
198
130
  self.class.to_s.top_level_class.underscore.downcase
@@ -220,23 +152,32 @@ module PoolParty
220
152
  def disallowed_options
221
153
  []
222
154
  end
223
- def allowed_options
224
- [
225
- :subscribe, :owner, :group, :path, :mode, :source, :notify, :subscribe, :check, :creates, :cwd, :command, :ensure,
226
- :require, :schedule, :range, :alias, :hour, :minute, :user, :month, :monthday, :name, :onlyif, :unless, :refreshonly,
227
- :refresh, :content, :template, :ip, :repeat, :provider, :key, :device, :fstype, :remounts, :options, :atboot, :before,
228
- :binary, :status, :start, :stop, :restart, :pattern, :recurse, :home
229
- ]
230
- end
155
+
231
156
  def key
232
157
  name
233
158
  end
234
- def virtual_resource?
235
- false
159
+ # def virtual_resource?
160
+ # false
161
+ # end
162
+ # def printable?
163
+ # true
164
+ # end
165
+ def is_in_plugin?
166
+ parent.is_plugin?
236
167
  end
237
- def printable?
168
+
169
+ def is_a_resource?
238
170
  true
239
171
  end
172
+
173
+ def method_missing(m,*a,&block)
174
+ if parent && parent.dsl_options.has_key?(m) && is_in_plugin?
175
+ parent.send m, *a, &block
176
+ else
177
+ super
178
+ end
179
+ end
180
+
240
181
  # Private method just for resource retrievling purposes
241
182
  def class_name_sym
242
183
  self.class.to_s.top_level_class.downcase.to_sym
@@ -248,8 +189,8 @@ module PoolParty
248
189
  # it returns an empty hash
249
190
  def get_modified_options
250
191
  unless @modified_options
251
- if options
252
- opts = options.inject({}) do |sum,h|
192
+ if dsl_options
193
+ opts = dsl_options.inject({}) do |sum,h|
253
194
  sum.merge!({h[0].to_sym => ((h[1].nil?) ? self.send(h[0].to_sym) : h[1]) })
254
195
  end
255
196
  else
@@ -258,42 +199,15 @@ module PoolParty
258
199
  @full_allowed_options ||= allowed_options.reject {|ele| disallowed_options.include?(ele) }
259
200
  @modified_options = opts.reject do |k,v|
260
201
  !@full_allowed_options.include?(k) ||
261
- @parent && @parent.respond_to?(:options) && @parent != self && @parent.options.has_key?(k) && @parent.options[k] == options[k]
202
+ @parent && @parent.respond_to?(:dsl_options) && @parent != self && @parent.dsl_options.has_key?(k) && @parent.dsl_options[k] == dsl_options[k]
262
203
  end
263
204
  end
264
205
  @modified_options
265
206
  end
266
- end
267
-
268
- # Adds two methods to the module
269
- # Adds the method type:
270
- # has_
271
- # and
272
- # does_not_have_
273
- # for the type passed
274
- # for instance
275
- # add_has_and_does_not_have_methods_for(:file)
276
- # gives you the methods has_file and does_not_have_file
277
- # TODO: Refactor nicely to include other types that don't accept ensure
278
- def self.add_has_and_does_not_have_methods_for(type=:file)
279
- module_eval <<-EOE
280
- def has_#{type}(opts={}, parent=self, &block)
281
- #{type}(handle_option_values(opts).merge(:ensures => "present"), parent, &block)
282
- end
283
- def does_not_have_#{type}(opts={}, parent=self, &block)
284
- #{type}(handle_option_values(opts).merge(:ensures => "absent"), parent, &block)
285
- end
286
- EOE
287
- end
288
-
289
- def handle_option_values(o)
290
- case o.class.to_s
291
- when "String"
292
- {:name => o}
293
- else
294
- o
295
- end
207
+
296
208
  end
297
209
 
298
210
  end
299
- end
211
+ end
212
+
213
+ Dir["#{::File.dirname(__FILE__)}/../resources/*.rb"].each {|lib| require "#{lib}"}
@@ -1,43 +1,55 @@
1
+ require "parenting"
1
2
  module PoolParty
2
3
 
3
4
  class Script
5
+ include Parenting
4
6
 
5
7
  def self.inflate_file(file)
6
8
  inflate open(file).read if file
7
9
  end
8
10
 
9
11
  def self.inflate(script, file="__SCRIPT__")
10
- apool = new
11
- apool.instance_eval script, file
12
- apool.inflate
12
+ module_eval script, file
13
+ # a = new
14
+ # a.instance_eval <<-EOM
15
+ # def run_child(pa)
16
+ # context_stack.push pa
17
+ # #{str}
18
+ # context_stack.pop
19
+ # remove_method(:run_child)
20
+ # self
21
+ # end
22
+ # EOM
23
+ # a.run_child(self)
24
+ # a
13
25
  end
14
-
15
- def inflate
16
- pools.map {|name,pool| pool.inflate } unless pools.empty?
17
- end
18
-
26
+
19
27
  def self.to_ruby(opts={},&blk)
20
28
  blk.to_ruby(opts)
21
29
  end
22
30
 
23
31
  def self.for_save_string
24
- returning Array.new do |out|
25
- pools.collect {|n,pl| pl}.each do |pl|
26
- out << "pool :#{pl.name} do"
27
- clouds.each do |n,cl|
28
- out << <<-EOE
29
- cloud :#{cl.name} do
30
- #{cl.minimum_runnable_options.map {|o| "#{o} #{cl.send(o).respec_string}"}.join("\n")}
31
- end
32
- EOE
32
+ out = []
33
+ pools.collect {|n,pl| pl}.each do |pl|
34
+ out << "pool :#{pl.name} do"
35
+ clouds.each do |n,cl|
36
+ # grossy-gross
37
+ minimum_runnable_options_string = cl.minimum_runnable_options.collect do |o|
38
+ "#{o} #{cl.send(o).respec_string}" unless cl.send(o).nil?
33
39
  end
34
- out << "end"
40
+ out << <<-EOE
41
+ cloud :#{cl.name} do
42
+ #{minimum_runnable_options_string.join("\n")}
43
+ end
44
+ EOE
35
45
  end
36
- end.join("\n")
46
+ out << "end"
47
+ end
48
+ out.join("\n")
37
49
  end
38
50
 
39
51
  def self.save!(to_file=true)
40
- write_to_file_in_storage_directory(Base.default_specfile_name, for_save_string) if to_file
52
+ write_to_file_in_storage_directory(Default.default_specfile_name, for_save_string) if to_file
41
53
  for_save_string
42
54
  end
43
55
 
@@ -0,0 +1,44 @@
1
+ module PoolParty
2
+
3
+ class Service < PoolPartyBaseClass
4
+
5
+ include PoolParty::DependencyResolverCloudExtensions
6
+
7
+ def initialize(o={}, &block)
8
+ super(o, &block)
9
+ end
10
+
11
+ def to_properties_hash
12
+ { :pp_type => "plugin", :options => options,
13
+ :name => self.class.to_s.top_level_class,
14
+ :resources => ordered_resources.map {|a| a.to_properties_hash }}
15
+ end
16
+
17
+ def cloud
18
+ 2.upto(context_stack.size) do |i|
19
+ return ::PoolParty.context_stack[-i] if ::PoolParty.context_stack[-i].is_a?(PoolParty::Cloud::Cloud)
20
+ end
21
+ nil
22
+ end
23
+
24
+ def self.add_has_and_does_not_have_methods_for(typ=:file)
25
+ lowercase_class_name = typ.to_s.top_level_class.downcase
26
+
27
+ meth = <<-EOM
28
+ def __#{lowercase_class_name}(opts={}, &block)
29
+ i = PoolParty::#{lowercase_class_name.camelcase}Class.new(opts, &block)
30
+ plugin_store << i if respond_to?(:plugin_store)
31
+ i
32
+ end
33
+ alias :#{lowercase_class_name} :__#{lowercase_class_name}
34
+ EOM
35
+
36
+ PoolParty::PoolPartyBaseClass.module_eval meth
37
+ PoolParty::PoolPartyBaseClass.add_has_and_does_not_have_methods_for(lowercase_class_name.to_sym)
38
+ end
39
+
40
+ end
41
+
42
+ end
43
+
44
+ Dir["#{::File.dirname(__FILE__)}/../services/*.rb"].each {|lib| require "#{lib}"}
@@ -0,0 +1,27 @@
1
+ require "ostruct"
2
+ require "erb"
3
+
4
+ module PoolParty
5
+ class Template
6
+
7
+ def self.compile_string(string, opts={})
8
+ vars = OpenStruct.new opts
9
+ handle_render(string, vars, (opts.delete(:render) || :erb))
10
+ end
11
+
12
+ def self.compile_file(file, opts={})
13
+ content = open(file).read
14
+ compile_string(content, opts)
15
+ end
16
+
17
+ def self.handle_render(string, vars, renderer)
18
+ case renderer
19
+ when :haml
20
+ nil
21
+ else
22
+ ERB.new(string).result(vars.send(:binding))
23
+ end
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,164 @@
1
+ =begin rdoc
2
+ BootStrapper is contains the basic files that need to be uploaded to a new instance and the first commands that are run to set up a base PoolParty enviornment. This includes things like ensuring that ruby, rubygems, and poolparty are installed, and then start the monitor.
3
+ =end
4
+
5
+ require "#{::File.dirname(__FILE__)}/../net/remoter/connections"
6
+
7
+ # Provide a very simple provisioner with as few dependencies as possible
8
+ module PoolParty
9
+ module Provision
10
+
11
+ class BootStrapper
12
+ include ::PoolParty::Remote
13
+
14
+ # List of gems that are default to install
15
+ def self.gem_list
16
+ @gem_list ||= %w( logging
17
+ rake
18
+ xml-simple
19
+ net-ssh
20
+ net-sftp
21
+ net-scp
22
+ net-ssh-gateway
23
+ highline
24
+ json
25
+ activesupport
26
+ grempe-amazon-ec2
27
+ ohai
28
+ chef
29
+ auser-dslify
30
+ auser-parenting
31
+ adamwiggins-rest-client
32
+ rack
33
+ thin
34
+ )
35
+ end
36
+
37
+ # Default options for the boot_strapper
38
+ @defaults = ::PoolParty::Default.default_options.merge({
39
+ :full_keypair_path => "#{ENV["AWS_KEYPAIR_NAME"]}" || "~/.ssh/id_rsa",
40
+ :installer => 'apt-get',
41
+ :dependency_resolver => 'chef'
42
+ })
43
+ class <<self; attr_reader :defaults; end
44
+
45
+ # In case the method is being called on ourself, let's check the
46
+ # defaults hash to see if it's available there
47
+ def method_missing(m,*a,&block)
48
+ if self.class.defaults.has_key?(m)
49
+ self.class.defaults[m]
50
+ elsif @cloud
51
+ @cloud.send m, *a, &block
52
+ else
53
+ super
54
+ end
55
+ end
56
+
57
+ def initialize(host, opts={}, &block)
58
+ self.class.defaults.merge(opts).to_instance_variables(self)
59
+ @target_host = host
60
+ @cloud = opts[:cloud]
61
+
62
+ instance_eval &block if block
63
+ @cloud.call_before_bootstrap_callbacks if @cloud
64
+
65
+ default_commands
66
+ dputs "Starting bootstrapping process on #{host}"
67
+ execute!
68
+
69
+ @cloud.call_after_bootstrap_callbacks if @cloud
70
+ after_bootstrap
71
+ dputs "Bootstrapping complete on #{host}"
72
+ end
73
+
74
+ def self.class_commands
75
+ @class_commands ||= []
76
+ end
77
+
78
+ # Collect all the bootstrap files that will be uploaded to the remote instances
79
+ def pack_the_dependencies
80
+ # Add the keypair to the instance... shudder
81
+ ::Suitcase::Zipper.add(keypair, "keys")
82
+
83
+ # Use the locally built poolparty gem if it is availabl
84
+ if edge_pp_gem = Dir["#{Default.vendor_path}/../pkg/*poolparty*gem"].pop
85
+ puts "using edge poolparty: #{::File.expand_path(edge_pp_gem)}"
86
+ ::Suitcase::Zipper.add(edge_pp_gem, 'gems')
87
+ else
88
+ vputs "using gem auser-poolparty. use rake build to use edge"
89
+ self.class.gem_list << 'auser-poolparty'
90
+ end
91
+ # Add the gems to the suitcase
92
+ puts "Adding default gem dependencies"
93
+ ::Suitcase::Zipper.gems self.class.gem_list, "#{Default.tmp_path}/trash/dependencies"
94
+
95
+ ::Suitcase::Zipper.packages( "http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz",
96
+ "#{Default.tmp_path}/trash/dependencies/packages")
97
+ # ::Suitcase::Zipper.add("templates/")
98
+
99
+ ::Suitcase::Zipper.add("#{::File.dirname(__FILE__)}/../templates/monitor.ru", "/etc/poolparty/")
100
+ ::Suitcase::Zipper.add("#{::File.dirname(__FILE__)}/../templates/monitor.god", "/etc/poolparty/")
101
+
102
+ ::Suitcase::Zipper.add("#{Default.tmp_path}/trash/dependencies/cache", "gems")
103
+
104
+ ::Suitcase::Zipper.add("#{::File.join(File.dirname(__FILE__), '..', 'templates', 'gemrc_template' )}", "etc/poolparty")
105
+
106
+ instances = @cloud.nodes(:status => "running") + [@cloud.started_instance]
107
+ ::Suitcase::Zipper.add_content_as(
108
+ {:instances => instances.flatten.compact}.to_json,
109
+ "neighborhood.json", "/etc/poolparty")
110
+
111
+ ::Suitcase::Zipper.build_dir!("#{Default.tmp_path}/dependencies")
112
+
113
+ ::Suitcase::Zipper.flush!
114
+
115
+ # ::FileUtils.rm_rf "#{Default.tmp_path}/trash"
116
+ end
117
+
118
+ # The commands to setup a PoolParty enviornment
119
+ def default_commands
120
+ pack_the_dependencies
121
+ ::FileUtils.rm_rf "#{Default.tmp_path}/dependencies/gems/cache"
122
+ rsync "#{Default.tmp_path}/dependencies", '/var/poolparty'
123
+
124
+ commands << [
125
+ "mkdir -p /etc/poolparty",
126
+ "mkdir -p /var/log/poolparty",
127
+ "groupadd -f poolparty",
128
+ # "useradd poolparty --home-dir /var/poolparty --groups poolparty --create-home",
129
+ 'cd /var/poolparty/dependencies',
130
+ "cp /var/poolparty/dependencies/etc/poolparty/gemrc_template /etc/poolparty",
131
+ "#{installer} update",
132
+ "#{installer} install -y ruby ruby1.8-dev libopenssl-ruby1.8 build-essential wget", #optional, but nice to have
133
+ "tar -zxvf packages/rubygems-1.3.1.tgz",
134
+ "cd rubygems-1.3.1",
135
+ "ruby setup.rb --no-ri --no-rdoc",
136
+ "ln -sfv /usr/bin/gem1.8 /usr/bin/gem", #TODO: check if this is really needed
137
+ "cd ../ && rm -rf rubygems-1.3.1*",
138
+ "gem source --add http://gems.github.com",
139
+ "cd /var/poolparty/dependencies/gems/",
140
+ "gem install --no-rdoc --no-ri -y *.gem",
141
+ "cd /var/poolparty/dependencies",
142
+ "cp /var/poolparty/dependencies/etc/poolparty/* /etc/poolparty/",
143
+ 'touch /var/poolparty/POOLPARTY.PROGRESS',
144
+ "mkdir -p /root/.ssh",
145
+ "cp /var/poolparty/dependencies/keys/* /root/.ssh/",
146
+ "chmod 600 /root/.ssh/#{::File.basename(@cloud.keypair.full_filepath)}",
147
+ # "god -c /etc/poolparty/monitor.god",
148
+ "mkdir -p /var/log/poolparty/",
149
+ "thin -R /etc/poolparty/monitor.ru -p 8642 --pid /var/run/stats_monitor.pid --daemon -l /var/log/poolparty/monitor.log start 2>/dev/null",
150
+ 'echo "bootstrap" >> /var/poolparty/POOLPARTY.PROGRESS']
151
+ commands << self.class.class_commands unless self.class.class_commands.empty?
152
+ end
153
+
154
+ def after_bootstrap
155
+ # thin_cmd = "thin -R /etc/poolparty/monitor.ru start -p 8642 --daemonize --pid /var/run/poolparty/monitor.pid --log /var/log/poolparty/monitor.log --environment production --chdir /var/poolparty" #TODO --user poolparty --group poolparty
156
+ # vputs "thin_cmd = #{thin_cmd}"
157
+ # curl_put = "curl -i -XPUT -d'{}' http://localhost:8642/stats_monitor"
158
+ # execute! [ thin_cmd, "sleep 10", curl_put ]
159
+ # execute! ["sleep 5", curl_put]
160
+ end
161
+ end
162
+
163
+ end
164
+ end