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/bin/cloud-run ADDED
@@ -0,0 +1,37 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
+ require "poolparty"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
6
+
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string} cmd
11
+
12
+ run a cmd in the cloud
13
+ EOS
14
+
15
+ short_desc "run a cmd in the cloud"
16
+ opt :inst_num, "The number of the instance to ssh to, starts at 0.", :type => :int
17
+
18
+ run do |command|
19
+ @loaded_clouds.each do |cloud|
20
+ @cloud = cloud
21
+ nodes = @cloud.nodes(:status => "running")
22
+
23
+ if !nodes.empty?
24
+ nodes.each_with_index do |node, i|
25
+ next unless i == command[:inst_num].to_i if command[:inst_num]
26
+ ip = nodes[i].ip || nodes[i].public_ip
27
+ cmd = ARGV.join(" ")
28
+ puts "%s %s: %s" % [cloud.cloud_name, ip, cmd]
29
+ @cloud.ssh_into(ip, :cmd => cmd) if @cloud
30
+ end
31
+ else
32
+ puts "No running instances can be found"
33
+ end
34
+ end
35
+
36
+ end
37
+ end
data/bin/cloud-setup-dev CHANGED
@@ -1,25 +1,36 @@
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', 'Setup development environment for cloud named') { |c| optioner.cloudname c }
8
- end
9
-
10
- o.loaded_clouds.each do |cld|
11
-
12
- if cld.remote_instances_list.empty?
13
- puts "Your cloud is not running"
14
- else
15
- str =<<-EOE
16
- Host #{cld.name}-master
17
- User #{cld.user}
18
- Hostname #{cld.remote_instances_list.first.ip}
19
- IdentityFile #{cld.keypair}
20
- EOE
21
-
22
- puts "Enter the following in your .ssh/config file"
23
- puts str
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string} COMMAND [ARGS]
11
+
12
+ puts a helpful ssh config
13
+ EOS
14
+
15
+ short_desc "puts a helpful ssh config"
16
+
17
+ run do |command|
18
+ @loaded_clouds.each do |cld|
19
+
20
+ if cld.nodes(:status => "running").empty?
21
+ puts "Your cloud is not running"
22
+ else
23
+ str =<<-EOE
24
+ Host #{cld.name}
25
+ User #{cld.user}
26
+ Hostname #{cld.nodes(:status => "running").first.ip}
27
+ IdentityFile #{cld.keypair}
28
+ EOE
29
+
30
+ puts "Enter the following in your .ssh/config file"
31
+ puts str
32
+ end
33
+
34
+ end
24
35
  end
25
36
  end
