fairchild-poolparty 1.1.5 → 1.2.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (385) hide show
  1. data/History.txt +3 -0
  2. data/README.txt +13 -9
  3. data/Rakefile +0 -1
  4. data/VERSION.yml +2 -2
  5. data/bin/cloud +43 -46
  6. data/bin/cloud-bootstrap +33 -23
  7. data/bin/cloud-configure +33 -34
  8. data/bin/cloud-console +31 -9
  9. data/bin/cloud-contract +27 -11
  10. data/bin/cloud-expand +32 -19
  11. data/bin/cloud-list +43 -15
  12. data/bin/cloud-osxcopy +22 -12
  13. data/bin/cloud-provision +39 -24
  14. data/bin/cloud-run +37 -0
  15. data/bin/cloud-setup-dev +31 -20
  16. data/bin/cloud-show +40 -21
  17. data/bin/cloud-ssh +24 -15
  18. data/bin/cloud-start +33 -19
  19. data/bin/cloud-terminate +34 -15
  20. data/bin/cloud-verify +41 -0
  21. data/bin/install-poolparty +22 -0
  22. data/bin/server-cloud-elections +17 -23
  23. data/bin/server-list-active +23 -22
  24. data/bin/server-manage-election +14 -23
  25. data/bin/server-show-stats +1 -1
  26. data/config/jeweler.rb +6 -6
  27. data/examples/basic.rb +13 -14
  28. data/examples/fairchild.rb +25 -20
  29. data/examples/maize.rb +37 -0
  30. data/examples/metavirt_cloud.rb +33 -0
  31. data/examples/simple.rb +13 -0
  32. data/examples/vmrun_cloud.rb +17 -0
  33. data/lib/poolparty/{aska/aska.rb → aska.rb} +3 -0
  34. data/lib/poolparty/core/array.rb +13 -1
  35. data/lib/poolparty/core/exception.rb +1 -1
  36. data/lib/poolparty/core/hash.rb +63 -2
  37. data/lib/poolparty/core/integer.rb +11 -0
  38. data/lib/poolparty/core/object.rb +41 -19
  39. data/lib/poolparty/core/proc.rb +0 -7
  40. data/lib/poolparty/core/string.rb +35 -2
  41. data/lib/poolparty/core/symbol.rb +10 -0
  42. data/lib/poolparty/core/time.rb +6 -0
  43. data/lib/poolparty/dependency_resolver/chef_resolver.rb +40 -41
  44. data/lib/poolparty/dependency_resolver/dependency_resolver.rb +1 -1
  45. data/lib/poolparty/dependency_resolver/dependency_resolver_cloud_extensions.rb +6 -6
  46. data/lib/poolparty/dependency_resolver/puppet.rb +0 -1
  47. data/lib/poolparty/dependency_resolver/puppet_resolver.rb +14 -48
  48. data/lib/poolparty/exceptions/MasterException.rb +2 -2
  49. data/lib/poolparty/extra/duration.rb +96 -0
  50. data/lib/poolparty/helpers/binary.rb +1 -1
  51. data/lib/poolparty/helpers/console.rb +0 -5
  52. data/lib/poolparty/helpers/optioner.rb +18 -13
  53. data/lib/poolparty/installers/base_installer.rb +113 -0
  54. data/lib/poolparty/installers/ec2.rb +141 -0
  55. data/lib/poolparty/installers/vmrun.rb +144 -0
  56. data/lib/poolparty/lite.rb +5 -2
  57. data/lib/poolparty/modules/callbacks.rb +15 -2
  58. data/lib/poolparty/modules/cloud_dsl.rb +10 -8
  59. data/lib/poolparty/modules/cloud_resourcer.rb +39 -59
  60. data/lib/poolparty/modules/daemonizable.rb +4 -5
  61. data/lib/poolparty/modules/definable_resource.rb +6 -7
  62. data/lib/poolparty/modules/file_writer.rb +2 -2
  63. data/lib/poolparty/modules/output.rb +2 -2
  64. data/lib/poolparty/modules/pinger.rb +9 -2
  65. data/lib/poolparty/modules/pretty_printer.rb +1 -1
  66. data/lib/poolparty/modules/resourcing_dsl.rb +1 -29
  67. data/lib/poolparty/modules/searchable_paths.rb +100 -0
  68. data/lib/poolparty/modules/user_helpers.rb +1 -1
  69. data/lib/poolparty/monitors/base_monitor.rb +65 -0
  70. data/lib/poolparty/monitors/monitor_daemon.rb +168 -0
  71. data/lib/poolparty/monitors/monitor_rack.rb +29 -15
  72. data/lib/poolparty/monitors/monitors/{time_monitor.rb → clock_monitor.rb} +7 -2
  73. data/lib/poolparty/monitors/monitors/cloud_monitor.rb +36 -0
  74. data/lib/poolparty/monitors/monitors/elections_monitor.rb +76 -0
  75. data/lib/poolparty/monitors/monitors/neighborhood_monitor.rb +15 -12
  76. data/lib/poolparty/monitors/monitors/stats_monitor.rb +68 -49
  77. data/lib/poolparty/net/init.rb +12 -7
  78. data/lib/poolparty/net/remote_instance.rb +48 -64
  79. data/lib/poolparty/net/remoter/cloud_control.rb +0 -177
  80. data/lib/poolparty/net/remoter/connections.rb +19 -14
  81. data/lib/poolparty/net/remoter/interactive.rb +30 -24
  82. data/lib/poolparty/net/remoter_base.rb +140 -48
  83. data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +119 -71
  84. data/lib/poolparty/net/remoter_bases/ec2/ec2_remote_instance.rb +42 -31
  85. data/lib/poolparty/net/remoter_bases/ec2/ec2_response_object.rb +75 -10
  86. data/lib/poolparty/net/remoter_bases/libvirt/libvirt.rb +73 -0
  87. data/lib/poolparty/net/remoter_bases/libvirt/libvirt_instance.rb +64 -0
  88. data/lib/poolparty/net/remoter_bases/metavirt/metavirt.rb +110 -0
  89. data/lib/poolparty/net/remoter_bases/metavirt/metavirt_instance.rb +37 -0
  90. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vm_disk.rb +1 -1
  91. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx.rb +1 -1
  92. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx_file.rb +117 -117
  93. data/lib/poolparty/net/remoter_bases/vmrun/vmrun.rb +59 -43
  94. data/lib/poolparty/net/remoter_bases/vmrun/vmrun_instance.rb +37 -21
  95. data/lib/poolparty/plugins/apache2/apache.rb +266 -0
  96. data/lib/poolparty/plugins/apache2/passenger_site.rb +86 -0
  97. data/lib/poolparty/plugins/apache2/php5.rb +40 -0
  98. data/lib/poolparty/plugins/apache2/virtual_host.rb +53 -0
  99. data/lib/poolparty/plugins/authorized_key.rb +29 -0
  100. data/lib/poolparty/plugins/bind.rb +5 -6
  101. data/lib/poolparty/plugins/{chef.rb → chef/chef.rb} +32 -44
  102. data/lib/poolparty/plugins/chef/chef_deploy.rb +55 -0
  103. data/lib/poolparty/plugins/chef/chef_deploy_definition.rb +32 -0
  104. data/lib/poolparty/plugins/chef/chef_library.rb +7 -0
  105. data/lib/poolparty/plugins/chef/chef_recipe.rb +7 -0
  106. data/lib/poolparty/plugins/chef/include_chef_recipe.rb +14 -0
  107. data/lib/poolparty/plugins/deploy_directory.rb +41 -26
  108. data/lib/poolparty/plugins/gem_package.rb +42 -14
  109. data/lib/poolparty/plugins/git.rb +62 -33
  110. data/lib/poolparty/{base_packages → plugins}/haproxy.rb +21 -20
  111. data/lib/poolparty/plugins/heartbeat.rb +16 -0
  112. data/lib/poolparty/plugins/host.rb +39 -0
  113. data/lib/poolparty/plugins/line_in_file.rb +24 -2
  114. data/lib/poolparty/plugins/plugin_template.rb +13 -0
  115. data/lib/poolparty/{base_packages/poolparty.rb → plugins/poolparty_base_packages.rb} +4 -6
  116. data/lib/poolparty/plugins/rails_deploy.rb +128 -0
  117. data/lib/poolparty/{base_packages → plugins}/ruby.rb +3 -3
  118. data/lib/poolparty/plugins/runit.rb +17 -92
  119. data/lib/poolparty/plugins/sshkey.rb +50 -0
  120. data/lib/poolparty/plugins/svn.rb +10 -8
  121. data/lib/poolparty/poolparty/cloud.rb +224 -61
  122. data/lib/poolparty/poolparty/default.rb +22 -15
  123. data/lib/poolparty/poolparty/key.rb +19 -28
  124. data/lib/poolparty/poolparty/neighborhoods.rb +16 -5
  125. data/lib/poolparty/poolparty/plugin.rb +49 -13
  126. data/lib/poolparty/poolparty/pool.rb +32 -9
  127. data/lib/poolparty/poolparty/poolparty_base_class.rb +65 -45
  128. data/lib/poolparty/poolparty/resource.rb +24 -49
  129. data/lib/poolparty/poolparty/service.rb +11 -9
  130. data/lib/poolparty/provision/boot_strapper.rb +48 -37
  131. data/lib/poolparty/provision/configurations/chef.rb +6 -5
  132. data/lib/poolparty/provision/dr_configure.rb +25 -19
  133. data/lib/poolparty/resources/cron.rb +37 -4
  134. data/lib/poolparty/resources/directory.rb +30 -0
  135. data/lib/poolparty/resources/exec.rb +31 -1
  136. data/lib/poolparty/resources/file.rb +54 -12
  137. data/lib/poolparty/resources/group.rb +21 -0
  138. data/lib/poolparty/resources/mount.rb +24 -4
  139. data/lib/poolparty/resources/package.rb +30 -6
  140. data/lib/poolparty/resources/remote_file.rb +33 -1
  141. data/lib/poolparty/resources/service.rb +22 -1
  142. data/lib/poolparty/resources/symlink.rb +37 -2
  143. data/lib/poolparty/resources/user.rb +25 -0
  144. data/lib/poolparty/resources/variable.rb +26 -1
  145. data/lib/poolparty/resources.rb +42 -0
  146. data/lib/poolparty/schema.rb +6 -8
  147. data/lib/poolparty/templates/apache2/apache2.conf +14 -0
  148. data/lib/poolparty/templates/apache2/base.conf.erb +168 -0
  149. data/lib/poolparty/templates/apache2/browser_fixes.conf.erb +26 -0
  150. data/lib/poolparty/templates/apache2/debian.conf.erb +675 -0
  151. data/lib/poolparty/templates/apache2/default-site.conf.erb +41 -0
  152. data/lib/poolparty/templates/apache2/directory_indexes.conf.erb +101 -0
  153. data/lib/poolparty/templates/apache2/logging-syslog.conf.erb +42 -0
  154. data/lib/poolparty/templates/apache2/mime-extras.conf.erb +211 -0
  155. data/lib/poolparty/templates/apache2/mime-minimal.conf.erb +15 -0
  156. data/lib/poolparty/templates/apache2/mpm-worker.conf.erb +20 -0
  157. data/lib/poolparty/templates/apache2/mpm-worker.erb +20 -0
  158. data/lib/poolparty/templates/apache2/passenger.conf.erb +20 -0
  159. data/lib/poolparty/templates/apache2/php.ini.erb +1253 -0
  160. data/lib/poolparty/templates/apache2/server-status.erb +19 -0
  161. data/lib/poolparty/templates/{gemrc → gemrc_template} +0 -0
  162. data/lib/poolparty/templates/haproxy.conf +2 -2
  163. data/lib/poolparty/templates/monitor.ru +13 -0
  164. data/lib/poolparty/templates/php.ini.erb +1253 -0
  165. data/lib/poolparty/verification/verifier_base.rb +10 -0
  166. data/lib/poolparty/verification/verifiers/http_match.rb +43 -0
  167. data/lib/poolparty/verification/verifiers/http_status.rb +59 -0
  168. data/lib/poolparty/verification/verifiers/ping.rb +18 -1
  169. data/lib/poolparty/verification/verify.rb +6 -0
  170. data/lib/poolparty.rb +14 -15
  171. data/lib/poolpartycl.rb +1 -1
  172. data/spec/bin/bin_spec_helper.rb +1 -0
  173. data/spec/bin/fixtures/bin_cloud_for_test.rb +0 -6
  174. data/spec/bin/server-list-active_spec.rb +4 -6
  175. data/spec/poolparty/core/object_spec.rb +1 -62
  176. data/spec/poolparty/core/ordered_hash_spec.rb +7 -7
  177. data/spec/poolparty/core/string_spec.rb +1 -1
  178. data/spec/poolparty/dependency_resolver/chef_resolver_spec.rb +0 -8
  179. data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +35 -32
  180. data/spec/poolparty/extra/deployments_spec.rb +68 -68
  181. data/spec/poolparty/fixtures/clouds.json +1 -1
  182. data/spec/poolparty/fixtures/fake_key.pub +1 -0
  183. data/spec/poolparty/helpers/optioner_spec.rb +4 -11
  184. data/spec/poolparty/modules/cloud_resourcer_spec.rb +1 -1
  185. data/spec/poolparty/modules/searchable_paths_spec.rb +83 -0
  186. data/spec/poolparty/net/remote_instance_spec.rb +1 -2
  187. data/spec/poolparty/net/remoter_base_spec.rb +7 -11
  188. data/spec/poolparty/net/remoter_bases/ec2_mocks_and_stubs.rb +9 -11
  189. data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +6 -56
  190. data/spec/poolparty/net/remoter_bases/ec2_spec.rb +10 -7
  191. data/spec/poolparty/net/remoter_spec.rb +2 -3
  192. data/spec/poolparty/plugins/authorized_key_spec.rb +23 -0
  193. data/spec/poolparty/plugins/deploydirectory_spec.rb +64 -51
  194. data/spec/poolparty/plugins/git_spec.rb +8 -10
  195. data/spec/poolparty/poolparty/cloud_spec.rb +61 -64
  196. data/spec/poolparty/poolparty/configurers/files/ruby_basic.rb +2 -4
  197. data/spec/poolparty/poolparty/configurers/files/ruby_plugins.rb +1 -1
  198. data/spec/poolparty/poolparty/configurers/ruby_spec.rb +1 -6
  199. data/spec/poolparty/poolparty/default_spec.rb +23 -22
  200. data/spec/poolparty/poolparty/example_spec.rb +47 -26
  201. data/spec/poolparty/{base_packages → poolparty}/haproxy_spec.rb +1 -1
  202. data/spec/poolparty/{base_packages → poolparty}/heartbeat_spec.rb +1 -1
  203. data/spec/poolparty/poolparty/key_spec.rb +2 -2
  204. data/spec/poolparty/poolparty/neighborhoods_spec.rb +1 -1
  205. data/spec/poolparty/poolparty/plugin_model_spec.rb +13 -17
  206. data/spec/poolparty/poolparty/plugin_spec.rb +7 -7
  207. data/spec/poolparty/poolparty/pool_spec.rb +4 -10
  208. data/spec/poolparty/poolparty/resource_spec.rb +25 -29
  209. data/spec/poolparty/poolparty/script_spec.rb +1 -4
  210. data/spec/poolparty/poolparty/test_plugins/webserver.rb +27 -25
  211. data/spec/poolparty/resources/file_spec.rb +5 -4
  212. data/spec/poolparty/resources/sshkey_spec.rb +39 -40
  213. data/spec/poolparty/spec_helper.rb +9 -39
  214. data/tasks/poolparty.rake +29 -1
  215. data/tasks/spec.rake +39 -1
  216. data/test/fixtures/fake_clouds.rb +11 -0
  217. data/test/fixtures/metavirt_cloud.json +1 -0
  218. data/test/fixtures/test_key +1 -0
  219. data/test/poolparty/core/array_test.rb +11 -0
  220. data/test/poolparty/core/hash_test.rb +5 -7
  221. data/test/poolparty/core/object_test.rb +29 -0
  222. data/test/poolparty/dependency_resolver/chef_resolver_test.rb +82 -0
  223. data/test/poolparty/dependency_resolver/puppet_resolver_test.rb +5 -26
  224. data/test/poolparty/modules/callbacks_test.rb +1 -1
  225. data/test/poolparty/modules/cloud_dsl_test.rb +10 -8
  226. data/test/poolparty/monitors/test_base_monitor.rb +17 -0
  227. data/test/poolparty/monitors/test_monitor_rack.rb +26 -0
  228. data/test/poolparty/net/remoter_base_test.rb +17 -0
  229. data/test/poolparty/net/remoter_bases/libvirt/libvirt_test.rb +70 -0
  230. data/test/poolparty/net/remoter_bases/metavirt/metavirt_test.rb +81 -0
  231. data/test/poolparty/net/remoter_bases/vmrun/vmrun_test.rb +58 -27
  232. data/test/poolparty/plugins/chef_deploy_test.rb +37 -0
  233. data/test/poolparty/plugins/chef_plugin_test.rb +23 -0
  234. data/test/poolparty/plugins/rails_deploy_test.rb +50 -0
  235. data/test/poolparty/poolparty/cloud_test.rb +65 -0
  236. data/test/poolparty/poolparty/isolated_cloud_test.rb +25 -0
  237. data/test/poolparty/poolparty/neighborhood_test.rb +1 -1
  238. data/test/poolparty/poolparty/plugin_test.rb +19 -0
  239. data/test/poolparty/poolparty/pool_test.rb +22 -0
  240. data/test/poolparty/poolparty/poolparty_base_class_test.rb +53 -15
  241. data/test/poolparty/poolparty/schema_test.rb +13 -0
  242. data/test/poolparty/poolparty/template_test.rb +6 -6
  243. data/test/poolparty/verification/verify_test.rb +7 -3
  244. data/test/test_helper.rb +15 -4
  245. data/test/test_methods.rb +11 -0
  246. data/vendor/chef/apache2/attributes/apache.rb +1 -1
  247. data/vendor/gems/dslify/LICENSE +20 -0
  248. data/vendor/gems/dslify/README.rdoc +33 -0
  249. data/vendor/gems/dslify/Rakefile +56 -0
  250. data/vendor/gems/dslify/VERSION.yml +4 -0
  251. data/vendor/gems/dslify/dslify.gemspec +29 -0
  252. data/vendor/gems/dslify/lib/dslify.rb +81 -0
  253. data/vendor/gems/dslify/test/dslify_test.rb +283 -0
  254. data/vendor/gems/dslify/test/test_helper.rb +7 -0
  255. data/vendor/gems/git-style-binaries/README.markdown +280 -0
  256. data/vendor/gems/git-style-binaries/Rakefile +64 -0
  257. data/vendor/gems/git-style-binaries/VERSION.yml +4 -0
  258. data/vendor/gems/git-style-binaries/doc/EXAMPLES +1 -0
  259. data/vendor/gems/git-style-binaries/doc/gsb-screencast.png +0 -0
  260. data/vendor/gems/git-style-binaries/doc/poolparty-binaries.screenplay +412 -0
  261. data/vendor/gems/git-style-binaries/git-style-binaries.gemspec +78 -0
  262. data/vendor/gems/git-style-binaries/lib/ext/colorize.rb +198 -0
  263. data/vendor/gems/git-style-binaries/lib/ext/core.rb +16 -0
  264. data/vendor/gems/git-style-binaries/lib/git-style-binary/autorunner.rb +21 -0
  265. data/vendor/gems/git-style-binaries/lib/git-style-binary/command.rb +204 -0
  266. data/vendor/gems/git-style-binaries/lib/git-style-binary/commands/help.rb +32 -0
  267. data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/name_resolver.rb +78 -0
  268. data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb +37 -0
  269. data/vendor/gems/git-style-binaries/lib/git-style-binary/parser.rb +223 -0
  270. data/vendor/gems/git-style-binaries/lib/git-style-binary.rb +88 -0
  271. data/vendor/gems/git-style-binaries/test/fixtures/flickr +4 -0
  272. data/vendor/gems/git-style-binaries/test/fixtures/flickr-download +17 -0
  273. data/vendor/gems/git-style-binaries/test/fixtures/wordpress +42 -0
  274. data/vendor/gems/git-style-binaries/test/fixtures/wordpress-categories +18 -0
  275. data/vendor/gems/git-style-binaries/test/fixtures/wordpress-list +18 -0
  276. data/vendor/gems/git-style-binaries/test/fixtures/wordpress-post +26 -0
  277. data/vendor/gems/git-style-binaries/test/git-style-binary/command_test.rb +17 -0
  278. data/vendor/gems/git-style-binaries/test/git_style_binary_test.rb +21 -0
  279. data/vendor/gems/git-style-binaries/test/running_binaries_test.rb +224 -0
  280. data/vendor/gems/git-style-binaries/test/shoulda_macros/matching_stdio.rb +13 -0
  281. data/vendor/gems/git-style-binaries/test/test_helper.rb +28 -0
  282. data/vendor/gems/parenting/History.txt +4 -0
  283. data/vendor/gems/parenting/Manifest.txt +14 -0
  284. data/vendor/gems/parenting/PostInstall.txt +2 -0
  285. data/vendor/gems/parenting/README.rdoc +47 -0
  286. data/vendor/gems/parenting/Rakefile +28 -0
  287. data/vendor/gems/parenting/lib/parenting/parenting.rb +70 -0
  288. data/vendor/gems/parenting/lib/parenting.rb +10 -0
  289. data/vendor/gems/parenting/parenting.gemspec +39 -0
  290. data/vendor/gems/parenting/script/console +10 -0
  291. data/vendor/gems/parenting/script/destroy +14 -0
  292. data/vendor/gems/parenting/script/generate +14 -0
  293. data/vendor/gems/parenting/test/file_to_eval.rb +9 -0
  294. data/vendor/gems/parenting/test/test_helper.rb +5 -0
  295. data/vendor/gems/parenting/test/test_parenting.rb +117 -0
  296. data/vendor/gems/suitcase/LICENSE +20 -0
  297. data/vendor/gems/suitcase/README.rdoc +31 -0
  298. data/vendor/gems/suitcase/Rakefile +57 -0
  299. data/vendor/gems/suitcase/VERSION.yml +4 -0
  300. data/vendor/gems/suitcase/lib/suitcase/unzipper.rb +15 -0
  301. data/vendor/gems/suitcase/lib/suitcase/zipper.rb +167 -0
  302. data/vendor/gems/suitcase/lib/suitcase.rb +5 -0
  303. data/vendor/gems/suitcase/suitcase.gemspec +32 -0
  304. data/vendor/gems/suitcase/test/suitcase_test.rb +108 -0
  305. data/vendor/gems/suitcase/test/test_dir/box.rb +1 -0
  306. data/vendor/gems/suitcase/test/test_dir/gems/famoseagle-carrot-0.6.0.gem +0 -0
  307. data/vendor/gems/suitcase/test/test_dir/test.txt +1 -0
  308. data/vendor/gems/suitcase/test/test_helper.rb +12 -0
  309. data/vendor/gems/trollop/FAQ.txt +35 -0
  310. data/vendor/gems/trollop/History.txt +97 -0
  311. data/vendor/gems/trollop/Manifest.txt +7 -0
  312. data/vendor/gems/trollop/README.txt +40 -0
  313. data/vendor/gems/trollop/Rakefile +36 -0
  314. data/vendor/gems/trollop/lib/trollop.rb +735 -0
  315. data/vendor/gems/trollop/release-script.txt +13 -0
  316. data/vendor/gems/trollop/test/test_trollop.rb +1042 -0
  317. data/vendor/gems/trollop/www/index.html +167 -0
  318. metadata +205 -150
  319. data/bin/cloud-describe +0 -28
  320. data/bin/cloud-handle-load +0 -27
  321. data/bin/cloud-rsync +0 -28
  322. data/bin/cloud-spec +0 -41
  323. data/bin/messenger-get-current-nodes +0 -14
  324. data/bin/server-become-master +0 -24
  325. data/bin/server-build-messenger +0 -28
  326. data/bin/server-clean-cert-for +0 -15
  327. data/bin/server-provision +0 -32
  328. data/bin/server-start-agent +0 -15
  329. data/bin/server-start-client +0 -29
  330. data/bin/server-start-master +0 -26
  331. data/bin/server-start-node +0 -32
  332. data/bin/server-stop-client +0 -3
  333. data/bin/server-stop-master +0 -3
  334. data/bin/server-stop-node +0 -3
  335. data/bin/server-update-hosts +0 -49
  336. data/examples/poolparty.rb +0 -12
  337. data/lib/poolparty/base_packages/heartbeat.rb +0 -58
  338. data/lib/poolparty/base_packages/runit.rb +0 -21
  339. data/lib/poolparty/capistrano/cloud_tasks.rb +0 -10
  340. data/lib/poolparty/capistrano.rb +0 -54
  341. data/lib/poolparty/config/postlaunchmessage.txt +0 -5
  342. data/lib/poolparty/core/metaid.rb +0 -15
  343. data/lib/poolparty/core/module.rb +0 -40
  344. data/lib/poolparty/extra/deployments.rb +0 -31
  345. data/lib/poolparty/helpers/display.rb +0 -30
  346. data/lib/poolparty/net/messenger.rb +0 -57
  347. data/lib/poolparty/net/remote_bases.rb +0 -21
  348. data/lib/poolparty/plugins/chef_deploy.rb +0 -58
  349. data/lib/poolparty/plugins/dynomite.rb +0 -14
  350. data/lib/poolparty/plugins/nanite.rb +0 -41
  351. data/lib/poolparty/plugins/rsyncmirror.rb +0 -28
  352. data/lib/poolparty/plugins/tokyo_tyrant.rb +0 -23
  353. data/lib/poolparty/poolparty/plugin_model.rb +0 -45
  354. data/lib/poolparty/resources/host.rb +0 -16
  355. data/lib/poolparty/resources/sshkey.rb +0 -27
  356. data/lib/poolparty/services/conditional.rb +0 -46
  357. data/lib/poolparty/spec/core/string.rb +0 -18
  358. data/lib/poolparty/spec/matchers/a_spec_extensions_base.rb +0 -26
  359. data/lib/poolparty/spec/matchers/have_cron.rb +0 -28
  360. data/lib/poolparty/spec/matchers/have_deploydirectory.rb +0 -15
  361. data/lib/poolparty/spec/matchers/have_directory.rb +0 -31
  362. data/lib/poolparty/spec/matchers/have_exec.rb +0 -28
  363. data/lib/poolparty/spec/matchers/have_file.rb +0 -28
  364. data/lib/poolparty/spec/matchers/have_gempackage.rb +0 -28
  365. data/lib/poolparty/spec/matchers/have_git.rb +0 -28
  366. data/lib/poolparty/spec/matchers/have_host.rb +0 -28
  367. data/lib/poolparty/spec/matchers/have_mount.rb +0 -28
  368. data/lib/poolparty/spec/matchers/have_package.rb +0 -28
  369. data/lib/poolparty/spec/matchers/have_remotefile.rb +0 -28
  370. data/lib/poolparty/spec/matchers/have_rsyncmirror.rb +0 -28
  371. data/lib/poolparty/spec/matchers/have_service.rb +0 -28
  372. data/lib/poolparty/spec/matchers/have_sshkey.rb +0 -28
  373. data/lib/poolparty/spec/matchers/have_symlink.rb +0 -28
  374. data/lib/poolparty/spec/matchers/have_variable.rb +0 -32
  375. data/lib/poolparty/spec/spec/dynamic_matchers.rb +0 -63
  376. data/lib/poolparty/spec/spec/ensure_matchers_exist.rb +0 -7
  377. data/lib/poolparty/spec/templates/have_base.rb +0 -28
  378. data/lib/poolparty/spec.rb +0 -31
  379. data/spec/poolparty/core/module_spec.rb +0 -15
  380. data/spec/poolparty/helpers/display_spec.rb +0 -13
  381. data/spec/poolparty/id_rsa +0 -27
  382. data/spec/poolparty/net/messenger_spec.rb +0 -16
  383. data/spec/poolparty/resources/host_spec.rb +0 -35
  384. data/spec/poolparty/services/conditional_spec.rb +0 -52
  385. data/spec/poolparty/spec/core/string_spec.rb +0 -57
