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/History.txt CHANGED
@@ -1,3 +1,6 @@
1
+ == 1.1 2009-03-03
2
+ * Release 1.1 with new stable core
3
+
1
4
  == 1.0.0 2009-1-20
2
5
  * Released 1.0 at CitrusByte
3
6
  * Party
data/README.txt CHANGED
@@ -13,13 +13,6 @@ pool :cloud do
13
13
  end
14
14
  end
15
15
 
16
- == FEATURES/PROBLEMS:
17
-
18
- * Written in Ruby and Erlang
19
- * Written from the ground up to be extensible with plugins
20
- * Easy git-style commands to communicate with your clouds
21
- * Much much more
22
-
23
16
  == SYNOPSIS:
24
17
 
25
18
  PoolParty is written with the intention of being as application-agnostic as possible. It installs only the basic
@@ -28,6 +21,16 @@ required software to glue the cloud together on the instances as listed below.
28
21
  PoolParty is easily configuration. In fact, it makes little assumptions about your development environment and allows
29
22
  several options on how to begin configuring the cloud.
30
23
 
24
+ == WHAT NEXT:
25
+ * PoolParty::Resources - learn how to use resources in your <tt>clouds.rb</tt>
26
+
27
+ == FEATURES/PROBLEMS:
28
+
29
+ * Written in Ruby and Erlang
30
+ * Written from the ground up to be extensible with plugins
31
+ * Easy git-style commands to communicate with your clouds
32
+ * Much much more
33
+
31
34
  == REQUIREMENTS:
32
35
 
33
36
  Ruby
@@ -41,7 +44,7 @@ sudo gem install auser-poolparty
41
44
 
42
45
  (The MIT License)
43
46
 
44
- Copyright (c) 2008 Ari Lerner
47
+ Copyright (c) 2008 Ari Lerner, CloudTeam
45
48
 
46
49
  Permission is hereby granted, free of charge, to any person obtaining
