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
@@ -0,0 +1,78 @@
1
+ =begin rdoc
2
+ ssh key used to login to remote instances
3
+ =end
4
+ module PoolParty
5
+ class Key
6
+
7
+ attr_accessor :filepath
8
+
9
+ # Create a new key that defaults to id_rsa as the name.
10
+ def initialize(fpath=nil)
11
+ @filepath = (fpath.nil? || fpath.empty?) ? "id_rsa" : fpath
12
+ end
13
+
14
+ # If the full_filepath is nil, then the key doesn't exist
15
+ def exists?
16
+ full_filepath != nil
17
+ end
18
+
19
+ # Read the content of the key
20
+ def content
21
+ @content ||= exists? ? open(full_filepath).read : nil
22
+ end
23
+
24
+ # Returns the full_filepath of the key. If a full filepath is passed, we just return the expanded filepath
25
+ # for the keypair, otherwise query where it is against known locations
26
+ def full_filepath
27
+ @full_filepath ||= ::File.file?(::File.expand_path(filepath)) ? ::File.expand_path(filepath) : search_in_known_locations
28
+ end
29
+ alias :to_s :full_filepath
30
+
31
+ # Basename of the keypair
32
+ def basename
33
+ @basename ||= ::File.basename(full_filepath, ::File.extname(full_filepath)) rescue filepath
34
+ end
35
+
36
+ # Just the filename of the keypair
37
+ def filename
38
+ @filename ||= ::File.basename(full_filepath) rescue filepath
39
+ end
40
+
41
+ # Search for the key in default locations with the entire filepath
42
+ # if the file exists. If it doesn't exist in the default locations,
43
+ # then it returns nil and assumes we it doesn't exist
44
+ def search_in_known_locations
45
+ self.class.keypair_paths.each do |path|
46
+ full_path = ::File.join( ::File.expand_path(path), ::File.basename(filepath))
47
+ return full_path if ::File.exists?(full_path)
48
+ end
49
+ # raise Exception.new("We cannot continue without a keypair. Please define a keypair in your clouds.rb")
50
+ # TODO: Add raise for keypair
51
+ nil
52
+ end
53
+
54
+ # Default locations to search for the key
55
+ def self.keypair_paths
56
+ [
57
+ "#{ENV["HOME"]}/.ssh",
58
+ "#{Default.poolparty_home_path}/keys",
59
+ PoolParty::Default.base_keypair_path,
60
+ PoolParty::Default.base_config_directory,
61
+ PoolParty::Default.base_ssh_path,
62
+ PoolParty::Default.remote_storage_path,
63
+ Dir.pwd
64
+ ]
65
+ end
66
+
67
+ # Support to add the enumerable each to keys
68
+ def each
69
+ yield full_filepath
70
+ end
71
+
72
+ # Turn the keypair into the a useful json string
73
+ def to_json
74
+ "{\"basename\":\"#{basename}\",\"full_filepath\": \"/etc/poolparty/#{filename}\"}"
75
+ end
76
+
77
+ end
78
+ end
@@ -1,27 +1,28 @@
1
- =begin rdoc
2
- A logging class to allow us to log to locations
3
- =end
4
- class Loggable
5
- def initialize
6
- self.class.loggers << file_logger
7
- file_logger.level = :info
8
- end
9
- def file_logger
10
- @file_logger ||= Logging.logger( Base.pool_logger_location, logging_opts )
11
- end
12
- def stdout_logger
13
- @stdout_logger ||= Logging.logger(STDOUT, logging_opts.merge({:pattern => "%m\n"}))
14
- end
15
- def logging_opts
16
- {:pattern => "[%d] %-l : %m\n",
17
- :date_pattern => "%Y-%m-%d %H:%M:%S.%s"}
18
- end
19
- %w(info warn debug notice).each do |meth|
20
- define_method(meth.to_sym) do |*args|
21
- self.class.loggers.each {|l| l.send meth.to_sym, args}
22
- end
23
- end
24
- def self.loggers
25
- @loggers ||= []
26
- end
27
- end
1
+ #todo: Deprecate
2
+ # =begin rdoc
3
+ # A logging class to allow us to log to locations
4
+ # =end
5
+ # class Loggable
6
+ # def initialize
7
+ # self.class.loggers << file_logger
8
+ # file_logger.level = :info
9
+ # end
10
+ # def file_logger
11
+ # @file_logger ||= Logging.logger( Default.pool_logger_location, logging_opts )
12
+ # end
13
+ # def stdout_logger
14
+ # @stdout_logger ||= Logging.logger(STDOUT, logging_opts.merge({:pattern => "%m\n"}))
15
+ # end
16
+ # def logging_opts
17
+ # {:pattern => "[%d] %-l : %m\n",
18
+ # :date_pattern => "%Y-%m-%d %H:%M:%S.%s"}
19
+ # end
20
+ # %w(info warn debug notice).each do |meth|
21
+ # define_method(meth.to_sym) do |*args|
22
+ # self.class.loggers.each {|l| l.send meth.to_sym, args}
23
+ # end
24
+ # end
25
+ # def self.loggers
26
+ # @loggers ||= []
27
+ # end
28
+ # end
@@ -0,0 +1,102 @@
1
+ =begin rdoc
2
+ Neighborhood
3
+
4
+ Neighborhoods describes the neighborhood that an instance is in.
5
+ Neighborhoods are instances that are "near" other instances, either by
6
+ association of instantiation or through monitor_rack.
7
+ =end
8
+ require "#{::File.dirname(__FILE__)}/../modules/pinger"
9
+ require "#{::File.dirname(__FILE__)}/../schema"
10
+
11
+ module PoolParty
12
+ class Neighborhoods
13
+ include ::PoolParty::Pinger
14
+ attr_reader :schema
15
+
16
+ # Create a neighborhood from a string, array or hash given.
17
+ def initialize(data)
18
+ raise Exception.new("You must pass a string or a hash to Neighborhoods") unless data
19
+ parsed_data = case data
20
+ when Array
21
+ {:instances => data.map {|entry| disect(entry) }}
22
+ when String
23
+ {:instances => JSON.parse(data)}#.map "#{inst["instance_id"]}\t#{inst["ip"]}"}}
24
+ when Hash
25
+ data
26
+ end
27
+ @schema = PoolParty::Schema.new(parsed_data)
28
+ raise Exception.new("No instances found in the Neighborhoods schema") unless @schema.instances
29
+ end
30
+
31
+ # Get the known instances from the neighborhood.json file on the server
32
+ def instances
33
+ @instances ||= @schema.to_hash[:instances] rescue @schema.instances.collect {|line| disect(line) }
34
+ end
35
+
36
+ # Returns empty if the neighborhood has no instances
37
+ def empty?
38
+ instances.empty?
39
+ end
40
+
41
+ # Get the next node in the hash
42
+ def next_node(node_hash)
43
+ return nil if empty?
44
+ sort.wrapping_next(node_hash)
45
+ end
46
+
47
+ # Sort the instances by ip string, a very basic sort
48
+ def sort
49
+ instances.sort {|a, b| a.ip <=> b.ip}
50
+ end
51
+
52
+ # Get the instances at the specific index of the neighborhood
53
+ def [](at)
54
+ instances[at] if at >= 0 && at < instances.size
55
+ end
56
+
57
+ def disect(line)
58
+ case line
59
+ when String
60
+ arr = line.split("\t")
61
+ {:instance_id => arr[0], :ip => arr[1]}
62
+ else
63
+ line
64
+ end
65
+ end
66
+
67
+ # Run through an enumeration of the instances
68
+ def each(&block)
69
+ instances.each &block
70
+ end
71
+
72
+ # TODO: Make this into something useful
73
+ def clump(filepath=nil)
74
+ out = instances.to_json
75
+ ::File.open(filepath, "w") {|f| f << out } if filepath
76
+ out
77
+ end
78
+
79
+ def self.clump(json, filepath=nil)
80
+ new(json).clump(filepath)
81
+ end
82
+
83
+ # Load the default neighborhood.json file
84
+ # If the neighborhood.json file exists in
85
+ # /etc/poolparty/neighborhood.json
86
+ # then load the neighborhood from the file, otherwise
87
+ # if there is a butterfly server running locally,
88
+ # query it for the current neighborhood.
89
+ # Finally, return an empty set of instances
90
+ def self.load_default
91
+ if ::File.file?("/etc/poolparty/neighborhood.json")
92
+ new( open("/etc/poolparty/neighborhood.json").read )
93
+ elsif ping_port("127.0.0.1", Default.butterfly_port, 1)# butterfly responding?
94
+ require "open-uri"
95
+ new( open("http://127.0.0.1:8642/neighborhood").read )
96
+ else
97
+ new("[]")
98
+ end
99
+ end
100
+
101
+ end
102
+ end
@@ -1,33 +1,68 @@
1
+ require "#{::File.dirname(__FILE__)}/service.rb"
2
+ require "#{::File.dirname(__FILE__)}/../provision/boot_strapper.rb"
3
+
1
4
  module PoolParty