data/examples/basic.rb CHANGED
@@ -1,23 +1,22 @@
1
1
  # Basic pool spec
2
2
  # Shows global settings for the clouds
3
3
  pool :application do
4
- instances 3..50
5
- keypair "auser"
6
- testing true
4
+ instances 1..5
7
5
 
8
- cloud :basic_app do
9
- minimum_instances 12
10
- ami "ami-abc123"
11
- junk_yard_dogs "pains"
12
- has_file :name => "/etc/init.d/motd", :content => "Welcome to your PoolParty instance"
6
+ cloud :frontend do
7
+ minimum_instances 3
8
+ keypair 'application_frontend'
9
+ image_id "ami-abc123"
10
+ has_file :name => "/etc/motd", :content => "Welcome to your PoolParty instance"
13
11
  end
14
12
 
15
- cloud :basic_db do
16
- minimum_instances 19
17
- keypair "hotstuff_database"
18
- maximum_instances 20
19
- ami "ami-1234bc"
20
- junk_yard_dogs "are bad"
13
+ cloud :database do
14
+ keypair 'application_database'
15
+ using :vmrun do
16
+ vmx_hash "/path/to/vmx_file" => "192.168.248.122"
17
+ end
18
+ minimum_instances 1
19
+ image_id "ami-1234bc"
21
20
  end