data/bin/cloud-show CHANGED
@@ -1,28 +1,47 @@
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('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
7
- end
7
+ GitStyleBinary.command do
8
+ @theme = :short
9
+
10
+ version "PoolParty #{$0} command"
11
+ banner <<-EOS
12
+ Usage: #{$0} #{all_options_string}
8
13
 
9
- o.loaded_clouds.each do |cld|
10
- puts "\nFrom #{$pool_specfile}\n"
11
- print_with_nice_printer "Cloud: #{cld.name}", [
12
- "instances #{cld.minimum_instances}..#{cld.maximum_instances}",
13
- "keypair #{cld.keypair}",
14
- "using #{cld.remote_base.class.to_s.top_level_class}"
15
- ] do |printer|
16
- if cld.nodes(:status => "running").size > 0
17
- printer.empty
18
- printer.center("Active instances")
19
- printer << nodes(:status => "running").map{|a| a.ip.strip }.join("\n")
20
- end
21
- if cld.nodes(:status => "pending").size > 0
22
- printer.empty
23
- printer.center "Pending instances"
24
- printer << cld.nodes(:status => "pending").map{|a| a.to_s}.join("\n")
14
+ shows output about the clouds.rb
15
+
16
+ EOS
17
+
18
+ short_desc "shows output about the clouds.rb"
19
+
20
+ run do |command|
21
+
22
+ @loaded_clouds.each do |cld|
23
+
24
+ dputs "Showing #{cld.name}"
25
+ puts "\nFrom #{$pool_specfile}\n"
26
+ print_with_nice_printer "Cloud: #{cld.name}", [
27
+ "instances #{cld.minimum_instances}..#{cld.maximum_instances}",
28
+ "keypair #{cld.keypair}",
29
+ "using #{cld.remote_base.class.to_s.top_level_class}"
30
+ ] do |printer|
31
+ if cld.nodes(:status => "running").size > 0
32
+ printer.empty
33
+ printer.center("Active instances")
34
+ printer << cld.nodes(:status => "running").map{|a| a.ip.strip rescue nil }.compact.join("\n")
35
+ end
36
+ if cld.nodes(:status => "pending").size > 0
37
+ printer.empty
38
+ printer.center "Pending instances"
39
+ printer << cld.nodes(:status => "pending").map{|a| a.ip.strip rescue nil }.join("\n")
40
+ end
41
+ printer.empty
42
+ end
43
+
25
44
  end
26
- printer.empty
45
+
27
46
  end
28
47
  end
data/bin/cloud-ssh CHANGED
@@ -1,21 +1,30 @@
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
- optioner.options( :num => 0 )
8
- opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
9
- opts.on('-i num', '--id num', 'Instance num to ssh (default: 0)') { |i| optioner.inst_num i.to_i }
10
- end
11
- load_pool(o.spec? ? o.spec : Binary.get_existing_spec_location)
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
12
11
 
13
- @cloud = o.loaded_clouds.first
14
- nodes = @cloud.nodes(:status => "running")
12
+ ssh into an instance of the cloud
13
+ EOS
15
14
 
16
- if !nodes.empty?
17
- n = o.inst_num? ? o.inst_num : 0
18
- @cloud.ssh_into( nodes[n].ip ) if @cloud
19
- else
20
- puts "No running instances can be found"
15
+ short_desc "ssh into an instance of the cloud"
16
+ opt :inst_num, "The number of the instance to ssh to, starts at 0.", :type => :int
17
+
18
+ run do |command|
19
+ @cloud = @loaded_clouds.first
20
+ nodes = @cloud.nodes(:status => "running")
21
+
22
+ if !nodes.empty?
23
+ n = command[:inst_num] ? command[:inst_num].to_i : 0
24
+ @cloud.ssh_into( nodes[n].ip || nodes[n].public_ip ) if @cloud
25
+ else
26
+ puts "No running instances can be found"
27
+ end
28
+
29
+ end
21
30
  end
data/bin/cloud-start CHANGED
@@ -1,30 +1,44 @@
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('-n cloudname', '--name name', 'Start cloud by this name') { |c| optioner.cloudname c }
7
- end
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
8
11
 
9
- o.loaded_clouds.each do |cld|
12
+ starts a single instance in your cloud.
13
+ EOS
10
14
 
11
- if cld.nodes(:status => "running").size.zero?
12
- puts header("Starting cloud #{cld.name} (#{cld.keypair})")
13
- puts "#{cld.nodes(:status => "running").size} running instances (#{cld.minimum_instances} - #{cld.maximum_instances})"
15
+ short_desc "starts a single instance in your cloud"
16
+
17
+ run do |command|
14
18
 
15
- cld.launch_instance!(cld.dsl_options) do |node|
19
+ @loaded_clouds.each do |cld|
20
+
21
+ if cld.nodes(:status => "running").size.zero?
22
+ puts "Starting cloud #{cld.name} (#{cld.keypair})"
23
+ puts "#{cld.nodes(:status => "running").size} running instances (#{cld.minimum_instances} - #{cld.maximum_instances})"
24
+
25
+ cld.launch_instance!(:cloud_name => cld.name) do |node|
26
+
27
+ ::PoolParty::Provision::BootStrapper.new(node.ip, :cloud => cld)
28
+ ::PoolParty::Provision::DrConfigure.new(node.ip, :cloud => cld)
29
+
30
+ puts <<-EOM
31
+ Your cloud has started. Your ip is #{node.ip}
32
+ EOM
33
+ end
16
34
 
17
- ::PoolParty::Provision::BootStrapper.new(node.ip, :cloud => cld)
18
- ::PoolParty::Provision::DrConfigure.new(node.ip, :cloud => cld)
35
+ else
36
+ puts <<-EOE
37
+ Your cloud is already running.
38
+ EOE
39
+ end
19
40
 
20
- puts <<-EOM
21
- Your cloud has started. Your ip is #{node.ip}
22
- EOM
23
41
  end
24
-
25
- else
26
- puts <<-EOE
27
- Your cloud is already running.
28
- EOE
42
+
29
43
  end
30
44
  end
data/bin/cloud-terminate CHANGED
@@ -1,22 +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
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', 'Terminate the cloud of 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} COMMAND [ARGS]
9
11
 