47
50
  a copy of this software and associated documentation files (the
@@ -60,4 +63,5 @@ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
60
63
  IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
61
64
  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
62
65
  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
63
- SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
66
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
67
+
data/Rakefile CHANGED
@@ -51,7 +51,6 @@ end
51
51
 
52
52
  task :release => [:update_timestamp]
53
53
 
54
-
55
54
  # Generate documentation
56
55
  Rake::RDocTask.new do |rd|
57
56
  rd.main = "Readme.txt"
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 5
2
+ :minor: 2
3
+ :patch: 12
3
4
  :major: 1
4
- :minor: 1
data/bin/cloud CHANGED
@@ -1,51 +1,48 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
- require "poolpartycl"
5
-
6
- # name = ARGV.select {|arg| arg if Binary.available_binaries_for("cloud").include?(arg) }.first
7
- name = ARGV.shift if Binary.available_binaries_for("cloud").include?(ARGV.first)
8
- # If the options include -h and they don't include a valid command, then we can just pass the
9
- # original options back, but if they do contain a binary, we don't want -h getting through to
10
- # these options, so we'll strip it if it's included
11
- DUP_ARG = ARGV.dup
12
- new_args = DUP_ARG.map {|arg| DUP_ARG.delete(arg) unless help_array.include?(arg) || Binary.available_binaries_for("cloud").include?(arg) }
13
- new_args = new_args.reject {|arg| Binary.available_binaries_for("cloud").include?(arg) }.empty? ? ARGV : (name ? (help_array.each {|arg| DUP_ARG.delete(arg)}; DUP_ARG) : DUP_ARG)
14
-
15
- # Let's make sure if no command is passed in that we show the help message
16
- new_args.push("-h") unless name
17
-
18
- # Binary.list_binaries_for("cloud")
19
- extra_help_string = <<-EOE
20
-
21
- Cloud commands
22
- cloud start starts a single instance in your cloud.
23
- cloud bootstrap bootstraps an instance or multiple instances
24
- cloud configure configures an instance or multiple instances
25
- cloud provision combines bootstrap and configures an instance or multiple instances
26
- cloud expand expands the cloud by a single instance
27
- cloud contract contracts the cloud by a single instance
28
- cloud describe show the configuration of the current clouds.rb configuration file
29
- cloud list show a list of the current instances on the cloud
30
- cloud ssh ssh into an instance of the cloud
31
- cloud terminate terminate the cloud
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
6
+
7
+ GitStyleBinary.primary do
8
+ @theme = :short
9
+
10
+ version "PoolParty cloud command"
11
+ banner <<-EOS
12
+ Usage: #{$0} #{all_options_string} COMMAND [ARGS]
13
+
14
+ The cloud subcommands commands are:
15
+ \#{GitStyleBinary.pretty_known_subcommands(:short).join(" ")}
16
+
17
+ See 'cloud help COMMAND' for more information on a specific command.
18
+ EOS
19
+
20
+ opt :debug, "Debug the output", :type => :boolean, :default => false
21
+ opt :spec, "Set the pool spec file", :type => String
22
+ opt :testing, "Set testing mode on", :type => :boolean, :default => false
23
+ opt :cloud_name, "Name of the working cloud", :type => String, :default => nil
24
+
25
+ before_run do |command|
26
+ # Setup testing/debugging
27
+ $TESTING = true if command[:testing]
28
+ $DEBUGGING = true if command[:debug]
32
29
 
33
- EOE
34
-
35
- o = PoolParty::Optioner.new(new_args, {
36
- :extra_help => extra_help_string,
37
- :abstract => true}) do |opts, optioner|
38
- opts.on('-n cloudname', '--name name', 'Address this cloud') { |c| optioner.cloudname c }
39
- end
40
-
41
- program_name = "#{File.basename($0)}-#{name}"
42
- program_location = File.join(Binary.binary_directory, program_name)
43
-
44
- command_line = "#{program_location}"
30
+ @loaded_pool = load_pool( command[:spec] ? command[:spec] : Binary.get_existing_spec_location)
31
+ @loaded_clouds = command[:cloud_name] ? [clouds[command[:cloud_name].to_sym]] : clouds.map {|k,c| c }
32
+ @loaded_clouds.each do |cld|
33
+ cld.verbose command[:verbose]
34
+ cld.debugging = command[:debug]
35
+ end
36
+ end
37
+
38
+ run do |command|
39
+ subcommands = GitStyleBinary.list_subcommands
40
+
41
+ puts "Usage: cloud COMMAND [ARGS]
42
+
43
+ The cloud subcommands commands are:
44
+ #{subcommands}
45
45
 
46
- # Run it from the command-line first
47
- if Binary.available_binaries_for("cloud").include?(name)
48
- system command_line, *new_args
49
- else
50
- puts "Unknown poolparty binary: #{name}"
46
+ See 'cloud help COMMAND' for more information on a specific command."
47
+ end
51
48
  end
data/bin/cloud-bootstrap CHANGED
@@ -1,31 +1,41 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
- require "poolparty/provision/boot_strapper"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
5
6
 
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
6
11
 
7
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
8
- opts.on('-n cloudname', '--name name', 'Start cloud by this name') { |c| optioner.cloudname c }
9
- opts.on('-i num', '--num i', 'Instance number') { |i| optioner.inst_num i.to_i }
10
- end
12
+ Bootstrap a cloud instance
13
+ EOS
11
14
 
12
- o.loaded_clouds.each do |cld|
13
- # If an IP or DNS name is given, bootstrap that node, otherwise, bootstrap all running nodes.
14
- # ::FileUtils.rm_rf "#{Default.tmp_path}/" unless o.testing?
15
+ short_desc "Bootstrap a cloud instance"
15
16
 
16
- nodes = !o.unflagged_args.empty? ? o.unflagged_args : cld.nodes(:status => "running").collect {|i| i.ip }.sort.compact
17
- if nodes.empty?
18
- puts "No nodes to bootstrap"
19
- else
20
- if o.inst_num?
21
- vputs "\nBootStrapping: #{nodes[o.inst_num]}\n--------------------"
22
- ::PoolParty::Provision::BootStrapper.new nodes[o.inst_num], :cloud => cld
23
- else
24
- nodes.each do |address|
25
- vputs "\nBootStrapping: #{address}\n--------------------"
26
- ::PoolParty::Provision::BootStrapper.new address, :cloud => cld
27
- end
17
+ opt :inst_num, "The number of the instance to run bootstrap on", :type => :int
18
+
19
+ run do |command|
20
+
21
+ @loaded_clouds.each do |cld|
22
+
23
+ # If an IP or DNS name is given, bootstrap that node, otherwise, bootstrap all running nodes.
24
+ if cld.nodes(:status => "running").empty?
25
+ puts "No nodes to bootstrap"
26
+ else
27
+ if command[:inst_num]
28
+ vputs "\nBootStrapping: #{nodes[o.inst_num]}\n--------------------"
29
+ ::PoolParty::Provision::BootStrapper.new cld.nodes(:status => "running")[ command[:inst_num] ], :cloud => cld
30
+ else
31
+ cld.nodes(:status => "running").each do |address|
32
+ cld.vputs "\nBootStrapping: #{address[:ip]}\n--------------------"
33
+ ::PoolParty::Provision::BootStrapper.new address[:ip], :cloud => cld
34
+ end
35
+ end
36
+ end
37
+
28
38
  end
39
+
29
40
  end
30
- end
31
-
41
+ end
data/bin/cloud-configure CHANGED
@@ -1,43 +1,42 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
4
6
 
5
- extra_help_string = <<-EOE
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
6
11
 
7
- Cloud configure
8
-
9
- Cloud configure will repackage the deployment and send it off to a
10
- remote instance from within the cloud. It then will reconfigure
11
- itself and alert the rest of the cloud
12
-
13
- EOE
12
+ Configure a cloud instance
13
+ EOS
14
14
 
15
- o = PoolParty::Optioner.new(ARGV, {:extra_help => extra_help_string}) do |opts, optioner|
16
- opts.on('-n cloudname', '--name name', 'Start cloud by this name') { |c| optioner.cloudname c }
17
- opts.on('-i num', '--num i', 'Instance number') { |i| optioner.inst_num i.to_i }
18
- end
19
-
20
- o.loaded_clouds.each do |cld|
21
- # If an IP or DNS name is given, bootstrap that node, otherwise, bootstrap all running nodes.
22
- # ::FileUtils.rm_rf "#{Default.tmp_path}/" unless o.testing?
15
+ short_desc "Configure a cloud instance"
23
16
 
24
- if cld.nodes(:status => "running").size < 1
25
- puts header("No instances running")
26
- else
27
- nodes = !o.unflagged_args.empty? ? o.unflagged_args : cld.nodes(:status => "running").collect {|i| i.ip }.sort.compact
28
- if nodes.empty?
29
- puts "No nodes to configure"
30
- else
31
- if o.inst_num?
32
- vputs "Configuring #{nodes[o.inst_num]}"
33
- ::PoolParty::Provision::DrConfigure.new( nodes[o.inst_num], :cloud => cld )
34
- else
35
- nodes.each do |address|
36
- puts "Configuring: #{address}"
37
- ::PoolParty::Provision::DrConfigure.new( address, :cloud => cld )
17
+ opt :inst_num, "The number of the instance to run bootstrap on", :type => :int
18
+
19
+ run do |command|
20
+
21
+ @loaded_clouds.each do |cld|
22
+
23
+ # If an IP or DNS name is given, bootstrap that node, otherwise, bootstrap all running nodes.
24
+ if cld.nodes(:status => "running").empty?
25
+ puts "No nodes to bootstrap"
26
+ else
27
+ if command[:inst_num]
28
+ vputs "\nConfiguring: #{cld.nodes[o.inst_num]}\n--------------------"
29
+ address = cld.nodes(:status => "running")[ command[:inst_num] ]
30
+ ::PoolParty::Provision::DrConfigure.new( address[:ip], :cloud => cld )
31
+ else
32
+ cld.nodes(:status => "running").each do |address|
33
+ cld.vputs "\nConfiguring: #{address[:ip]}\n--------------------"
34
+ ::PoolParty::Provision::DrConfigure.new address[:ip], :cloud => cld
35
+ end
36
+ end
38
37
  end
39
- end
38
+
40
39
  end
40
+
41
41
  end
42
- end
43
-
42
+ end
data/bin/cloud-console CHANGED
@@ -1,12 +1,34 @@
1
1
  #!/usr/bin/env ruby
2
- # File: script/console
3
- irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
+ require "poolparty"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
4
6
 
5
- libs = " -r irb/completion"
6
- # Perhaps use a console_lib to store any extra methods I may want available in the cosole
7
- # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
8
- libs << " -r #{File.dirname(__FILE__) + '/../lib/poolparty.rb'}"
9
- libs << " -r #{File.dirname(__FILE__) + '/../lib/poolpartycl.rb'}"
10
- puts "Loading PoolParty console..."
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
11
11
 
12
- exec "#{irb} #{libs} --simple-prompt"
12
+ Open an irb session with the clouds.rb loaded
13
+ EOS
14
+
15
+ short_desc "Open an irb session with clouds.rb loaded"
16
+
17
+ opt :inst_num, "The number of the instance to run bootstrap on", :type => :int
18
+
19
+ run do |command|
20
+
21
+ irb = RUBY_PLATFORM =~ /(:?mswin|mingw)/ ? 'irb.bat' : 'irb'
22
+
23
+ libs = " -r irb/completion"
24
+ # Perhaps use a console_lib to store any extra methods I may want available in the cosole
25
+ # libs << " -r #{File.dirname(__FILE__) + '/../lib/console_lib/console_logger.rb'}"
26
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/poolparty.rb'}"
27
+ libs << " -r #{File.dirname(__FILE__) + '/../lib/poolpartycl.rb'}"
28
+ libs << " -r #{$pool_specfile}" if $pool_specfile
29
+ puts "Loading PoolParty console..."
30
+
31
+ exec "#{irb} #{libs} --simple-prompt"
32
+
33
+ end
34
+ end
data/bin/cloud-contract CHANGED
@@ -1,17 +1,33 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
- require "poolpartycl"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
5
6
 
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
8
- end
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
9
11
 
10
- o.loaded_clouds.each do |cld|
11
- puts header("Contracting cloud #{cld.name}")
12
- puts "#{cld.nodes(:status => "running").size} running instances (#{cld.minimum_instances} minimum instances)"
13
- puts testing ? "Not contracting (test mode)" : "Contracting the cloud if possible"
12
+ contracts the cloud by a single instance
13
+ EOS
14
14
 
15
- last_instance_id = cld.nodes(:status => "running").last[:instance_id]
16
- cld.remote_base.terminate_instance! cld.options.merge(:instance_id => last_instance_id)
15
+ short_desc "contracts the cloud by a single instance"
16
+
17
+ run do |command|
18
+ @loaded_clouds.each do |cld|
19
+
20
+ puts "Contracting cloud #{cld.name}"
21
+ puts "#{cld.nodes(:status => "running").size} running instances (#{cld.minimum_instances} minimum instances)"
22
+ puts testing ? "Not contracting (test mode)" : "Contracting the cloud if possible"
23
+
24
+ if cld.minimum_instances < cld.nodes(:status => "running").size
25
+ last_instance_id = cld.nodes(:status => "running").last[:instance_id]
26
+ cld.remote_base.terminate_instance! cld.dsl_options.merge(:instance_id => last_instance_id)
27
+ else
28
+ puts "The cloud #{cld.name} is running minimum instances (#{cld.nodes(:status => "running").size})"
29
+ end
30
+
31
+ end
32
+ end
17
33
  end
data/bin/cloud-expand CHANGED
@@ -1,26 +1,39 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
- require "poolpartycl"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
5
6
 
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'Expand the cloud on this name') { |c| optioner.cloudname c }
8
- end
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
9
11
 