22
21
 
23
22
  end
@@ -1,30 +1,35 @@
1
+ require 'rubygems'
2
+ $:.unshift "#{File.dirname(__FILE__)}/../lib"
3
+ require "poolparty"
4
+
1
5
  # Basic pool spec
2
6
  # Shows global settings for the clouds
3
- pool :application do
7
+ pool :party do
4
8
  instances 1..3
5
- keypair "auser-work"
6
- ami 'ami-7cfd1a15'
9
+ image_id 'ami-7cfd1a15'
10
+ debugging true
11
+
12
+ # access_key "XXXXXX"
13
+ # secret_access_key "XXXXXXX"
7
14
 
8
- cloud :example_one do
15
+ cloud :app do
16
+ keypair 'app'
17
+ using :ec2 do
18
+ image_id 'ami-7cfd1a15'
19
+ availability_zone 'us-east-1c'
20
+ end
21
+
22
+ has_file "/etc/motd", :content => "Welcome to LARubyConf"
9
23
  # has_directory "/var/www"
10
- #
11
- # has_file "/etc/motd",
12
- # :content => "Welcome to LARubyConf"
13
24
  # has_file :name => "/var/www/index.html" do
14
- # content "<h1>Welcome to your new poolparty instance</h1>"
15
- # mode 0644
16
- # owner "www-data"
25
+ # content "<h1>Welcome to your new poolparty instance</h1>"
26
+ # mode 0644
27
+ # owner "www-data"
17
28
  # end