10
- o.loaded_clouds.each do |cld|
11
- cld.nodes(:status => "running").each do |inst|
12
- msg = <<-EOM
13
- Shutting down #{inst.instance_id}
14
- Are you sure? (Y/N)
15
- EOM
16
-
17
- if are_you_sure?(msg)
18
- puts "Shutting down #{inst.instance_id}"
19
- cld.terminate_instance!(:instance_id => inst.instance_id)
20
- end
12
+ terminate the cloud
13
+ EOS
14
+
15
+ short_desc "terminate the cloud"
16
+
17
+ opt :yes, "Answer yes to the are you sure question", :type => :boolean, :default => false
18
+
19
+ run do |command|
20
+ @loaded_clouds.each do |cld|
21
+
22
+ cld.nodes(:status => "running").each do |inst|
23
+ msg = <<-EOM
24
+ Shutting down #{inst.instance_id}
25
+ Are you sure? (Y/N)
26
+ EOM
27
+ o = are_you_sure? msg || command[:yes]
28
+ if o
29
+ puts "Shutting down #{inst.instance_id}"
30
+ cld.terminate_instance!(:instance_id => inst.instance_id)
31
+ else
32
+ if are_you_sure?(msg)
33
+ puts "Shutting down #{inst.instance_id}"
34
+ cld.terminate_instance!(:instance_id => inst.instance_id)
35
+ end
36
+ end
37
+ end
38
+
39
+ end
21
40
  end
22
41
  end
data/bin/cloud-verify ADDED
@@ -0,0 +1,41 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.dirname(__FILE__) + "/../lib")
3
+ require "poolparty"
4
+ # require "poolpartycl"
5
+ require 'git-style-binary/command'
6
+
7
+ GitStyleBinary.command do
8
+ version "PoolParty #{$0} command"
9
+ banner <<-EOS
10
+ Usage: #{$0} #{all_options_string}
11
+
12
+ Run the verifiers on your cloud
13
+ EOS
14
+
15
+ short_desc "Run the verifiers on your cloud"
16
+
17
+ run do |command|
18
+ @loaded_clouds.each do |cld|
19
+
20
+ begin
21
+ if cld.verifiers.size > 0
22
+ cld.passing?
23
+ vputs "Cloud passed verification"
24
+ else
25
+ raise "Your cloud doesn't have any verifiers!"
26
+ exit 2
27
+ end
28
+ rescue Exception => e
29
+ cld.vputs <<-EOM
30
+
31
+ Verification failed: #{e}"
32
+ Please check your clouds.rb for any errors
33
+
34
+ Exception: #{e.class}: #{e.message}\n\t#{e.backtrace.join("\n\t")}
35
+
36
+ EOM
37
+ end
38
+
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,22 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
+ require "poolparty"
4
+ require "poolpartycl"
5
+ require "poolparty/installers/base_installer"
6
+ require "highline/import"
7
+
8
+ say("\nWhat remoter base would you like to use?")
9
+ choose do |menu|
10
+ menu.prompt = "> "
11
+
12
+ PoolParty::Remote::RemoterBase.available_bases.each do |base|
13
+ menu.choice base.to_sym do
14
+
15
+ say "Great, we'll be using #{base}"
16
+
17
+ klass = "::PoolParty::Installers::#{base.to_s.capitalize}".constantize
18
+ klass.send :new
19
+ end
20
+ end
21
+
22
+ end
@@ -1,7 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
- require "poolparty/lite"
5
4
 