10
- o.loaded_clouds.each do |cld|
12
+ expands the cloud by a single instance
13
+ EOS
11
14
 
12
- vputs header("Expanding cloud #{cld.name}")
13
- vputs "#{cld.nodes(:status => "running").size} running instances of #{cld.maximum_instances} possible instances"
14
- vputs testing ? "Not expanding (test mode)" : "Expanding the cloud"
15
-
16
- cld.launch_instance! do |node|
17
- ::PoolParty::Provision::BootStrapper.new(node.ip, :cloud => cld)
18
- ::PoolParty::Provision::DrConfigure.new(node.ip, :cloud => cld)
19
-
20
- puts <<-EOM
21
- Your cloud has expanded. The new ip is #{node.ip}
22
- EOM
15
+ short_desc "expands the cloud by a single instance"
16
+
17
+ run do |command|
18
+ @loaded_clouds.each do |cld|
19
+
20
+ vputs "Expanding cloud #{cld.name}"
21
+ vputs "#{cld.nodes(:status => "running").size} running instances of #{cld.maximum_instances} possible instances"
22
+ vputs testing ? "Not expanding (test mode)" : "Expanding the cloud"
23
+
24
+ if cld.maximum_instances > cld.nodes(:status => "running").size
25
+ cld.launch_instance!(:cloud_name => cld.name) do |node|
26
+ ::PoolParty::Provision::BootStrapper.new(node.ip, :cloud => cld)
27
+ ::PoolParty::Provision::DrConfigure.new(node.ip, :cloud => cld)
28
+
29
+ puts <<-EOM
30
+ Your cloud has expanded. The new ip is #{node.ip}
31
+ EOM
32
+ end
33
+ else
34
+ puts "The cloud #{cld.name} has too many instances already (#{cld.nodes(:status => "running").size})"
35
+ end
36
+
37
+ end
23
38
  end