18
- #
19
- # has_git_repos "paparazzi" do
20
- # :source => "git://github.com/auser/paparazzi.git"
21
- # :at => "/var/www"
22
- # end
23
- #
24
- # chef do
25
- # include_recipes "~/.poolparty/chef/cookbooks/*"
26
- #
27
- # recipe "#{File.dirname(__FILE__)}/examples/fairchild_chef.rb"
29
+
30
+ # has_git "paparazzi" do
31
+ # source "git://github.com/auser/paparazzi.git"
32
+ # dir "/var/www"
28
33
  # end
29
34
 
30
35
  end
data/examples/maize.rb ADDED
@@ -0,0 +1,37 @@
1
+ # Basic poolparty template
2
+
3
+ pool :clouds do
4
+ cloud :app do
5
+ instances 1..3
6
+ # keypair "#{ENV['HOME']}/ec2/ec2-keypair.pem" # or the full path to the keypair on the development machine
7
+ ami 'ami-7cfd1a15'
8
+ using :vmrun do
9
+ vmx_hash({
10
+ "/Users/alerner/Documents/vm/Ubuntu32bitVM.vmwarevm/Ubuntu32bitVM.vmx" => "192.168.248.133"
11
+ })
12
+ end
13
+
14
+ # directories
15
+ has_directory "/var/www"
16
+
17
+ # packages
18
+ has_package(:name => "logwatch")
19
+ has_package(:name => "imagemagick")
20
+ has_package(:name => "libmagick9-dev")
21
+ has_package(:name => "librmagick-ruby")
22
+ has_package(:name => "ffmpeg")
23
+ has_package(:name => "monit")
24
+
25
+ # gems
26
+ has_gem_package(:name => "rmagick")
27
+ has_gem_package(:name => "rubyist-aasm")
28
+ has_gem_package(:name => "rvideo")
29
+ has_gem_package(:name => "right_aws")
30
+ has_gem_package(:name => "ap4r")
31
+ has_gem_package(:name => "rmagick")
32
+
33
+ # services
34
+ has_service(:name => "monit")
35
+ end
36
+
37
+ end
@@ -0,0 +1,33 @@
1
+ require 'rubygems'
2
+ $:.unshift File.dirname(__FILE__)+'/../lib/'
3
+ require "poolparty"
4
+
5
+ pool :multiverse do
6
+
7
+ cloud :front do
8
+ instances 2..4
9
+ keypair 'multiverse_front'
10
+ has_file "/etc/motd", :content => "Welcome to your poolparty instance!"
11
+ using :metavirt do
12
+ server_config({:host=>"192.168.1.97", :port=>3000})
13
+ authorized_keys 'ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCTppECfx7Tb0zoviRfqFaePyAek6+ZktKkHiTHu/jkhG1s4q1oHEe89no21xLxuReyJrDlNe8rLxxZzoYCaAWRdhcqMR3BNqb2w2jpF4pH+bFj0557KrwWP6HSNpRRkyYhxLqZbuH/2t3TzkPevZbcfSYa09jIzqnmTruh9l1s+n5E3cNr/RDdDn7tv3Ok7mKN7GEjkK7F83Pt9xviHevg22xqzm99nS+hg6Kl/fQUTO6pOmC5x+9V47RJz1+9WdhGJ7M83zijX9rMnAwrR5LFoL6aZyyU0G71SpoIL5e8XD/jt1WNKFJOfG8YMLb3i03UABm/Q5Q30+R7UoRxSWRX'
14
+
15
+ # using :vmrun do
16
+ # # vmx_files Dir[::File.expand_path("~/Documents/Virtual Machines.localized/metavirts/*/*.vmx")]
17
+ # vmx_files [
18
+ # "/Users/alerner/Documents/vm/Ubuntu32bitVM.vmwarevm/Ubuntu32bitVM.vmx"
19
+ # ]
20
+ # end
21
+
22
+ using :libvirt do
23
+ image_id 'mvi_ef77fdf0'
24
+ # memory 256000
25
+ # cpus 1
26
+ # network 'vnet0'
27
+ end
28
+
29
+ end
30
+ end
31
+
32
+ end
33
+
@@ -0,0 +1,13 @@
1
+ # Poolparty spec
2
+
3
+ pool :poolparty do
4
+
5
+ instances 1
6
+
7
+ cloud :app do
8
+ keypair "cloudteam_test"
9
+
10
+ has_file "/etc/motd", :content => "Simple"
11
+ end
12
+
13
+ end
@@ -0,0 +1,17 @@
1
+ require 'rubygems'
2
+ $:.unshift File.dirname(__FILE__)+'/../lib/'
3
+ require "poolparty"
4
+
5
+ pool :multiverse do
6
+
7
+ cloud :vv do
8
+ keypair "front"
9
+ instances 1
10
+ has_file "/etc/motd", :content => "Welcome to your poolparty instance!"
11
+ using :vmrun do
12
+ vmx_hash "/Users/stimble/Documents/Virtual Machines.localized/Jaunty.vmwarevm/Jaunty.vmx" => '172.16.68.143'
13
+ end
14
+ end
15
+
16
+ end
17
+
@@ -1,5 +1,8 @@
1
1
  =begin rdoc