6
5
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
6
  opts.on('-n cloudname', '--name name', 'Start cloud by this name') { |c| optioner.cloudname c }
@@ -10,28 +9,23 @@ end
10
9
 
11
10
  vote_for = o.unflagged_args.shift || "none"
12
11
 
13
- schema = ::PoolParty.load_cloud_from_json(o.unflagged_args.shift) #TODO: smarter option parser
14
- remote_base_name = schema.options.remote_base.split('::')[-1].camelcase
15
- remoter_base = PoolParty::Remote.module_eval(remote_base_name)
12
+ cld = ::PoolParty::Cloud::Cloud.load_from_json(ENV['CLOUDS_JSON_FILE'] || '/etc/poolparty/clouds.json') #TODO: smarter option parser
16
13
 
17
- o.loaded_clouds.each do |cld|
18
- cld.update_from_schema(schema)
19
-
20
- case vote_for
21
- when "expand"
22
- vputs "Launching new instance"
23
- cld.send :launch_instance!, schema.options do |node|
24
- dputs "Started node at #{node[:ip]}"
25
-
26
- ::PoolParty::Provision::BootStrapper.new( node[:ip], :cloud => cld )
27
- ::PoolParty::Provision::DrConfigure.new( node[:ip], :cloud => cld )
28
- end
29
-
30
- when "contract"
31
- last_instance_id = %x[/usr/bin/server-list-active instance_id].split("\t").last
32
- remoter_base.terminate_instance! schema.options.merge(:instance_id => last_instance_id)
33
- else
34
- puts "Unknown action: #{vote_for}"
35
- end
14
+ case vote_for
15
+ when "expand"
16
+ puts "Launching new instance"
17
+ cld.launch_instance! do |node|
18
+ dputs "Started node at #{node[:ip]}"
19
+ ::PoolParty::Provision::BootStrapper.new( node[:ip], :cloud => cld )
20
+ ::PoolParty::Provision::DrConfigure.new( node[:ip], :cloud => cld )
21
+ end
36
22
 
23
+ when "contract"
24
+ last_instance_id = %x[server-list-active instance_id].split("\t").last
25
+ cloud.terminate_instance!(:instance_id => last_instance_id)
26
+ when 'none'
27
+ nil
28
+ else
29
+ puts "Unknown action: #{vote_for}"
37
30
  end
31
+
@@ -1,31 +1,32 @@
1
1
  #!/usr/bin/env ruby
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
- require "poolparty/lite"
3
+ # require "poolparty/lite"
4
+ # require "poolparty/core/array"
5
+ require 'poolparty'
4
6
 
5
7
  list_type = ARGV.shift || "ip"
6
8
 
7
- json_file = ARGV[0] || PoolParty::Default.properties_hash_file
9
+ json_file = ARGV[0] || ENV['CLOUD_JSON_FILE'] || PoolParty::Default.properties_hash_file
8
10
  raise "ERROR: no json_file given" if !json_file
9
- schema = PoolParty::Schema.new( ::File.read(json_file) )
10
11
 
11
- inst_array = PoolParty::Neighborhoods.load_default.instances.instances
12
+ cld = Cloud.load_from_json(::File.read(json_file))
13
+ conditions= {:status=>'running', :keypair=>cld.keypair_name}
14
+ inst_array = cld.nodes(conditions)
15
+ puts inst_array.collect{|n| n[list_type] || n[list_type.to_sym]}.join("\t")
12
16
 