24
-
25
-
26
39
  end
data/bin/cloud-list CHANGED
@@ -1,21 +1,49 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
4
6
 
5
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
6
- opts.on('-f [remote|local]', '--from [remote|local]', 'Remote or local (default: local)') { |o| optioner.location o }
7
- opts.on('-r', '--remote', 'Remote listing') { optioner.location "remote" }
8
- opts.on('-l', '--local', 'Local listing') { optioner.location "local" }
9
- opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
10
- end
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
11
11
 
12
- o.loaded_clouds.each do |cld|
13
- puts header("Listing cloud #{cld.name}")
14
- puts subheader("Active instances")
15
- puts cld.nodes(:status => "running").map{|a| "#{a[:instance_id]}\t#{a[:ip]}" }.join("\n")
16
-
17
- if cld.nodes(:status => "pending").size > 0
18
- puts subheader("Pending instances")
19
- puts cld.nodes(:status => "pending").map{|a| "#{a[:instance_id]}\t#{a[:ip]}" }.join("\n")
12
+ List the clouds and their nodes
13
+ e.g. show a list of the current instances on the cloud
14
+ EOS
15
+
16
+ opt :instance_id, "Describe a specific instance", :type => String, :default => nil
17
+ opt :short, "show a short description rather than a long one", :default => false
18
+
19
+ short_desc "show a list of the current instances on the clouds"
20
+
21
+ run do |command|
22
+ @loaded_clouds.each do |cld|
23
+ if command[:instance_id]
24
+ require 'pp'
25
+ pp result = cld.nodes(:instance_id=>command[:instance_id])
26
+ else
27
+ if command[:short]
28
+ %w{running pending}.each do |status|
29
+ nodes = cld.nodes(:status => status)
30
+ if nodes.size > 0
31
+ puts nodes.map{|a|
32
+ "%-15s [%s]: #{a[:instance_id] || a[:id]}\t#{a[:ip] ||a[:public_ip] }" % [cld.name, status]
33
+ }.join("\n")
34
+ end
35
+ end
36
+ else
37
+ puts "Listing cloud #{cld.name}"
38
+ puts "Active instances"
39
+ puts cld.nodes(:status => "running").map{|a| "#{a[:instance_id] || a[:id]}\t#{a[:ip] ||a[:public_ip] }" }.join("\n")
40
+
41
+ if cld.nodes(:status => "pending").size > 0
42
+ puts "Pending instances"
43
+ puts cld.nodes(:status => "pending").map{|a| "#{a[:instance_id] || a[:id]}\t#{a[:ip] ||a[:public_ip] }" }.join("\n")
44
+ end
45
+ end
46
+ end
47
+ end
20
48
  end