2
2
  Aska
3
+
4
+ A rule parser.
5
+
3
6
  TODO: Extract this into a proper gem
4
7
  =end
5
8
  module Aska
@@ -7,6 +7,18 @@ class Array
7
7
  map {|a| a.to_os }
8
8
  end
9
9
 
10
+ def histogram
11
+ out = {}
12
+ map do |ele|
13
+ if out.has_key?(ele)
14
+ out[ele] += 1
15
+ else
16
+ out.merge!(ele => 1)
17
+ end
18
+ end
19
+ out
20
+ end
21
+
10
22
  def collect_with_index &block
11
23
  self.enum_for(:each_with_index).collect &block
12
24
  end
@@ -34,7 +46,7 @@ class Array
34
46
  def select_with_hash(conditions={})
35
47
  return self if conditions.empty?
36
48
  select do |node|
37
- conditions.any? do |k,v|
49
+ conditions.any? do |k,v|
38
50
  ( node.has_key?(k) && node[k]==v ) or ( node.respond_to?(k) && node.send(k)==v )
39
51
  end
40
52
  end
@@ -2,7 +2,7 @@
2
2
  Exception overloads
3
3
  =end
4
4
  class Exception
5
- alias nice_message to_str
5
+ alias :nice_message :to_s
6
6
  # Gives us a nice_message for exceptions