13
- if !inst_array || inst_array.empty?
14
- remoter_base = schema.options.remote_base
15
- remote_base = remoter_base.top_level_class.constantize(PoolParty::Remote)
16
17
 
17
- instances = remote_base.send :describe_instances, schema.options
18
- inst_array = instances.map {|inst| inst.send list_type.to_sym }
19
- end
20
-
21
- print_array =
22
- case list_type
23
- when "ip"
24
- inst_array.compact.map {|i| i.ip }
25
- when "internal_ip"
26
- inst_array.compact.map {|i| i.internal_ip || i.ip }
27
- else
28
- inst_array
29
- end
30
-
31
- print print_array.compact.join("\t")
18
+ # schema = PoolParty::Schema.new( ::File.read(json_file) )
19
+ #
20
+ # inst_array = nil #PoolParty::Neighborhoods.load_default.instances
21
+ #
22
+ # if !inst_array || inst_array.empty?
23
+ # remote_base = PoolParty::Remote.module_eval( schema.options.remoter_base.camelcase )
24
+ # instances = remote_base.send :describe_instances, schema.options.keypair_name
25
+ # inst_array = instances.map {|inst| inst.send list_type.to_sym }.compact
26
+ # if ['ip', 'public_id', 'internal_ip'].include? list_type
27
+ # inst_array.delete_if{|n| !n.match(/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/) }
28
+ # end
29
+ # print inst_array.compact.join("\t")
30
+ # else
31
+ # print inst_array.map {|inst| inst.send list_type.to_sym }.compact.join("\t")
32
+ # end
@@ -1,38 +1,31 @@
1
1
  #!/usr/bin/env ruby
2
- # Call server-list-active and get the neighborhood ips back
3
- # then call each of those at the port of butterfly and retain the json
4
- # From there, mash it up together and call server-handle-election
5
- # to handle the election process
6
-
7
- # Error codes
8
- # 1 -> clouds.json was not loaded
9
- # 2 -> server-list-active didn't run
2
+ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
10
3
  require "rubygems"
11
4
  require 'net/http'
12
5
  require 'json'
13
- require "poolparty/lite"
6
+ #require "poolparty/lite"
7
+ require 'poolparty'
14
8
 
15
9
  status = ARGV.shift || "running" # or pending or terminated
16
- schema = ::PoolParty.load_cloud_from_json(ARGV.shift) #TODO: smarter option parser
10
+ schema = ::PoolParty::Cloud::Cloud.load_from_json(ENV['CLOUDS_JSON_FILE'] || '/etc/poolparty/clouds.json')
17
11
 
18
12
  def get_json_stats_from(ip, port)
19
- Net::HTTP.start(ip, port) {|http| http.get('/stats.json') }.body rescue "{}"
13
+ Net::HTTP.start(ip, port) {|http| http.get('/stats') }.body rescue "{}"
20
14
  end
21
-
22
- ips = %x[/usr/bin/server-list-active internal_ip].split("\t")
23
15
 
24
- exit(2) unless ips
16
+ #ips = %x[server-list-active internal_ip].split("\t")
17
+ ips = schema.describe_instances.select_with_hash(:status=>'running').collect{|n| n.ip} #TODO: needs to filter to only this cloud
25
18
 
26
- minimum_instances = schema.options.minimum_instances
27
- maximum_instances = schema.options.maximum_instances
19
+ minimum_instances = schema.dsl_options.minimum_instances
20
+ maximum_instances = schema.dsl_options.maximum_instances
28
21
 
29
22
  if ips.size < minimum_instances
30
- %x[/usr/bin/server-cloud-elections expand]
31
23
  puts "Cloud is too small, need to expand"
24
+ %x[server-cloud-elections expand]
32
25
  exit(0)