2
-
3
5
  module Plugin
4
6
 
5
- class Plugin
6
- include Configurable
7
+ class Plugin < PoolParty::Service
7
8
  include CloudResourcer
8
- include Resources
9
+ include PoolParty::DependencyResolverCloudExtensions
10
+ include PoolParty::Callbacks
9
11
 
10
- class_inheritable_accessor :name
12
+ def initialize(opts={}, prnt=nil, &block)
13
+ setup_callbacks
14
+
15
+ run_in_context do
16
+ before_load(opts, &block)
17
+ end
18
+
19
+ block = Proc.new {enable} unless block
20
+
21
+ @opts = (opts.is_a?(Hash) ? opts : {:name => opts})
22
+ super(opts, &block)
23
+
24
+ run_in_context do
25
+ loaded @opts, &block
26
+ end
27
+
28
+ after_create
29
+ end
11
30
 
12
- default_options({})
31
+ # Overwrite this method
32
+ def before_load(o={}, &block)
33
+ end
34
+ def loaded(o={}, &block)
35
+ end
36
+ # Callbacks available to plugins
37
+ def after_create
38
+ end
13
39
 
14
- def initialize(p=self, opts={}, &block)
15
- store_block &block
16
- run_setup(p)
17
- realize! unless block
40
+ def enable
41
+ end
42
+ def is_plugin?
43
+ true
18
44
  end