7
7
  def nice_message(padding="")
8
8
  "#{padding}#{message}\n#{padding}"# + backtrace.join("\n#{padding}")
@@ -2,6 +2,22 @@
2
2
  Hash extentions
3
3
  =end
4
4
  class Hash
5
+
6
+ # alias_method :_old_reader, :[]
7
+ # # Treat string and symbols the same
8
+ # def [](key)
9
+ # if o = _old_reader(key) || has_key?(key)
10
+ # return o
11
+ # elsif key.is_a? Symbol
12
+ # _old_reader(key.to_s)
13
+ # elsif key.is_a? String
14
+ # _old_reader(key.to_sym) rescue _old_reader(key)
15
+ # else
16
+ # _old_reader(key)
17
+ # end
18
+ # end
19
+
20
+ # Return a hash of all the elements where the block evaluates to true
5
21
  def choose(&block)
6
22
  Hash[*self.select(&block).inject([]){|res,(k,v)| res << k << v}]
7
23
  end
@@ -66,13 +82,58 @@ class Hash
66
82
  keys.sort[idx - 1]
67
83
  end
68
84
 
85
+ def stringify_keys
86
+ dup.stringify_keys!
87
+ end
88
+
89
+ # Converts all of the keys to strings
90
+ def stringify_keys!
91
+ keys.each{|k|
92
+ v = delete(k)
93
+ self[k.to_s] = v
94
+ v.stringify_keys! if v.is_a?(Hash)
95
+ v.each{|p| p.stringify_keys! if p.is_a?(Hash)} if v.is_a?(Array)
96
+ }
97
+ self
98
+ end
99
+
100
+ def symbolize_keys(key_modifier=nil)
101
+ dup.symbolize_keys!(key_modifier)
102
+ end
103
+
104
+ # Converts all of the keys to strings
105
+ # can pass in a :key_modifier that will be sent to each key, before being symbolized.
106
+ # This can be usefull if you want to downcase, or snake_case each key.
107
+ # >> {'Placement' => {'AvailabilityZone'=>"us-east-1a"} }.symbolize_keys(:snake_case)
108
+ # => {:placement=>{:availability_zone=>"us-east-1a"}}
109
+ def symbolize_keys!(key_modifier=nil)
110
+ keys.each{|k|
111
+ v = delete(k)
112
+ if key_modifier && k.respond_to?(key_modifier)
113
+ k = k.send(key_modifier)
114
+ end
115
+ self[k.to_sym] = v
116
+ v.symbolize_keys!(key_modifier) if v.is_a?(Hash)
117
+ v.each{|p| p.symbolize_keys!(key_modifier) if p.is_a?(Hash)} if v.is_a?(Array)
118
+ }
119
+ self
120
+ end
121
+
122
+ def to_cloud
123
+ $:.unshift("#{::File.dirname(__FILE__)}/../../poolparty")
124
+ require "poolparty"
125
+ cld = Cloud.new((fetch(:name) rescue "hashed_cloud"))
126
+ cld.set_vars_from_options(self)
127
+ cld
128
+ end
129
+
69
130
  def method_missing(sym, *args, &block)