33
26
  elsif ips.size > maximum_instances
34
- %x[/usr/bin/server-cloud-elections contract]
35
27
  puts "Cloud is too big, need to contract"
28
+ %x[server-cloud-elections contract]
36
29
  exit(0)
37
30
  end
38
31
 
@@ -50,17 +43,15 @@ candidates.each do |action, ballots|
50
43
  end
51
44
  end
52
45
 
53
- puts total_json_hash.inspect
54
- puts candidates.inspect
55
-
56
46
  # Expand the cloud if 50+% of the votes are for expansion
57
47
  # Contract the cloud if 51+% of the votes are for contraction
58
48
  @elected_action = candidates[:elected_action] || "none"
49
+ puts "checking nominations"
59
50
  if (candidates[:expand] - candidates[:contract])/total_json_hash.size > 0.5
60
- %x[/usr/bin/server-cloud-elections expand] unless @elected_action == "expand"
51
+ %x[server-cloud-elections expand] unless @elected_action == "expand"
61
52
  @elected_action = "expand"
62
53
  elsif (candidates[:contract] - candidates[:expand])/total_json_hash.size > 0.5
63
- %x[/usr/bin/server-cloud-elections contract] unless @elected_action == "contract"
54
+ %x[server-cloud-elections contract] unless @elected_action == "contract"
64
55
  @elected_action = "contract"
65
56
  end
66
57
 
@@ -10,7 +10,7 @@ end
10
10
  o.loaded_clouds.each do |cloud|
11
11
 
12
12
  with_cloud(cloud) do
13
- puts header("Stats")
13
+ puts "Stats"
14
14
  puts rules_values
15
15
  end
16
16
 
data/config/jeweler.rb CHANGED
@@ -12,18 +12,18 @@ end
12
12
  require 'jeweler'
13
13
  Jeweler::Tasks.new do |s|
14
14
  s.name = "poolparty"
15
+ s.description = "PoolParty: The easy, open-source, cross-cloud management solution"
15
16
  s.summary = <<-EOM
16
17
  Self-healing, auto-scaling system administration, provisioning
17
18
  and maintaining tool that makes cloud computing fun and easy
18
19
  EOM
19
- s.description = s.summary
20
20
 
21
21
  s.homepage = "http://poolpartyrb.com"
22
22
  s.email = "ari.lerner@citrusbyte.com"
23
23
  s.authors = ["Ari Lerner"]
24
24
 
25
25
  s.test_files = Dir["test/**/test_*.rb"]
26
- excludes_regexp = ["vendor/gems", "lib/erlang"].one_of_regex
26
+ excludes_regexp = ["lib/erlang"].one_of_regex
27
27
 
28
28
  s.files = (%w(Rakefile History.txt README.txt PostInstall.txt License.txt VERSION.yml) +
29
29
  Dir["{config,examples,lib,spec,test,tasks,script,generators,bin,vendor}/**/*"]).delete_if{|f| f =~ excludes_regexp}
@@ -36,14 +36,14 @@ end
36
36
  "--main", "README"
37
37
  ]
38
38
 
39
- s.add_dependency 'activesupport'
39
+ # s.add_dependency 'activesupport'
40
40
  s.add_dependency 'logging'
41
- s.add_dependency 'auser-dslify'
42
- s.add_dependency 'auser-parenting'
41
+ # s.add_dependency 'auser-dslify'
42
+ # s.add_dependency 'auser-parenting'
43
43
  # s.add_dependency 'auser-suitcase'
44
44
  # s.add_dependency 'ruby2ruby' #TODO: remove this after verifying removing doesnt break anything
45
45
  s.add_dependency 'grempe-amazon-ec2'
46
- s.add_dependency 'rubigen', ">=1.5.2"
46
+ # s.add_dependency 'rubigen', ">=1.5.2"
47
47
  # Certainly there should be more here
48
48
 
49
49
  end