21
49
  end
data/bin/cloud-osxcopy CHANGED
@@ -1,17 +1,27 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
- require "poolpartycl"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
5
6
 
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'Copy the master ip for this cloud') { |c| optioner.cloudname c }
8
- end
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string} COMMAND [ARGS]
9
11
 
10
- o.loaded_clouds.each do |cld|
11
-
12
- node = cld.nodes(:status => "running").first
13
- ip = node.ip
14
- puts "ip: #{ip}"
15
- Kernel.system "echo #{ip} | pbcopy"
16
-
12
+ Copy the IP address of a node to the Mac OS X clipboard
13
+ EOS
14
+
15
+ short_desc "Copy the IP address of a node to the Mac OS X clipboard"
16
+
17
+ run do |command|
18
+ @loaded_clouds.each do |cld|
19
+
20
+ node = cld.nodes(:status => "running").first
21
+ ip = node.ip
22
+ puts "ip: #{ip}"
23
+ Kernel.system "echo #{ip} | pbcopy"
24
+
25
+ end
26
+ end
17
27
  end
data/bin/cloud-provision CHANGED
@@ -1,30 +1,45 @@
1
1
  #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
3
  require "poolparty"
4
- require "poolparty/provision/boot_strapper"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
5
6
 
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n cloudname', '--name name', 'Start cloud by this name') { |c| optioner.cloudname c }
8
- opts.on('-i num', '--num i', 'Instance number') { |i| optioner.inst_num i.to_i }
9
- end
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
10
11
 