70
- if has_key?(sym)
131
+ if has_key?(sym.to_sym)
71
132
  fetch(sym)
72
133
  elsif has_key?(sym.to_s)
73
134
  fetch(sym.to_s)
74
135
  else
75
136
  super
76
137
  end
77
- end
138
+ end
78
139
  end
@@ -0,0 +1,11 @@
1
+ class Integer
2
+ def months
3
+ PoolParty::Duration.new(self * 30.days, [[:months, self]])
4
+ end
5
+ alias :month :months
6
+
7
+ def years
8
+ PoolParty::Duration.new(self * 365.25.days, [[:years, self]])
9
+ end
10
+ alias :year :years
11
+ end
@@ -16,11 +16,7 @@ class Object
16
16
  original = self.method(original_id).to_proc
17
17
  define_method(new_id){|*args| original.call(*args)}
18
18
  end
19
- def with_options(opts={}, par=nil, &block)
20
- @p = par.clone
21
- @p.options.merge!(opts)
22
- @p.instance_eval &block if block
23
- end
19
+
24
20
  def returning(receiver)
25
21
  yield receiver
26
22
  receiver
@@ -29,14 +25,24 @@ class Object
29
25
  block.in_context(self).call
30
26
  self
31
27
  end
32
- def send_if_method(v, *args)
33
- if (v.nil? || v.to_s.empty? || v.is_a?(Array) || v.is_a?(Integer))# && !v.is_a?(Symbol))#)v.is_a?(String)
34
- v
35
- else
36
- vs = v.to_s.to_sym
37
- respond_to?(vs) ? self.send(vs, *args) : v rescue v #NOTE MF: maybe we should not rescue all errors?
38
- end
39
- end
28
+
29
+ # Procs that have been run already in the run_once blocks
30
+ # This is just a container array of procs
31
+ def run_procs
32
+ @run_procs ||= []
33
+ end
34
+
35
+ # Do once.
36
+ # Takes a block. IF this block has already been run (from the run_procs array),
37
+ # then run it and store the block unique id in the run_procs array so
38
+ # it never gets run again
39
+ def do_once(&block)
40
+ unless run_procs.include?(block.to_s)
41
+ instance_eval &block if block
42
+ run_procs << block.to_s
43
+ end
44
+ end
45
+
40
46
  def respec_string