19
-
20
- def realize!(force=false)
21
- force ? force_realize! : (@realized ? nil : force_realize!)
45
+ def cloud
46
+ @parent
22
47
  end
23
48
 
24
- def force_realize!
25
- run_setup(parent, false, &stored_block)
26
- enable unless stored_block
49
+ def bootstrap_gems *gems
50
+ gems.each do |g|
51
+ Provision::BootStrapper.gem_list << g unless Provision::BootStrapper.gem_list.include?(g)
52
+ end
27
53
  end
28
54
 
29
- # Overwrite this method
30
- def enable
55
+ def bootstrap_commands cmds
56
+ Provision::BootStrapper.class_commands << cmds
57
+ end
58
+
59
+ def configure_commands cmds
60
+ Provision::DrConfigure.class_commands << cmds
61
+ end
62
+
63
+ def self.inherited(subclass)
64
+ method_name = subclass.to_s.top_level_class.gsub(/pool_party_/, '').gsub(/_class/, '').downcase.to_sym
65
+ add_has_and_does_not_have_methods_for(method_name)
31
66
  end
32
67
 
33
68
  end
@@ -4,7 +4,7 @@ module PoolParty
4
4
  module PluginModel
5
5
 
6
6
  def plugin(name=:plugin, cloud=nil, &block)
7
- plugins.has_key?(name) ? plugins[name] : (plugins[name] = PluginModel.new(name, &block))
7
+ plugins[name] ||= PluginModel.new(name, &block)
8
8
  end
9
9
  alias_method :register_plugin, :plugin
10
10
 
@@ -12,34 +12,31 @@ module PoolParty
12
12
  $plugins ||= {}
13
13
  end
14
14
 
15
- class PluginModel
16
- attr_accessor :name, :klass
17
- include MethodMissingSugar
18
- include Configurable
19
- include PrettyPrinter
15
+ class PluginModel
16
+ attr_accessor :klass
20
17
 
