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
@@ -1,343 +0,0 @@
1
- =begin rdoc
2
- This module is included by the remote module and defines the remoting methods
3
- that the clouds can use to rsync or run remote commands
4
- =end
5
- module PoolParty
6
- module Remote
7
- module Remoter
8
- def rsync_storage_files_to_command(remote_instance)
9
- #TODO: rsync_to_command("#{Base.storage_directory}/", Base.remote_storage_path, remote_storage_path) if remote_instance
10
- "#{rsync_command} #{Base.storage_directory}/ #{remote_instance.ip}:#{Base.remote_storage_path}" if remote_instance
11
- end
12
- # rsync a file to a node. By default to the master node.
13
- def rsync_to_command(source, target=source, remote_instance=master)
14
- "#{rsync_command} #{source} #{remote_instance.ip}:#{target}"
15
- end
16
- def run_command_on_command(cmd="ls -l", remote_instance=nil)
17
- vputs "Running #{cmd} on #{remote_instance.name == %x[hostname].chomp ? "self (master)" : "#{remote_instance.name}"}"
18
- remote_instance.name == %x[hostname].chomp ? %x[#{cmd}] : "#{ssh_command(remote_instance)} '#{cmd}'"
19
- end
20
- def ssh_command(remote_instance)
21
- "#{ssh_string} #{remote_instance.ip}"
22
- end
23
- # Generic commandable strings
24
- def ssh_string
25
- (["ssh"] << ssh_array).join(" ")
26
- end
27
- # Array of ssh options
28
- # Includes StrictHostKeyChecking to no
29
- # Ssh with the user in Base
30
- # And including the keypair_path
31
- # "-l '#{Base.user}'",
32
- def ssh_array
33
- ["-o StrictHostKeyChecking=no", "-l #{Base.user}", '-i "'+full_keypair_path+'"']
34
- end
35
- def rsync_command
36
- "rsync -azP --exclude cache -e '#{ssh_string} -l #{Base.user}'"
37
- end
38
- def remote_ssh_array
39
- ["-o StrictHostKeyChecking=no", "-l '#{Base.user}'", '-i "'+remote_keypair_path+'"']
40
- end
41
- def remote_ssh_string
42
- (["ssh"] << remote_ssh_array).join(" ")
43
- end
44
- def remote_rsync_command
45
- "rsync -azP --exclude cache -e '#{remote_ssh_string}'"
46
- end
47
-
48
-
49
- # def scp_command(source, dest=target, remote_instance=master)
50
- # #TODO: check if source is Directory and add -r if it is
51
- # "scp #{source} #{remote_instance.ip}:#{dest} #{ssh_array.join(' ')}"
52
- # end
53
-
54
- # Get the names of the nodes. Mainly used for puppet templating
55
- def list_of_node_names(options={})
56
- list_of_running_instances.collect {|ri| ri.name }
57
- end
58
- # An array of node ips. Mainly used for puppet templating
59
- def list_of_node_ips(options={})
60
- list_of_running_instances.collect {|ri| ri.ip }
61
- end
62
-
63
- # Get the instance first instance file that exists on the system from the expected places
64
- # denoted in the local_instances_list_file_locations
65
- def get_working_listing_file
66
- local_instances_list_file_locations.reject {|f| f unless File.file?(f) }.first
67
- end
68
- # Expected places for the instances.list to be located at on the machine
69
- def local_instances_list_file_locations
70
- [
71
- "#{Base.storage_directory}/#{name}-instances.list",
72
- "#{Base.base_config_directory}/#{name}-instances.list",
73
- "~/.#{name}-instances.list",
74
- "~/#{name}-instances.list",
75
- "#{name}-instances.list"
76
- ]
77
- end
78
-
79
- # List calculation methods
80
- #
81
- # Are the minimum number of instances running?
82
- def minimum_number_of_instances_are_running?
83
- list_of_running_instances.size >= minimum_instances.to_i
84
- end
85
- # Are the minimum number of instances NOT running?
86
- def minimum_number_of_instances_are_not_running?
87
- !(minimum_number_of_instances_are_running?)
88
- end
89
- # Can we shutdown an instance?
90
- def can_shutdown_an_instance?
91
- list_of_running_instances.size > minimum_instances.to_i
92
- end
93
- # Are too few instances running?
94
- def are_too_few_instances_running?
95
- list_of_running_instances.size < minimum_instances.to_i
96
- end
97
- # Are there more instances than allowed?
98
- def are_too_many_instances_running?
99
- list_of_running_instances.size > maximum_instances.to_i
100
- end
101
- # Request to launch a number of instances
102
- def request_launch_new_instances(num=1)
103
- out = []
104
- num.times {out << launch_new_instance!}
105
- out
106
- end
107
- def request_launch_master_instance
108
- @inst = launch_new_instance!
109
- wait "5.seconds"
110
- when_no_pending_instances do
111
- vputs "Master has launched"
112
- reset!
113
- after_launch_master(@inst)
114
- end
115
- end
116
- def after_launch_master(inst=nil)
117
- vputs "After launch master in remoter"
118
- end
119
- # Let's terminate an instance that is not the master instance
120
- def request_termination_of_non_master_instance
121
- inst = nonmaster_nonterminated_instances.last
122
- terminate_instance!(inst.instance_id) if inst
123
- end
124
- # Can we start a new instance?
125
- def can_start_a_new_instance?
126
- maximum_number_of_instances_are_not_running? && list_of_pending_instances.size == 0
127
- end
128
- # Are the maximum number of instances not running?
129
- def maximum_number_of_instances_are_not_running?
130
- list_of_running_instances.size < maximum_instances.to_i
131
- end
132
- # Are the maximum number of instances running?
133
- def maximum_number_of_instances_are_running?
134
- list_of_running_instances.size >= maximum_instances.to_i
135
- end
136
- # Launch new instance while waiting for the number of pending instances
137
- # to be zero before actually launching. This ensures that we only
138
- # launch one instance at a time
139
- def request_launch_one_instance_at_a_time
140
- when_no_pending_instances { launch_new_instance! }
141
- end
142
- # A convenience method for waiting until there are no more
143
- # pending instances and then running the block
144
- def when_no_pending_instances(&block)
145
- reset!
146
- if list_of_pending_instances.size == 0
147
- block.call if block
148
- else
149
- vprint "."
150
- wait "5.seconds"
151
- when_no_pending_instances(&block)
152
- end
153
- end
154
- # A convenience method for waiting until all the instances have an ip
155
- # assigned to them. This is useful when shifting the ip addresses
156
- # around on the instances
157
- def when_all_assigned_ips(&block)
158
- reset!
159
- if list_of_nonterminated_instances.select {|a| a.ip == "not.assigned" }.empty?
160
- block.call if block
161
- else
162
- vprint "."
163
- wait "5.seconds"
164
- when_all_assigned_ips(&block)
165
- end
166
- end
167
-
168
- # This will launch the minimum_instances if the minimum number of instances are not running
169
- # If the minimum number of instances are not running and if we can start a new instance
170
- def launch_minimum_number_of_instances
171
- if can_start_a_new_instance? && !minimum_number_of_instances_are_running?
172
- list_of_pending_instances.size == 0 ? request_launch_one_instance_at_a_time : wait("5.seconds")
173
- reset!
174
- launch_minimum_number_of_instances
175
- provision_slaves_from_n(minimum_instances.to_i)
176
- after_launched
177
- end
178
- end
179
-
180
- def provision_slaves_from_n(num=1)
181
- vputs "In provision_slaves_from_n: #{num}"
182
- reset!
183
- when_no_pending_instances do
184
- vputs "Waiting for 10 seconds"
185
- wait "10.seconds" # Give some time for ssh to startup
186
- @num_instances = list_of_running_instances.size
187
- vputs "(@num_instances - (num))..(@num_instances): #{(@num_instances - (num))..(@num_instances)}"
188
- last_instances = nonmaster_nonterminated_instances[(@num_instances - (num))..(@num_instances)]
189
- last_instances.each do |inst|
190
- vputs "Provision slave: #{inst}"
191
- # hide_output {PoolParty::Provisioner.process_clean_reconfigure_for!(inst, self)}
192
- # PoolParty::Provisioner.provision_slave(inst, self, false) unless inst.master? rescue vputs "Error"
193
- verbose ? provisioner_for(inst).install(testing) : hide_output { provisioner_for(inst).install(testing) }
194
- # hide_output {PoolParty::Provisioner.process_clean_reconfigure_for!(inst, self)}
195
- # cmd = ". /etc/profile && cloud-provision -i #{inst.name.gsub(/node/, '')} &"
196
- # vputs "Provision slave with command #{cmd}"
197
- end
198
- # PoolParty::Provisioner.reconfigure_master(self)
199
- end
200
- end
201
- # Launch the master and let the master handle the starting of the cloud
202
- # We should only launch an instance if there are no pending instances, in the case
203
- # that the master has launched, but is still pending
204
- # and if the master is not running AND we can start a new instance
205
- # Then wait for the master to launch
206
- def launch_and_configure_master!(testing=false)
207
- vputs "Requesting to launch new instance"
208
- log.debug "Launching master"
209
- request_launch_master_instance if list_of_pending_instances.size.zero? && can_start_a_new_instance? && !is_master_running? && !testing
210
- reset!
211
- unless testing
212
- vputs ""
213
- vputs "Waiting for there to be no pending instances..."
214
- when_no_pending_instances do
215
- when_all_assigned_ips {wait "20.seconds"}
216
- vputs ""
217
- vputs "Provisioning master..."
218
- # cleanup_storage_directory
219
- @provisioner = PoolParty::Provisioner::Capistrano.new(master, self, :ubuntu)
220
- verbose ? @provisioner.install(testing) : hide_output { @provisioner.install(testing) }
221
-
222
- after_launched
223
- end
224
- end
225
- end
226
- def list_of_nodes_exceeding_minimum_runtime
227
- list_of_running_instances.reject{|i| i.elapsed_runtime < minimum_runtime}
228
- end
229
- def are_any_nodes_exceeding_minimum_runtime?
230
- !list_of_nodes_exceeding_minimum_runtime.blank?
231
- end
232
- def is_master_running?
233
- !list_of_running_instances.select {|a| a.name == "master"}.first.nil?
234
- end
235
- # Stub method for the time being to handle expansion of the cloud
236
- def should_expand_cloud?(force=false)
237
- (are_too_few_instances_running? || are_expansion_rules_valid? ) || force || false
238
- end
239
- def are_expansion_rules_valid?
240
- valid_rules?(:expand_when)
241
- end
242
- # Stub method for the time being to handle the contraction of the cloud
243
- def should_contract_cloud?(force=false)
244
- return true if force
245
- ((are_any_nodes_exceeding_minimum_runtime? and are_too_many_instances_running?) || are_contraction_rules_valid?) || false
246
- end
247
- def are_contraction_rules_valid?
248
- valid_rules?(:contract_when)
249
- end
250
- # Expand the cloud
251
- # If we can start a new instance and the load requires us to expand
252
- # the cloud, then we should request_launch_new_instances
253
- # Wait for the instance to boot up and when it does come back
254
- # online, then provision it as a slave, this way, it is ready for action from the
255
- # get go
256
- def expand_cloud_if_necessary(force=false)
257
- if can_start_a_new_instance? && should_expand_cloud?(force)
258
- vputs "Expanding the cloud based on load"
259
- @num = 1
260
- @num.times do |i|
261
- list_of_pending_instances.size == 0 ? request_launch_one_instance_at_a_time : wait("5.seconds")
262
- reset!
263
- vputs "request_launch_new_instances: #{@num}"
264
- provision_slaves_from_n(@num)
265
- after_launched
266
- end
267
- end
268
- end
269
- # Contract the cloud
270
- # If we can shutdown an instnace and the load allows us to contract
271
- # the cloud, then we should request_termination_of_non_master_instance
272
- def contract_cloud_if_necessary(force=false)
273
- if can_shutdown_an_instance? && should_contract_cloud?(force)
274
- vputs "Shrinking the cloud by 1"
275
- before_shutdown
276
- request_termination_of_non_master_instance
277
- end
278
- end
279
-
280
- # Callbacks
281
-
282
- # After launch callback
283
- # This is called after a new instance is launched
284
- def after_launched(force=false)
285
- end
286
-
287
- # Before shutdown callback
288
- # This is called before the cloud is contracted
289
- def before_shutdown
290
- end
291
-
292
- # Rsync a file or directory to a node. Rsync to master by default
293
- def rsync_to(source, target=source, num=0)
294
- str = "#{rsync_to_command(source, target, get_instance_by_number( num ))}"
295
- vputs "Running: #{str}"
296
- verbose ? Kernel.system(str) : hide_output {Kernel.system str}
297
- end
298
-
299
- # Rsync command to the instance
300
- def rsync_storage_files_to(instance=nil)
301
- hide_output {Kernel.system "#{rsync_storage_files_to_command(instance)}" if instance}
302
- end
303
- # Take the rsync command and execute it on the system
304
- # if there is an instance given
305
- def run_command_on(cmd, instance=nil)
306
- Kernel.system "#{run_command_on_command(cmd, instance)}" if instance
307
- end
308
-
309
- # Ssh into the instance given
310
- def ssh_into(instance=nil)
311
- cmd = "#{ssh_command(instance)}"
312
- vputs "Running #{cmd}"
313
- Kernel.system cmd if instance
314
- end
315
- # Find the instance by the number given
316
- # and then ssh into the instance
317
- def ssh_into_instance_number(num=0)
318
- ssh_into( get_instance_by_number( num || 0 ) )
319
- end
320
-
321
- # Run command on the instance by the number
322
- def run_command_on_instance_number(cmd="ls -l", num=0)
323
- run_command_on(cmd, get_instance_by_number( num || 0 ) )
324
- end
325
-
326
- # Prepare reconfiguration on the master
327
- # TODO: Curious about the puppet/ssl problems...
328
- # puppetd --test --no-daemonize 2>&1 &
329
- # rm -rf /etc/puppet/ssl/*;
330
- def prepare_reconfiguration
331
- unless @prepared
332
- # cmd = "/etc/init.d/puppetmaster restart"
333
- # run_command_on(cmd, master)
334
- @prepared = true
335
- end
336
- end
337
-
338
- def self.included(receiver)
339
- receiver.extend self
340
- end
341
- end
342
- end
343
- end
@@ -1,71 +0,0 @@
1
- =begin rdoc
2
- DeployDirectory
3
-
4
- Deploy directory will tar.gz a local directory and sync it up to
5
- the master instance of the cloud. This enables you to send a directory
6
- up to the cloud and let the master host it for the remote slaves
7
- =end
8
- module PoolParty
9
- class Deploydirectory
10
-
11
- virtual_resource(:deploydirectory) do
12
-
13
- def loaded(opts={}, parent=self)
14
- package_directory
15
- unpack_directory
16
- sync_directories
17
- end
18
-
19
- def package_directory
20
- path = ::File.join( Base.tmp_path, "#{::File.basename(from_dir)}.tar.gz" )
21
- archive_name = "#{::File.basename(name).dir_safe}.tar.gz"
22
- cmd = "cd #{::File.expand_path(from_dir)} && tar -czf #{archive_name} . && mv #{archive_name} #{Base.tmp_path}"
23
- Kernel.system(cmd) unless testing
24
- end
25
-
26
- def unpack_directory
27
- execute_on_master do
28
- has_exec({:name => "deploy-directory-#{name}", :requires => get_directory("#{cwd}"), :cwd => cwd}) do
29
- # && rm #{Base.tmp_path}/#{parent.name.dir_safe}.tar.gz
30
- archive_name = "#{::File.basename(name).dir_safe}.tar.gz"
31
- command "cd #{cwd}; tar -zxf #{Base.remote_storage_path}/#{archive_name}; rm #{Base.remote_storage_path}/#{archive_name}; chown #{owner} #{::File.basename(name).dir_safe}"
32
- onlyif "test -f #{Base.remote_storage_path}/#{archive_name}"
33
- end
34
- end
35
- end
36
-
37
- def sync_directories
38
- execute_on_node do
39
- has_rsyncmirror(:dir => cwd, :name => "deploydirectory-#{name}")
40
- end
41
- end
42
-
43
- def from(dir)
44
- from_dir (dir.include?(" ") ? dir.gsub(/[ ]/, '') : dir)
45
- end
46
-
47
- def to(dir)
48
- cwd dir
49
- name dir
50
- has_directory(:name => "#{dir}",
51
- :requires => get_directory("#{::File.dirname(dir)}"),
52
- :owner => owner,
53
- :mode => mode)
54
- end
55
-
56
- # Since git is not a native type, we have to say which core resource
57
- # it is using to be able to require it
58
- def class_type_name
59
- "exec"
60
- end
61
-
62
- # Because we are requiring an exec, instead of a built-in package of the git, we have to overload
63
- # the to_s method and prepend it with the same name as above
64
- def key
65
- "deploy-directory-#{name}"
66
- end
67
-
68
- end
69
-
70
- end
71
- end
@@ -1,77 +0,0 @@
1
- module PoolParty
2
- class Line
3
-
4
- define_resource(:line_in_file) do
5
- # Should refactor
6
- def has_line_in_file(line="line_in_file", file="file", opts={})
7
- call_custom_function <<-EOE
8
- line {
9
- '#{file}_line' :
10
- file => '#{file}',
11
- line => '#{line}',
12
- #{opts.flush_out("\t", ",")}
13
- ensure => 'present'
14
- }
15
- EOE
16
- end
17
-
18
- def append_if_no_such_line(line="line", file="", refreshonly='false')
19
- call_custom_function <<-EOE
20
- append_if_no_such_line {
21
- '#{file}' :
22
- file => '#{file}',
23
- line => '#{line}',
24
- refreshonly => #{refreshonly}
25
- }
26
- EOE
27
- end
28
-
29
- def delete_lines_from(file="", pattern=//, opts={})
30
- call_custom_function <<-EOE
31
- delete_lines {
32
- '#{file}' :
33
- file => '#{file}',
34
- #{opts.flush_out("\t", ",")}
35
- pattern => '#{pattern}'
36
- }
37
- EOE
38
- end
39
-
40
-
41
- custom_function <<-EOF
42
- define line($file, $line, $ensure = 'present', $notify=[]) {
43
- case $ensure {
44
- default: { err ( "unknown ensure value ${ensure}" ) }
45
- present: {
46
- exec {
47
- "/usr/bin/env echo '${line}' >> '${file}'": unless => "/usr/bin/env grep -qFx '${line}' '${file}'",
48
- notify => $notify
49
- }
50
- }
51
- absent: {
52
- exec {
53
- "/usr/bin/env sed -i '' -e '/^${line}\$/d' '${file}'": onlyif => "/usr/bin/env grep -qFx '${line}' '${file}'",
54
- notify => $notify
55
- }
56
- }
57
- }
58
- }
59
- define append_if_no_such_line($file, $line, $refreshonly = 'false') {
60
- exec { "/bin/echo '$line' >> '$file'":
61
- unless => "/bin/grep -Fxqe '$line' '$file'",
62
- path => "/bin",
63
- refreshonly => $refreshonly,
64
- }
65
- }
66
-
67
- define delete_lines($file, $pattern) {
68
- exec { "sed -i -r -e '/$pattern/d' $file":
69
- path => "/bin",
70
- onlyif => "/bin/grep -E '$pattern' '$file'",
71
- }
72
- }
73
- EOF
74
- end
75
-
76
- end
77
- end
@@ -1,26 +0,0 @@
1
- module PoolParty
2
- class Rsyncmirror
3
-
4
- virtual_resource(:rsyncmirror) do
5
-
6
- def loaded(opts={}, parent=self)
7
- @parent = parent
8
- has_exec(opts.merge({:command => "#{cloud.remote_rsync_command} --no-implied-dirs --delete-excluded #{Base.user}@master:#{dir}/ #{dir}/".safe_quote, :name => "rsync-#{name}"}))
9
- end
10
-
11
- # Since git is not a native type, we have to say which core resource
12
- # it is using to be able to require it
13
- def class_type_name
14
- "exec"
15
- end
16
-
17
- # Because we are requiring an exec, instead of a built-in package of the git, we have to overload
18
- # the to_s method and prepend it with the same name as above
19
- def key
20
- "rsync-#{name}"
21
- end
22
-
23
- end
24
-
25
- end
26
- end
@@ -1,45 +0,0 @@
1
- require File.dirname(__FILE__) + "/resource"
2
-
3
- module PoolParty
4
- def available_custom_resources
5
- $available_custom_resources ||= []
6
- end
7
-
8
- module Resources
9
-
10
- def call_custom_function(str, opts={}, parent=self, &block)
11
- add_resource(:call_function, opts.merge({:str => str, :name => str.keyerize}), parent, &block)
12
- end
13
-
14
- # Resources for function call
15
- class CallFunction < Resource
16
- def to_string(pre="")
17
- returning Array.new do |arr|
18
- arr << "#{pre}#{str}"
19
- end.join("\n")
20
- end
21
- end
22
-
23
- class CustomResource < Resource
24
- def self.inherited(subclass)
25
- PoolParty::Resources.available_custom_resources << subclass
26
- super
27
- end
28
-
29
- def to_string(pre="")
30
- returning Array.new do |output|
31
- output << "#{pre} # Custom Functions\n"
32
- output << self.class.custom_functions_to_string(pre)
33
- end.join("\n")
34
- end
35
- end
36
-
37
- # Stub methods
38
- # TODO: Find a better solution
39
- def custom_function(*args, &block)
40
- end
41
- def self.custom_function(*args, &block)
42
- end
43
-
44
- end
45
- end
@@ -1,105 +0,0 @@
1
- module PoolParty
2
- module Resources
3
-
4
- def global_classpackages
5
- @global_classpackage_store ||= []
6
- end
7
-
8
- def in_global_classpackages?(name)
9
- !get_from_global_classpackage_store(name).nil?
10
- end
11
-
12
- def get_from_global_classpackage_store(key)
13
- global_classpackages.select {|a| a if key == a.name }.first
14
- end
15
-
16
- def store_into_global_classpackage_store(r)
17
- arr = r.is_a?(Array) ? r : [r]
18
- arr.each do |a|
19
- global_classpackages << a unless in_global_classpackages?(a.name)
20
- end
21
- end
22
-
23
- # Wrap all the resources into a class package from
24
- def classpackage_with_self(parent=self, &block)
25
- name = (parent && parent.options.name || Classpackage.name(parent).to_s).sanitize
26
- if in_global_classpackages?(name)
27
- returning get_from_global_classpackage_store(name) do |cls|
28
- cls.run_in_context(parent, &block) if block
29
- end
30
- else
31
- @@parent_resources = parent.resources
32
- @@cp = parent.add_resource(:classpackage, parent.options.merge(:name => name), parent, &block)
33
- @@cp = @@cp.is_a?(Array) ? @@cp[-1] : @@cp
34
-
35
- @@cp.run_in_context(parent) do
36
- @@parent_resources.each do |ty, res|
37
- resources[ty] = res unless ty == :classpackage
38
- end
39
- end
40
- parent.instance_eval do
41
- @resources = {:classpackage => [@@cp]}
42
- end
43
- @@cp.instance_eval &block if block
44
-
45
- store_into_global_classpackage_store(@@cp)
46
- end
47
- return @@cp
48
- @@parent_resources = @@cp = nil
49
- end
50
-
51
- class Classpackage < Resource
52
-
53
- default_options({
54
- :name => "custom"
55
- })
56
-
57
- def initialize(opts={}, parent=self, &block)
58
- # Take the options of the parents
59
- # set_parent(parent, false) if parent
60
- set_vars_from_options(opts) unless opts.empty?
61
- # self.instance_eval &block if block
62
- run_setup(parent, &block) if block
63
- # self.run_in_context &block if block
64
- # store_block(&block)
65
- loaded
66
- end
67
-
68
- def to_string(pre="")
69
- if resources.size > 0 && not_printed?
70
- returning Array.new do |output|
71
- output << "#{pre}class #{name.sanitize.downcase} {"
72
- output << "#{pre}#{resources_string_from_resources(resources)}"
73
- output << "#{pre}}"
74
- output << include_string
75
- @not_printed = false
76
- end.join("\n")
77
- else
78
- ""
79
- end
80
- end
81
-
82
- def not_printed?
83
- true
84
- end
85
-
86
- def include_string
87
- "include #{name.sanitize.downcase}"
88
- end
89
-
90
- def virtual_resource?
91
- true
92
- end
93
-
94
- def printable?
95
- false
96
- end
97
-
98
- def self.name(parent=self)
99
- "custom_#{parent ? parent.object_id.to_s : "parent"}"
100
- end
101
-
102
- end
103
-
104
- end
105
- end