41
47
  case self.class
42
48
  when String
@@ -85,19 +91,35 @@ class Object
85
91
  print "#{m}" if debugging?(o) || verbose?(o) rescue ""
86
92
  end
87
93
  def verbose?(o=self)
88
- o.respond_to?(:verbose) ? o.verbose : ($TESTING ||= false)
94
+ o.respond_to?(:verbose) ? o.verbose : (debugging? || $TESTING ||= false)
89
95
  end
90
96
  def debugging?(o=self)
91
- o.respond_to?(:debug) ? o.debug : ($DEBUGGING ||= false)
97
+ debugging
92
98
  end
93
- def debugging(bool=nil)
94
- bool.nil? ? $DEBUGGING : $DEBUGGING = bool
99
+ def debugging
100
+ $DEBUGGING ||= false
101
+ end
102
+ def debugging=(bool)
103
+ $DEBUGGING = bool
95
104
  end
96
105
  def testing(bool=$TESTING)
97
106
  bool.nil? ? $TESTING : $TESTING = bool
98
107
  end
99
- alias :debug :debugging
100
108
  def unix_hide_string
101
109
  "2>&1 > /dev/null"
102
110
  end
103
- end
111
+
112
+ # Get object's meta (ghost, eigenclass, singleton) class
113
+ # from activesupport
114
+ def metaclass
115
+ class << self
116
+ self
117
+ end
118
+ end
119
+
120
+ # If class_eval is called on an object, add those methods to its metaclass
121
+ # from activesupport
122
+ def class_eval(*args, &block)
123
+ metaclass.class_eval(*args, &block)
124
+ end
125
+ end
@@ -1,7 +0,0 @@
1
- require 'ruby2ruby'
2
-
3
- class Proc
4
- def to_ruby(opts={})
5
- Ruby2Ruby.new.process(self.to_sexp).gsub(/proc \{/, "do \n#{opts.map {|k,v| "#{k} \"#{v}\""}.join("\n")}\n").sub(/\}/, "\nend")
6
- end
7
- end
@@ -1,3 +1,7 @@
1
+ require 'rubygems'
2
+ require 'json'
3
+ require 'json/add/core'
4
+
1
5
  class String
2
6
  def hasherize(format=[])
3
7
  hash = {}
@@ -25,8 +29,9 @@ class String
25
29
  self.strip.split(/\n/).join(" && ")
26
30
  end
27
31
  def top_level_class
28
- self.split("::")[-1].underscore.downcase rescue self.class.to_s
32
+ self.split("::")[-1].snake_case rescue self.class.to_s
29
33
  end
34
+
30
35
  def sanitize
31
36
  self.gsub(/[ \.\/\-]*/, '')
32
37
  end
@@ -46,6 +51,9 @@ class String
46
51
  self.gsub(/['"]/, '\\\"')
47
52
  # self.gsub(/["']/, "\\\"")
48
53
  end
54
+ def path_quote
55
+ self.safe_quote.gsub(/[ ]/, '\ ')
56
+ end
49
57
  def nice_runnable(quite=true)
50
58
  self.split(/ && /).join("\n")
51
59
  end
@@ -53,7 +61,7 @@ class String
53
61
  # Refactor this guy to get the class if the class is defined, and not always create a new one
54
62
  # although, it doesn't really matter as ruby will just reopen the class
55
63
  def class_constant(superclass=nil, opts={}, &block)
56
- symc = ((opts && opts[:preserve]) ? ("#{self.camelcase}Class") : "PoolParty#{self.camelcase}Class").classify
64
+ symc = ((opts && opts[:preserve]) ? ("#{self.camelcase}") : "PoolParty#{self.camelcase}").classify
57
65
 
58
66
  kla=<<-EOE
59
67
  class #{symc} #{"< #{superclass}" if superclass}
@@ -176,5 +184,30 @@ class String
176
184
  def macify
177
185
  split(":").map {|a| a[0].chr == "0" ? a[1].chr : a}.join(":")
178
186
  end
187
+
188
+ ##
189
+ # @param o<String> The path component to join with the string.
190
+ #
191
+ # @return <String> The original path concatenated with o.
192
+ #
193
+ # @example
194
+ # "merb"/"core_ext" #=> "merb/core_ext"
195
+ def /(o)
196
+ File.join(self, o.to_s)
197
+ end
198
+
199
+ # Parse json string to a ruby object
200
+ def json_parse
201
+ return nil if self == "null" || self.empty?
202
+ result = JSON.parse self
203
+ if result.respond_to? :keys
204
+ result.symbolize_keys!
205
+ end
206
+ end
207
+
208
+ # dumb and ugly pluralize
209
+ def pluralize(count=2)
210
+ count > 1 ? self + "s" : self
211
+ end
179
212
 
180
213
  end
@@ -14,4 +14,14 @@ class Symbol
14
14
  def <=>(b)
15
15
  "#{self}" <=> "#{b}"
16
16
  end
17
+ ##
18
+ # @param o<String, Symbol> The path component to join with the string.
19
+ #
20
+ # @return <String> The original path concatenated with o.
21
+ #
22
+ # @example
23
+ # :merb/"core_ext" #=> "merb/core_ext"
24
+ def /(o)
25
+ File.join(self.to_s, o.to_s)
26
+ end
17
27
  end
@@ -53,4 +53,10 @@ class Numeric
53
53
  in_units = (seconds / 1.send(unit))
54
54
  "#{in_units.to_i} #{in_units != 1 ? unit.to_s.pluralize : unit} ago"
55
55
  end
56
+ end
57
+
58
+ class Time
59
+ def to_time
60
+ self
61
+ end
56
62
  end