21
- def initialize(name,&block)
22
- @name = name
23
- # @parent = cld
24
- class_string_name = "#{name}"
25
-
26
- # Create the class to evaluate the plugin on the implemented call
27
- @klass = klass = class_string_name.class_constant(PoolParty::Plugin::Plugin)
28
- mod = class_string_name.module_constant(&block)
29
-
30
- klass.send :include, mod
18
+ def initialize(name,&block)
19
+ symc = "#{name}".top_level_class.camelcase
20
+ klass = symc.class_constant(PoolParty::Plugin::Plugin, {:preserve => true}, &block)
31
21
 
22
+ lowercase_class_name = symc.downcase
32
23
  # Store the name of the class for pretty printing later
33
- klass.name = name
24
+ # klass.name = name
34
25
  # Add the plugin definition to the cloud as an instance method
35
- PoolParty::Cloud::Cloud.class_eval <<-EOE
36
- def #{name}(parent=self, &block)
37
- @pa = parent
38
- @#{class_string_name.downcase} ||= returning #{class_string_name.class_constant}.new(parent, &block) do |pl|
39
- @pa.plugin_store << pl
26
+ meth = <<-EOM
27
+ def #{lowercase_class_name}(opts={}, &block)
28
+ i = plugin_store.select {|i| i if i.class == #{lowercase_class_name.camelcase}Class }.first if plugin_store
29
+ if i
30
+ i
31
+ else
32
+ inst = #{lowercase_class_name.camelcase}Class.new(opts, parent, &block)
33
+ plugin_store << inst if plugin_store
34
+ inst
40
35
  end
41
36
  end
42
- EOE
37
+ EOM
38
+
39
+ PoolParty::Cloud::Cloud.class_eval meth
43
40
  end
44
41
 
45
42
  end
@@ -1,9 +1,9 @@
1
1
  module PoolParty
2
2
  module Pool
3
3
 
4
- def pool(name=:app, &block)
5
- pools.has_key?(name) ? pools[name] : (pools[name] = Pool.new(name, &block))
6
- end
4
+ def pool(name, &block)
5
+ pools[name] ||= Pool.new(name, &block)
6
+ end
7
7
 
8
8
  def pools
9
9
  $pools ||= {}
@@ -14,45 +14,53 @@ module PoolParty
14
14
  pl.options.merge!(opts) if pl.options
15
15
  pl.run_in_context &block if block
16
16
  end
17
-
17
+
18
+ def set_pool_specfile(filename)
19
+ $pool_specfile = filename unless $pool_specfile
20
+ end
21
+
22
+ def pool_specfile
23
+ $pool_specfile
24
+ end
25
+
18
26
  def reset!
19
27
  $pools = $clouds = $plugins = @describe_instances = nil
20
28
  end
21
29
 
22
- class Pool
23
- # include PoolParty::Cloud
24
- include MethodMissingSugar
25
- # include PluginModel
26
- include Configurable
30
+ class Pool < PoolParty::PoolPartyBaseClass
27
31
  include PrettyPrinter
28
- include CloudResourcer
32
+ include CloudResourcer # WHY?!?! TODO: check on this
29
33
  include Remote
30
34
 
31
- default_options({
32
- :access_key => Base.access_key,
33
- :secret_access_key => Base.secret_access_key
34
- })
35
+ default_options Default.default_options
35
36
 
36
37
  def initialize(name,&block)
37
- setup_defaults
38
38
  @pool_name = name
39
39
  @pool_name.freeze
40
- # run_in_context &block if block
41
- run_setup(self, &block)
40
+
41
+ ::PoolParty.context_stack.clear
42
+
43
+ set_pool_specfile get_latest_caller
44
+ setup_defaults
45
+
46
+ super(&block)
42
47
  end
43
-
44
- def name
45
- @pool_name
48
+ def self.load_from_file(filename=nil)
49
+ # a = new ::File.basename(filename, ::File.extname(filename))
50
+ File.open(filename, 'r') do |f|
51
+ instance_eval f.read, pool_specfile
52
+ end
53
+ # a
54
+ end
55
+ def name(*args)
56
+ @pool_name ||= @pool_name ? @pool_name : (args.empty? ? :default_pool : args.first)
46
57
  end
58
+
59
+ def parent;nil;end
47
60
 
48
- def setup_defaults
49
- plugin_directory "#{::File.dirname(pool_specfile ? pool_specfile : Dir.pwd)}/plugins"
61
+ def setup_defaults
50
62
  PoolParty::Extra::Deployments.include_deployments "#{Dir.pwd}/deployments"
51
63
  end
52
-
53
- # This is where the entire process starts
54
- def inflate
55
- end
56
64
 
57
65
  def pool_clouds
58
66
  returning Array.new do |arr|
@@ -0,0 +1,190 @@
1
+ require "dslify"
2
+ require "parenting"
3
+ module PoolParty
4
+
5
+ def context_stack
6
+ $context_stack ||= []
7
+ end
8
+
9
+ class PoolPartyBaseClass
10
+ include Dslify, Parenting
11
+
12
+ include PoolParty::DependencyResolverCloudExtensions
13
+ # attr_accessor :depth
14
+
15
+ def initialize(opts={}, extra_opts={}, &block)
16
+ add_to_parent_if_parent_exists_and_is_a_service
17
+
18
+ @init_block = block
19
+ @base_name = get_name_from_options_and_extra_options(opts, extra_opts)
20
+
21
+ o = (opts.is_a?(Hash) ? extra_opts.merge(opts) : extra_opts).merge(:name => @base_name)
22
+
23
+ run_in_context(o, &block)
24
+ super(&block)
25
+ end
26
+
27
+ # Overloading the parent run_in_context
28
+ def run_in_context(o={}, &block)
29
+ if o
30
+ context_stack.push self
31
+ set_vars_from_options(o)
32
+ instance_eval &block if block
33
+ context_stack.pop
34
+ else
35
+ super
36
+ end
37
+ end
38
+
39
+ # Add the parent's options to my own and add myself as a service if I am not a resource
40
+ def add_to_parent_if_parent_exists_and_is_a_service
41
+ if parent && !parent.is_a?(PoolParty::Resources::Resource)
42
+ dsl_options.merge!(parent.dsl_options) if parent.is_a?(PoolParty::Pool::Pool)
43
+ parent.add_service(self) if parent.respond_to?(:add_service) && !is_a_resource?
44
+ end
45
+ end
46
+
47
+ # Try to extract the name from the options
48
+ def get_name_from_options_and_extra_options(opts={}, extra_opts={})
49
+ opts.is_a?(Hash) ? (opts.has_key?(:name) ? opts.delete(:name) : nil) : dsl_options[:name] = opts
50
+ end
51
+
52
+ # Add to the services pool for the manifest listing
53
+ def add_service(serv, extra_name="")
54
+ subclass = "#{serv.class.to_s.top_level_class.underscore.downcase}#{extra_name}"
55
+ lowercase_class_name = subclass.to_s.underscore.downcase || subclass.downcase
56
+
57
+ # (services[lowercase_class_name.to_sym] ||= []) << serv if serv && !serv.empty?
58
+ ordered_resources << serv
59
+ # services.merge!({lowercase_class_name.to_sym => serv})
60
+ end
61
+ # Container for the services
62
+
63
+ def resources
64
+ @resources ||= OrderedHash.new
65
+ end
66
+
67
+ # Add resource
68
+ # When we are looking to add a resource, we want to make sure the
69
+ # resources isn't already added. This way we prevent duplicates
70
+ # as puppet can be finicky about duplicate resource definitions.
71
+ # We'll look for the resource in either a local or global store
72
+ # If the resource appears in either, return that resource, we'll just append
73
+ # to the resource config, otherwise instantiate a new resource of the type
74
+ # and store it into the global and local resource stores
75
+ #
76
+ # A word about stores, the global store stores the entire list of stored
77
+ # resources. The local resource store is available on all clouds and plugins
78
+ # which stores the instance variable's local resources.
79
+ def add_resource(ty, opts={}, extra_opts={}, &block)
80
+ temp_name = get_name_from_options_and_extra_options(opts, extra_opts)
81
+
82
+ if res = get_resource(ty, temp_name, opts)
83
+ res
84
+ else
85
+ opts = (opts.is_a?(Hash) ? extra_opts.merge(opts) : extra_opts).merge(:name => temp_name)
86
+
87
+ # opts.merge!(:name => temp_name) unless opts.has_key?(:name)
88
+ res = if PoolParty::Resources::Resource.available_resources.include?(ty.to_s.camelize)
89
+ "PoolParty::Resources::#{ty.to_s.camelize}".camelize.constantize.new(opts, &block)
90
+ else
91
+ "#{ty.to_s.camelize}".camelize.constantize.new(opts.merge(:name), &block)
92
+ end
93
+ res.after_create
94
+ store_in_local_resources(ty, res)
95
+ ordered_resources << res
96
+ res
97
+ end
98
+ end
99
+ def store_in_local_resources(ty, obj)
100
+ resource(ty) << obj
101
+ end
102
+ def in_local_resources?(ty, k)
103
+ !resource(ty).select {|r| r.name == k }.empty? rescue false
104
+ end
105
+ def get_local_resource(ty, k)
106
+ resource(ty).select {|r| r.name == k }.first
107
+ end
108
+
109
+ def get_resource(ty, n, opts={}, &block)
110
+ if in_local_resources?(ty, n)
111
+ get_local_resource(ty, n)
112
+ elsif parent && parent != self
113
+ parent.get_resource(ty, n)
114
+ else
115
+ nil
116
+ end
117
+ end
118
+
119
+ # Store the call and use of plugins into an array
120
+ def plugin_store
121
+ @plugin_store ||= []
122
+ end
123
+
124
+ def resource(type=:file)
125
+ resources[type.to_sym] ||= []
126
+ end
127
+
128
+ def ordered_resources
129
+ @ordered_resources ||= []
130
+ end
131
+
132
+ def is_plugin?
133
+ false
134
+ end
135
+
136
+ def is_a_resource?
137
+ false
138
+ end
139
+
140
+ def method_missing(m,*a,&block)
141
+ if respond_to?(:this_context) && this_context != self && this_context.respond_to?(m)# && !self.is_a?(PoolParty::Resources::Resource)
142
+ this_context.send m, *a, &block
143
+ else
144
+ # if dsl_options.has_key?(m)
145
+ # dsl_options[m]
146
+ # elsif parent && parent.respond_to?(:dsl_options) && parent.dsl_options.has_key?(m)
147
+ # parent.dsl_options[m]
148
+ # elsif self.class.default_options.has_key?(m)
149
+ # self.class.default_options[m]
150
+ # elsif parent && parent.respond_to?(:dsl_options) && parent.default_options.has_key?(m)
151
+ # parent.default_options[m]
152
+ # else
153
+ super
154
+ # end
155
+ end
156
+ end
157
+
158
+ # Adds two methods to the module
159
+ # Adds the method type:
160
+ # has_
161
+ # and
162
+ # does_not_have_
163
+ # for the type passed
164
+ # for instance
165
+ # add_has_and_does_not_have_methods_for(:file)
166
+ # gives you the methods has_file and does_not_have_file
167
+ # TODO: Refactor nicely to include other types that don't accept ensure
168
+ def self.add_has_and_does_not_have_methods_for(typ=:file)
169
+ method_name = "__#{typ}"
170
+ PoolParty::PoolPartyBaseClass.module_eval <<-EOE
171
+ def has_#{typ}(opts={}, extra={}, &block)
172
+ #{method_name}({:ensures => :present}.merge(handle_option_values(opts).merge(extra)), &block)
173
+ end
174
+ def does_not_have_#{typ}(opts={}, extra={}, &block)
175
+ #{method_name}({:ensures => :absent}.merge(handle_option_values(opts).merge(extra)), &block)
176
+ end
177
+ EOE
178
+ end
179
+
180
+ def handle_option_values(o)
181
+ case o.class.to_s
182
+ when "String"
183
+ {:name => o}
184
+ else
185
+ o
186
+ end
187
+ end
188
+
189
+ end
190
+ end