11
- o.loaded_clouds.each do |cld|
12
- # If an IP or DNS name is given, bootstrap that node, otherwise, bootstrap all running nodes.
13
- nodes = !o.unflagged_args.empty? ? o.unflagged_args : cld.nodes(:status => "running").collect {|i|i.ip }.compact
14
- if nodes.empty?
15
- puts "No nodes to bootstrap"
16
- else
17
- if o.inst_num?
18
- ::PoolParty::Provision::BootStrapper.new( nodes[o.inst_num], :full_keypair_path => cld.keypair.full_filepath, :cloud => cld )
19
- ::PoolParty::Provision::DrConfigure.new( nodes[o.inst_num], :full_keypair_path => cld.keypair.full_filepath, :cloud => cld )
20
- else
21
- nodes.each do |address|
22
- puts "bootstrapping: #{address}"
23
- ::PoolParty::Provision::BootStrapper.new( address, :full_keypair_path => cld.keypair.full_filepath, :cloud => cld )
24
- ::PoolParty::Provision::DrConfigure.new( address, :full_keypair_path => cld.keypair.full_filepath,
25
- :cloud => cld )
12
+ combines bootstrap and configures an instance or multiple instances
13
+ EOS
14
+
15
+ short_desc "combines bootstrap and configures an instance or multiple instances"
16
+
17
+ run do |command|
18
+ @loaded_clouds.each do |cld|
19
+
20
+ # If an IP or DNS name is given, bootstrap that node, otherwise, bootstrap all running nodes.
21
+ if cld.nodes.empty?
22
+ puts "No nodes to provision"
23
+ else
24
+ # Call before_provision callback on cloud
25
+ cld.call_before_provision_callbacks
26
+
27
+ if command[:inst_num]
28
+ vputs "\nConfiguring: #{nodes[o.inst_num]}\n--------------------"
29
+ address = cld.nodes[ command[:inst_num] ]
30
+ ::PoolParty::Provision::BootStrapper.new( address[:ip], :cloud => cld )
31
+ ::PoolParty::Provision::DrConfigure.new( address[:ip], :cloud => cld )
32
+ cld.call_after_provision_callbacks
33
+ else
34
+ cld.nodes(:status => "running").each do |address|
35
+ cld.vputs "\nConfiguring: #{address[:ip]}\n--------------------"
36
+ ::PoolParty::Provision::BootStrapper.new( address[:ip], :cloud => cld )
37
+ ::PoolParty::Provision::DrConfigure.new( address[:ip], :cloud => cld )
38
+ cld.call_after_provision_callbacks
39
+ end
40
+ end
26
41
  end
27
- end
42
+
43
+ end
28
44
  end
29
- end
30
-
45
+ end