auser-poolparty 1.0.0 → 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. data/License.txt +1 -1
  2. data/PostInstall.txt +1 -1
  3. data/README.txt +1 -1
  4. data/Rakefile +13 -37
  5. data/VERSION.yml +4 -0
  6. data/bin/cloud +3 -2
  7. data/bin/cloud-bootstrap +21 -0
  8. data/bin/cloud-configure +21 -10
  9. data/bin/{pool-console → cloud-console} +0 -0
  10. data/bin/cloud-list +9 -12
  11. data/bin/cloud-osxcopy +5 -4
  12. data/bin/cloud-provision +17 -21
  13. data/bin/cloud-setup-dev +11 -11
  14. data/bin/cloud-spec +2 -1
  15. data/bin/cloud-ssh +12 -3
  16. data/bin/cloud-start +19 -23
  17. data/bin/cloud-terminate +1 -1
  18. data/bin/ec2-list-active +24 -0
  19. data/bin/server-become-master +1 -1
  20. data/bin/server-butterfly +25 -0
  21. data/bin/server-clean-cert-for +1 -1
  22. data/bin/server-cloud-elections +26 -0
  23. data/bin/server-ensure-provisioning +1 -2
  24. data/bin/server-get-load +9 -12
  25. data/bin/server-list-active +21 -13
  26. data/bin/server-list-instances +15 -0
  27. data/bin/server-manage-election +67 -0
  28. data/bin/server-monitor.ru +25 -0
  29. data/bin/server-query-agent +1 -1
  30. data/bin/server-rerun +1 -1
  31. data/bin/server-update-hosts +1 -1
  32. data/bin/server-write-new-nodes +1 -1
  33. data/config/jeweler.rb +43 -0
  34. data/config/requirements.rb +1 -9
  35. data/examples/basic.rb +9 -6
  36. data/examples/fairchild.rb +32 -0
  37. data/examples/fairchild_chef.rb +19 -0
  38. data/examples/paparazzi.conf.erb +21 -0
  39. data/generators/poolspec/poolspec_generator.rb +1 -9
  40. data/lib/erlang/messenger/Rakefile +1 -1
  41. data/lib/erlang/messenger/src/pm_node.erl +1 -1
  42. data/lib/erlang/messenger/src/utils.erl +0 -1
  43. data/lib/poolparty/aska/aska.rb +18 -16
  44. data/lib/poolparty/base_packages/bind.rb +11 -0
  45. data/lib/poolparty/base_packages/haproxy.rb +36 -34
  46. data/lib/poolparty/base_packages/heartbeat.rb +47 -61
  47. data/lib/poolparty/base_packages/poolparty.rb +5 -83
  48. data/lib/poolparty/base_packages/ruby.rb +4 -4
  49. data/lib/poolparty/base_packages/runit.rb +1 -1
  50. data/lib/poolparty/capistrano.rb +2 -1
  51. data/lib/poolparty/core/array.rb +9 -3
  52. data/lib/poolparty/core/hash.rb +36 -11
  53. data/lib/poolparty/core/kernel.rb +12 -8
  54. data/lib/poolparty/core/object.rb +20 -21
  55. data/lib/poolparty/core/ordered_hash.rb +99 -0
  56. data/lib/poolparty/core/string.rb +58 -15
  57. data/lib/poolparty/dependencies.rb +49 -0
  58. data/lib/poolparty/dependency_resolver/chef_resolver.rb +209 -0
  59. data/lib/poolparty/dependency_resolver/dependency_resolver.rb +42 -0
  60. data/lib/poolparty/dependency_resolver/dependency_resolver_cloud_extensions.rb +28 -0
  61. data/lib/poolparty/{dependency_resolutions → dependency_resolver}/puppet.rb +29 -28
  62. data/lib/poolparty/dependency_resolver/puppet_resolver.rb +173 -0
  63. data/lib/poolparty/exceptions/RemoteException.rb +1 -1
  64. data/lib/poolparty/exceptions/dependency_resolver_exception.rb +5 -0
  65. data/lib/poolparty/exceptions/package_exception.rb +7 -0
  66. data/lib/poolparty/extra/deployments.rb +7 -7
  67. data/lib/poolparty/helpers/binary.rb +9 -9
  68. data/lib/poolparty/helpers/display.rb +1 -5
  69. data/lib/poolparty/helpers/hash_printer.rb +44 -0
  70. data/lib/poolparty/helpers/optioner.rb +27 -20
  71. data/lib/poolparty/lite.rb +20 -0
  72. data/lib/poolparty/modules/cloud_dsl.rb +6 -0
  73. data/lib/poolparty/modules/cloud_resourcer.rb +48 -111
  74. data/lib/poolparty/modules/daemonizable.rb +141 -140
  75. data/lib/poolparty/modules/definable_resource.rb +7 -10
  76. data/lib/poolparty/modules/file_writer.rb +19 -15
  77. data/lib/poolparty/modules/pretty_printer.rb +1 -1
  78. data/lib/poolparty/modules/resourcing_dsl.rb +46 -41
  79. data/lib/poolparty/monitors/base_monitor.rb +2 -10
  80. data/lib/poolparty/monitors/monitor_rack.rb +125 -0
  81. data/lib/poolparty/monitors/monitors/load_monitor.rb +15 -0
  82. data/lib/poolparty/monitors/monitors/memory_monitor.rb +50 -50
  83. data/lib/poolparty/monitors/monitors/server_monitor.rb +7 -0
  84. data/lib/poolparty/monitors/monitors/web_monitor.rb +18 -18
  85. data/lib/poolparty/monitors/neighborhood_monitor.rb +25 -0
  86. data/lib/poolparty/monitors/stats_monitor.rb +183 -0
  87. data/lib/poolparty/monitors.rb +6 -0
  88. data/lib/poolparty/net/init.rb +11 -0
  89. data/lib/poolparty/net/messenger.rb +1 -18
  90. data/lib/poolparty/net/remote_bases.rb +21 -0
  91. data/lib/poolparty/net/remote_instance.rb +36 -27
  92. data/lib/poolparty/net/remoter/cloud_control.rb +251 -0
  93. data/lib/poolparty/net/remoter/connections.rb +180 -0
  94. data/lib/poolparty/net/remoter/interactive.rb +121 -0
  95. data/lib/poolparty/net/remoter/lists.rb +12 -0
  96. data/lib/poolparty/net/remoter_base.rb +46 -124
  97. data/lib/poolparty/net/{remote_bases → remoter_bases/ec2}/ec2.rb +78 -52
  98. data/lib/poolparty/net/remoter_bases/ec2/ec2_remote_instance.rb +53 -0
  99. data/lib/poolparty/net/{remote_bases → remoter_bases}/ec2/ec2_response_object.rb +2 -4
  100. data/lib/poolparty/plugins/chef.rb +168 -0
  101. data/lib/poolparty/plugins/deploydirectory.rb +22 -46
  102. data/lib/poolparty/plugins/git.rb +27 -18
  103. data/lib/poolparty/plugins/line_in_file.rb +13 -0
  104. data/lib/poolparty/plugins/rsyncmirror.rb +2 -3
  105. data/lib/poolparty/poolparty/cloud.rb +172 -110
  106. data/lib/poolparty/poolparty/custom_resource.rb +2 -2
  107. data/lib/poolparty/poolparty/{base.rb → default.rb} +56 -20
  108. data/lib/poolparty/poolparty/key.rb +75 -0
  109. data/lib/poolparty/poolparty/loggable.rb +28 -27
  110. data/lib/poolparty/poolparty/neighborhoods.rb +69 -0
  111. data/lib/poolparty/poolparty/plugin.rb +52 -19
  112. data/lib/poolparty/poolparty/plugin_model.rb +18 -21
  113. data/lib/poolparty/poolparty/pool.rb +23 -24
  114. data/lib/poolparty/poolparty/poolparty_base_class.rb +181 -0
  115. data/lib/poolparty/poolparty/resource.rb +74 -176
  116. data/lib/poolparty/poolparty/script.rb +32 -20
  117. data/lib/poolparty/poolparty/service.rb +34 -0
  118. data/lib/poolparty/poolparty/template.rb +18 -0
  119. data/lib/poolparty/provision/boot_strapper.rb +140 -0
  120. data/lib/poolparty/provision/configurations/chef.rb +22 -0
  121. data/lib/poolparty/provision/configurations/puppet.rb +28 -0
  122. data/lib/poolparty/provision/dr_configure.rb +85 -0
  123. data/lib/poolparty/provisioners/capistrano/capistrano.rb +21 -19
  124. data/lib/poolparty/provisioners/capistrano/capistrano_configurer.rb +19 -13
  125. data/lib/poolparty/provisioners/capistrano/recipes/aws.rb +21 -0
  126. data/lib/poolparty/provisioners/capistrano/{recipies → recipes}/base.rb +76 -56
  127. data/lib/poolparty/provisioners/capistrano/recipes/master.rb +66 -0
  128. data/lib/poolparty/provisioners/capistrano/recipes/puppet.rb +101 -0
  129. data/lib/poolparty/provisioners/capistrano/{recipies → recipes}/slave.rb +5 -9
  130. data/lib/poolparty/provisioners/provisioner_base.rb +50 -43
  131. data/lib/poolparty/{poolparty/resources → resources}/cron.rb +0 -0
  132. data/lib/poolparty/{poolparty/resources → resources}/custom_service.rb +1 -1
  133. data/lib/poolparty/resources/directory.rb +13 -0
  134. data/lib/poolparty/resources/exec.rb +25 -0
  135. data/lib/poolparty/resources/file.rb +29 -0
  136. data/lib/poolparty/{poolparty/resources → resources}/host.rb +4 -2
  137. data/lib/poolparty/{poolparty/resources → resources}/mount.rb +5 -6
  138. data/lib/poolparty/resources/package.rb +12 -0
  139. data/lib/poolparty/resources/remote_file.rb +20 -0
  140. data/lib/poolparty/{poolparty/resources → resources}/service.rb +1 -2
  141. data/lib/poolparty/resources/sshkey.rb +27 -0
  142. data/lib/poolparty/resources/symlink.rb +21 -0
  143. data/lib/poolparty/{poolparty/resources/remote_user.rb → resources/user.rb} +1 -5
  144. data/lib/poolparty/resources/variable.rb +9 -0
  145. data/lib/poolparty/schema.rb +64 -0
  146. data/lib/poolparty/services/conditional.rb +46 -0
  147. data/lib/poolparty/{poolparty/resources → services}/gem_package.rb +12 -10
  148. data/lib/poolparty/spec.rb +2 -5
  149. data/lib/poolparty/templates/erlang_cookie_maker +6 -0
  150. data/lib/poolparty/templates/gemrc +11 -0
  151. data/lib/poolparty/templates/ha.cf +1 -1
  152. data/lib/poolparty/templates/haproxy.conf +7 -7
  153. data/lib/poolparty/templates/haresources +2 -2
  154. data/lib/poolparty/templates/monitor.ru +16 -0
  155. data/lib/poolparty/templates/puppet/add_puppet_to_hosts +6 -0
  156. data/lib/poolparty/templates/puppet/puppet.conf +2 -0
  157. data/lib/poolparty/templates/puppet/puppetrunner +14 -0
  158. data/lib/poolparty/templates/puppet/site.pp +4 -0
  159. data/lib/poolparty/templates/puppetrunner +11 -5
  160. data/lib/poolparty.rb +67 -14
  161. data/script/destroy +1 -1
  162. data/script/generate +1 -1
  163. data/spec/bin/bin_spec_helper.rb +7 -0
  164. data/spec/bin/fixtures/bin_cloud_for_test.rb +19 -0
  165. data/spec/bin/server-list-active_spec.rb +22 -0
  166. data/spec/poolparty/aska/aska_spec.rb +5 -5
  167. data/spec/poolparty/base_packages/haproxy_spec.rb +2 -8
  168. data/spec/poolparty/base_packages/heartbeat_spec.rb +3 -26
  169. data/spec/poolparty/bin/console_spec.rb +5 -28
  170. data/spec/poolparty/core/array_spec.rb +18 -3
  171. data/spec/poolparty/core/hash_spec.rb +24 -30
  172. data/spec/poolparty/core/object_spec.rb +2 -3
  173. data/spec/poolparty/core/ordered_hash_spec.rb +48 -0
  174. data/spec/poolparty/core/string_spec.rb +1 -27
  175. data/spec/poolparty/dependencies_spec.rb +11 -0
  176. data/spec/poolparty/dependency_resolver/chef_resolver_spec.rb +119 -0
  177. data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +128 -0
  178. data/spec/poolparty/dependency_resolver/dependency_resolver_spec.rb +16 -0
  179. data/spec/poolparty/dependency_resolver/puppet_resolver_spec.rb +124 -0
  180. data/spec/poolparty/extra/deployments_spec.rb +9 -5
  181. data/spec/poolparty/fixtures/clouds.json +128 -0
  182. data/spec/poolparty/fixtures/test_template.erb +1 -0
  183. data/spec/poolparty/helpers/binary_spec.rb +1 -14
  184. data/spec/poolparty/helpers/hash_printer_spec.rb +34 -0
  185. data/spec/poolparty/helpers/optioner_spec.rb +1 -1
  186. data/spec/poolparty/id_rsa +27 -0
  187. data/spec/poolparty/modules/cloud_resourcer_spec.rb +26 -111
  188. data/spec/poolparty/modules/definable_resource.rb +1 -1
  189. data/spec/poolparty/modules/file_writer_spec.rb +5 -5
  190. data/spec/poolparty/monitors/base_monitor_spec.rb +112 -111
  191. data/spec/poolparty/monitors/monitors/cpu_monitor_spec.rb +18 -16
  192. data/spec/poolparty/monitors/monitors/memory_monitor_spec.rb +48 -47
  193. data/spec/poolparty/net/remote_instance_spec.rb +9 -73
  194. data/spec/poolparty/net/remote_spec.rb +78 -101
  195. data/spec/poolparty/net/remoter_base_spec.rb +3 -59
  196. data/spec/poolparty/net/remoter_bases/ec2_mocks_and_stubs.rb +24 -0
  197. data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +125 -0
  198. data/spec/poolparty/net/{remote_bases → remoter_bases}/ec2_spec.rb +32 -49
  199. data/spec/poolparty/net/remoter_spec.rb +51 -44
  200. data/spec/poolparty/plugins/chef_spec.rb +7 -0
  201. data/spec/poolparty/plugins/deploydirectory_spec.rb +51 -52
  202. data/spec/poolparty/plugins/git_spec.rb +14 -19
  203. data/spec/poolparty/plugins/line_spec.rb +14 -8
  204. data/spec/poolparty/poolparty/cloud_spec.rb +87 -128
  205. data/spec/poolparty/poolparty/configurers/files/ruby_basic.rb +3 -4
  206. data/spec/poolparty/poolparty/configurers/ruby_spec.rb +7 -23
  207. data/spec/poolparty/poolparty/custom_resource_spec.rb +2 -43
  208. data/spec/poolparty/poolparty/{base_spec.rb → default_spec.rb} +44 -41
  209. data/spec/poolparty/poolparty/example_spec.rb +43 -11
  210. data/spec/poolparty/poolparty/key_spec.rb +42 -0
  211. data/spec/poolparty/poolparty/neighborhoods_spec.rb +66 -0
  212. data/spec/poolparty/poolparty/plugin_model_spec.rb +14 -24
  213. data/spec/poolparty/poolparty/plugin_spec.rb +25 -96
  214. data/spec/poolparty/poolparty/pool_spec.rb +3 -1
  215. data/spec/poolparty/poolparty/resource_spec.rb +69 -268
  216. data/spec/poolparty/poolparty/script_spec.rb +30 -53
  217. data/spec/poolparty/poolparty/service_spec.rb +5 -0
  218. data/spec/poolparty/poolparty/template_spec.rb +26 -0
  219. data/spec/poolparty/poolparty/test_plugins/webserver.rb +8 -25
  220. data/spec/poolparty/poolparty_base_class_spec.rb +80 -0
  221. data/spec/poolparty/poolparty_spec.rb +4 -4
  222. data/spec/poolparty/provisioners/capistrano/capistrano_spec.rb +31 -23
  223. data/spec/poolparty/provisioners/provisioner_base_spec.rb +128 -122
  224. data/spec/poolparty/resources/cron_spec.rb +44 -0
  225. data/spec/poolparty/resources/directory_spec.rb +40 -0
  226. data/spec/poolparty/resources/exec_spec.rb +37 -0
  227. data/spec/poolparty/resources/file_spec.rb +62 -0
  228. data/spec/poolparty/resources/gem_spec.rb +7 -0
  229. data/spec/poolparty/resources/host_spec.rb +35 -0
  230. data/spec/poolparty/resources/package_spec.rb +29 -0
  231. data/spec/poolparty/resources/service_spec.rb +29 -0
  232. data/spec/poolparty/resources/sshkey_spec.rb +40 -0
  233. data/spec/poolparty/resources/symlink_spec.rb +29 -0
  234. data/spec/poolparty/resources/user_spec.rb +48 -0
  235. data/spec/poolparty/resources/variable_spec.rb +26 -0
  236. data/spec/poolparty/schema_spec.rb +53 -0
  237. data/spec/poolparty/services/conditional_spec.rb +52 -0
  238. data/spec/poolparty/spec_helper.rb +104 -23
  239. data/spec/poolparty/test_spec_helper.rb +13 -0
  240. data/tasks/development.rake +76 -69
  241. data/tasks/poolparty.rake +54 -0
  242. data/tasks/server.rake +41 -39
  243. data/test/poolparty/core/hash_test.rb +23 -0
  244. data/test/test_helper.rb +3 -2
  245. data/vendor/gems/butterfly/History.txt +4 -0
  246. data/vendor/gems/butterfly/PostInstall.txt +2 -0
  247. data/vendor/gems/butterfly/README.rdoc +48 -0
  248. data/vendor/gems/butterfly/Rakefile +62 -0
  249. data/vendor/gems/butterfly/VERSION.yml +4 -0
  250. data/vendor/gems/butterfly/bin/flutter +4 -0
  251. data/vendor/gems/butterfly/butterfly.gemspec +37 -0
  252. data/vendor/gems/butterfly/examples/config.ru +15 -0
  253. data/vendor/gems/butterfly/examples/my_app.rb +12 -0
  254. data/vendor/gems/butterfly/lib/butterfly.rb +14 -0
  255. data/vendor/gems/butterfly/lib/handler.rb +48 -0
  256. data/vendor/gems/butterfly/lib/request.rb +29 -0
  257. data/vendor/gems/butterfly/lib/response.rb +49 -0
  258. data/vendor/gems/butterfly/script/console +10 -0
  259. data/vendor/gems/butterfly/script/destroy +14 -0
  260. data/vendor/gems/butterfly/script/generate +14 -0
  261. data/vendor/gems/butterfly/test/test_adapter_base.rb +23 -0
  262. data/vendor/gems/butterfly/test/test_butterfly_request.rb +46 -0
  263. data/vendor/gems/butterfly/test/test_butterfly_response.rb +43 -0
  264. data/vendor/gems/butterfly/test/test_butterfly_server.rb +16 -0
  265. data/vendor/gems/butterfly/test/test_default.rb +12 -0
  266. data/vendor/gems/butterfly/test/test_helper.rb +6 -0
  267. data/vendor/gems/dslify/History.txt +4 -0
  268. data/vendor/gems/dslify/Manifest.txt +25 -0
  269. data/vendor/gems/dslify/PostInstall.txt +5 -0
  270. data/vendor/gems/dslify/README.txt +60 -0
  271. data/vendor/gems/dslify/Rakefile +56 -0
  272. data/{config → vendor/gems/dslify/config}/hoe.rb +12 -55
  273. data/vendor/gems/dslify/config/requirements.rb +15 -0
  274. data/vendor/gems/dslify/dslify.gemspec +40 -0
  275. data/vendor/gems/dslify/lib/dslify/dslify.rb +69 -0
  276. data/vendor/gems/dslify/lib/dslify/version.rb +10 -0
  277. data/vendor/gems/dslify/lib/dslify.rb +7 -0
  278. data/vendor/gems/dslify/script/console +10 -0
  279. data/vendor/gems/dslify/script/destroy +14 -0
  280. data/vendor/gems/dslify/script/generate +14 -0
  281. data/{script → vendor/gems/dslify/script}/txt2html +4 -4
  282. data/{setup.rb → vendor/gems/dslify/setup.rb} +3 -3
  283. data/{tasks → vendor/gems/dslify/tasks}/deployment.rake +4 -18
  284. data/vendor/gems/dslify/tasks/environment.rake +7 -0
  285. data/{tasks → vendor/gems/dslify/tasks}/website.rake +0 -0
  286. data/vendor/gems/dslify/test/test_dslify.rb +114 -0
  287. data/vendor/gems/dslify/website/index.html +86 -0
  288. data/vendor/gems/dslify/website/index.txt +83 -0
  289. data/{website → vendor/gems/dslify/website}/javascripts/rounded_corners_lite.inc.js +0 -0
  290. data/{website → vendor/gems/dslify/website}/stylesheets/screen.css +18 -27
  291. data/{website → vendor/gems/dslify/website}/template.html.erb +1 -2
  292. data/vendor/gems/parenting/History.txt +4 -0
  293. data/vendor/gems/parenting/Manifest.txt +13 -0
  294. data/vendor/gems/parenting/PostInstall.txt +2 -0
  295. data/vendor/gems/parenting/README.rdoc +47 -0
  296. data/vendor/gems/parenting/Rakefile +28 -0
  297. data/vendor/gems/parenting/lib/parenting/base.rb +65 -0
  298. data/vendor/gems/parenting/lib/parenting.rb +10 -0
  299. data/vendor/gems/parenting/parenting.gemspec +39 -0
  300. data/vendor/gems/parenting/script/console +10 -0
  301. data/vendor/gems/parenting/script/destroy +14 -0
  302. data/vendor/gems/parenting/script/generate +14 -0
  303. data/vendor/gems/parenting/test/file_to_eval.rb +9 -0
  304. data/vendor/gems/parenting/test/test_helper.rb +5 -0
  305. data/vendor/gems/parenting/test/test_parenting.rb +89 -0
  306. data/vendor/gems/suitcase/LICENSE +20 -0
  307. data/vendor/gems/suitcase/README.rdoc +31 -0
  308. data/vendor/gems/suitcase/Rakefile +57 -0
  309. data/vendor/gems/suitcase/VERSION.yml +4 -0
  310. data/vendor/gems/suitcase/lib/suitcase/unzipper.rb +15 -0
  311. data/vendor/gems/suitcase/lib/suitcase/zipper.rb +103 -0
  312. data/vendor/gems/suitcase/lib/suitcase.rb +5 -0
  313. data/vendor/gems/suitcase/suitcase.gemspec +52 -0
  314. data/vendor/gems/suitcase/test/suitcase_test.rb +89 -0
  315. data/vendor/gems/suitcase/test/test_dir/box.rb +1 -0
  316. data/vendor/gems/suitcase/test/test_dir/test.txt +1 -0
  317. data/vendor/gems/suitcase/test/test_helper.rb +12 -0
  318. metadata +428 -184
  319. data/Capfile +0 -1
  320. data/Manifest.txt +0 -404
  321. data/bin/cloud-add-access +0 -29
  322. data/bin/cloud-add-keypair +0 -28
  323. data/bin/cloud-maintain +0 -30
  324. data/bin/cloud-refresh +0 -17
  325. data/bin/server-list-responding +0 -24
  326. data/lib/poolparty/dependency_resolutions/base.rb +0 -12
  327. data/lib/poolparty/modules/configurable.rb +0 -36
  328. data/lib/poolparty/modules/method_missing_sugar.rb +0 -58
  329. data/lib/poolparty/monitors/monitors/cpu_monitor.rb +0 -15
  330. data/lib/poolparty/net/remote.rb +0 -38
  331. data/lib/poolparty/net/remoter.rb +0 -313
  332. data/lib/poolparty/plugins/line.rb +0 -77
  333. data/lib/poolparty/poolparty/resources/class_package.rb +0 -112
  334. data/lib/poolparty/poolparty/resources/conditional.rb +0 -67
  335. data/lib/poolparty/poolparty/resources/directory.rb +0 -26
  336. data/lib/poolparty/poolparty/resources/exec.rb +0 -28
  337. data/lib/poolparty/poolparty/resources/file.rb +0 -23
  338. data/lib/poolparty/poolparty/resources/package.rb +0 -24
  339. data/lib/poolparty/poolparty/resources/remote_file.rb +0 -26
  340. data/lib/poolparty/poolparty/resources/sshkey.rb +0 -23
  341. data/lib/poolparty/poolparty/resources/symlink.rb +0 -31
  342. data/lib/poolparty/poolparty/resources/variable.rb +0 -32
  343. data/lib/poolparty/provisioners/capistrano/recipies/master.rb +0 -112
  344. data/lib/poolparty/server/agent.rb +0 -59
  345. data/lib/poolparty/templates/puppet.conf +0 -28
  346. data/lib/poolparty/templates/puppetcleaner +0 -12
  347. data/lib/poolparty/templates/puppetrerun +0 -22
  348. data/poolparty.gemspec +0 -64
  349. data/spec/poolparty/dependency_resolutions/base_spec.rb +0 -11
  350. data/spec/poolparty/modules/configurable_spec.rb +0 -29
  351. data/spec/poolparty/poolparty/resources/class_package_spec.rb +0 -120
  352. data/spec/poolparty/poolparty/resources/conditional_spec.rb +0 -77
  353. data/spec/poolparty/poolparty/resources/cron_spec.rb +0 -50
  354. data/spec/poolparty/poolparty/resources/directory_spec.rb +0 -40
  355. data/spec/poolparty/poolparty/resources/exec_spec.rb +0 -37
  356. data/spec/poolparty/poolparty/resources/file_spec.rb +0 -40
  357. data/spec/poolparty/poolparty/resources/gem_spec.rb +0 -46
  358. data/spec/poolparty/poolparty/resources/host_spec.rb +0 -28
  359. data/spec/poolparty/poolparty/resources/package_spec.rb +0 -44
  360. data/spec/poolparty/poolparty/resources/remote_file_spec.rb +0 -40
  361. data/spec/poolparty/poolparty/resources/service_spec.rb +0 -45
  362. data/spec/poolparty/poolparty/resources/sshkey_spec.rb +0 -48
  363. data/spec/poolparty/poolparty/resources/symlink_spec.rb +0 -22
  364. data/spec/poolparty/poolparty/resources/user_spec.rb +0 -39
  365. data/spec/poolparty/poolparty/resources/variable_spec.rb +0 -24
  366. data/website/index.html +0 -107
  367. data/website/index.txt +0 -95
  368. data/website/stylesheets/code.css +0 -29
data/License.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2008 Ari Lerner
1
+ Copyright (c) 2009 Ari Lerner
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/PostInstall.txt CHANGED
@@ -1,4 +1,4 @@
1
- Get ready to jump in the pool, you just installed PoolParty! (Updated at 11:21 01/28/09)
1
+ Get ready to jump in the pool, you just installed PoolParty! (Updated at 19:34 03/02/09)
2
2
 
3
3
  To get started, run the generator:
4
4
 
data/README.txt CHANGED
@@ -49,7 +49,7 @@ sudo gem install auser-poolparty
49
49
  * Add queuing of tasks on the messenger
50
50
  * Add syntax checker on the manifests
51
51
  * Move in collectd support
52
- * Add master query
52
+ * Remove master-slave protocol
53
53
 
54
54
  == LICENSE:
55
55
 
data/Rakefile CHANGED
@@ -1,15 +1,17 @@
1
1
  require 'config/requirements'
2
- require 'config/hoe' # setup Hoe + all gem configuration
2
+ require 'config/jeweler' # setup gem configuration
3
3
 
4
4
  Dir['tasks/**/*.rake'].each { |rake| load rake }
5
5
 
6
6
  desc "Clean tmp directory"
7
7
  task :clean_tmp do |t|
8
- %x[rm #{File.dirname(__FILE__)}/Manifest.txt; touch #{File.dirname(__FILE__)}/Manifest.txt]
8
+ FileUtils.rm_rf("#{File.dirname(__FILE__)}/Manifest.txt") if ::File.exists?("#{File.dirname(__FILE__)}/Manifest.txt")
9
+ FileUtils.touch("#{File.dirname(__FILE__)}/Manifest.txt")
9
10
  %w(logs tmp).each do |dir|
10
11
  FileUtils.rm_rf("#{File.dirname(__FILE__)}/#{dir}") if ::File.exists?("#{File.dirname(__FILE__)}/#{dir}")
11
12
  end
12
13
  end
14
+
13
15
  desc "Remove the pkg directory"
14
16
  task :clean_pkg do |t|
15
17
  %w(pkg).each do |dir|
@@ -17,9 +19,6 @@ task :clean_pkg do |t|
17
19
  end
18
20
  end
19
21
 
20
- desc "Generate a new manifest and a new gem"
21
- task :build_local_gem => [:clean_tmp, :spec, :clean_pkg, :"manifest:refresh", :package]
22
-
23
22
  desc "Packge with timestamp"
24
23
  task :update_timestamp do
25
24
  data = open("PostInstall.txt").read
@@ -33,37 +32,14 @@ task :update_timestamp do
33
32
  ::File.open("PostInstall.txt", "w+") {|f| f << data }
34
33
  end
35
34
 
36
- desc "Release to github"
37
- task :github_release => [:clean_tmp, :spec, :clean_pkg, :"manifest:refresh", :update_timestamp, :package] do
38
- res = %x[rake debug_gem]
39
- res = res.split("\n")[1..-1].join("\n")
40
- ::File.open("#{GEM_NAME.downcase}.gemspec", "w+") do |f|
41
- f << res
42
- end
43
- `mv #{::File.expand_path(::File.dirname(__FILE__))}/pkg/*.gem #{::File.expand_path(::File.dirname(__FILE__))}/pkg/poolparty.gem`
44
- end
45
-
46
- desc "Generate gemspec"
47
- task :gemspec => [:spec, :clean_tmp, :"manifest:refresh", :build_local_gem] do |t|
48
- res = %x[rake debug_gem]
49
- res = res.split("\n")[1..-1].join("\n")
50
- ::File.open("#{GEM_NAME.downcase}.gemspec", "w+") do |f|
51
- f << res
52
- end
53
- end
54
-
55
- desc "Generate gemspec for github"
56
- task :gh => [:github_release] do
57
- filepath = ::File.join(::File.dirname(__FILE__), "poolparty.gemspec")
58
- data = open(filepath).read
59
- spec = eval("$SAFE = 3\n#{data}")
60
- yml = YAML.dump spec
61
- File.open(filepath, "w+") do |f|
62
- f << yml
63
- end
35
+ namespace :gem do
36
+ task(:build).prerequisites.unshift :gemspec # Prepend the gemspec generation
37
+
38
+ desc "Build the gem only if the specs pass"
39
+ task :test_then_build => [:spec, :build]
40
+
41
+ desc "Build and install the gem only if the specs pass"
42
+ task :test_then_install => [:spec, :install]
64
43
  end
65
44
 
66
- desc "Generate github gemspec and latest gem"
67
- task :ghgem => [:gh] do
68
- %x[sudo gem install pkg/poolparty.gem]
69
- end
45
+ task :release => [:update_timestamp]
data/VERSION.yml ADDED
@@ -0,0 +1,4 @@
1
+ ---
2
+ :patch: 1
3
+ :major: 1
4
+ :minor: 1
data/bin/cloud CHANGED
@@ -3,7 +3,8 @@ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
4
  require "poolpartycl"
5
5
 
6
- name = ARGV.select {|arg| arg if Binary.available_binaries_for("cloud").include?(arg) }.first
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)
7
8
  # If the options include -h and they don't include a valid command, then we can just pass the
8
9
  # original options back, but if they do contain a binary, we don't want -h getting through to
9
10
  # these options, so we'll strip it if it's included
@@ -25,7 +26,7 @@ command_line = "#{program_location}"
25
26
 
26
27
  # Run it from the command-line first
27
28
  if Binary.available_binaries_for("cloud").include?(name)
28
- system command_line, *ARGV
29
+ system command_line, *new_args
29
30
  else
30
31
  puts "Unknown poolparty binary: #{name}"
31
32
  end
@@ -0,0 +1,21 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
+ require "poolparty"
4
+ require "poolparty/provision/boot_strapper"
5
+
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
+ end
9
+
10
+ o.loaded_clouds.each do |cld|
11
+ # If an IP or DNS name is given, bootstrap that node, otherwise, bootstrap all running nodes.
12
+ nodes = !o.unflagged_args.empty? ? o.unflagged_args : cld.running_instance_ips
13
+ if nodes.empty?
14
+ puts "No nodes to bootstrap"
15
+ else
16
+ nodes.each do |address|
17
+ puts "\nBootStrapping: #{address}\n--------------------"
18
+ ::PoolParty::Provision::BootStrapper.new address, {:full_keypair_path => cld.keypair.full_filepath, :cloud => cld}
19
+ end
20
+ end
21
+ end
data/bin/cloud-configure CHANGED
@@ -1,17 +1,28 @@
1
1
  #!/usr/bin/env ruby
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
- require "poolpartycl"
4
+ # require "poolpartycl"
5
+
5
6
 
6
7
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- optioner.cloudnames
8
- # optioner.daemonizeable
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
11
+
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
+ nodes = !o.unflagged_args.empty? ? o.unflagged_args : cld.remote_instances_list.collect {|inst| inst.ip if inst.running? }.compact
15
+ if nodes.empty?
16
+ puts "No nodes to configure"
17
+ else
18
+ if o.inst_num?
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 "Configuring: #{address}"
23
+ ::PoolParty::Provision::DrConfigure.new( address, :full_keypair_path => cld.keypair.full_filepath, :cloud => cld )
24
+ end
25
+ end
26
+ end
9
27
  end
10
28
 
11
- o.loaded_clouds.each do |cloud|
12
-
13
- with_cloud(cloud) do
14
- verbose ? provisioner_for(master).configure(testing) : hide_output { provisioner_for(master).configure(testing) }
15
- cleanup_storage_directory unless testing
16
- end
17
- end
File without changes
data/bin/cloud-list CHANGED
@@ -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 "poolpartycl"
5
4
 
6
5
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
6
  opts.on('-f [remote|local]', '--from [remote|local]', 'Remote or local (default: local)') { |o| optioner.location o }
@@ -10,17 +9,15 @@ o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
10
9
  opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
11
10
  end
12
11
 
13
- o.loaded_clouds.each do |cloud|
12
+ o.loaded_clouds.each do |cld|
14
13
 
15
- with_cloud(cloud) do
16
- puts header("Listing cloud #{name}")
17
- puts subheader("Active instances")
18
- puts list_of_running_instances.map{|a| a.to_s}.join("\n")
19
- puts ""
20
- if list_of_pending_instances.size > 0
21
- puts subheader("Pending instances")
22
- puts list_of_pending_instances.map{|a| a.to_s}.join("\n")
23
- end
24
- end
14
+ puts header("Listing cloud #{cld.name}")
25
15
 
16
+ puts subheader("Active instances")
17
+ puts cld.list_of_running_instances.map{|a| a.to_s}.join("\n")
18
+
19
+ if cld.list_of_pending_instances.size > 0
20
+ puts subheader("Pending instances")
21
+ puts cld.list_of_pending_instances.map{|a| a.to_s}.join("\n")
22
+ end
26
23
  end
data/bin/cloud-osxcopy CHANGED
@@ -7,10 +7,11 @@ o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
7
  opts.on('-n name', '--name name', 'Copy the master ip for this cloud') { |c| optioner.cloudname c }
8
8
  end
9
9
 
10
- o.loaded_clouds.each do |cloud|
10
+ o.loaded_clouds.each do |cld|
11
11
 
12
- with_cloud(cloud, {:location => @location}) do
13
- Kernel.system "echo #{master.ip.chomp} | pbcopy"
14
- end
12
+ node = cld.list_of_running_instances.first
13
+ ip = node.ip
14
+ puts "ip: #{ip}"
15
+ Kernel.system "echo #{ip} | pbcopy"
15
16
 
16
17
  end
data/bin/cloud-provision CHANGED
@@ -1,34 +1,30 @@
1
1
  #!/usr/bin/env ruby
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
- require "poolpartycl"
4
+ require "poolparty/provision/boot_strapper"
5
5
 
6
6
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
7
  opts.on('-n cloudname', '--name name', 'Start cloud by this name') { |c| optioner.cloudname c }
8
- opts.on('-p', '--slave', 'Provision slave (default: false)') { optioner.provision_slave true }
9
- opts.on('-i num', '--id num', 'Instance num to provision') { |i| optioner.instance_number i }
8
+ opts.on('-i num', '--num i', 'Instance number') { |i| optioner.inst_num i.to_i }
10
9
  end
11
10
 
12
- o.loaded_clouds.each do |cloud|
13
-
14
- with_cloud(cloud) do
15
- setup_dev
16
- instance_num = instance_number.to_i if instance_number
17
-
18
- if instance_num
19
- @instance = get_instance_by_number( instance_num )
20
- instance_num == 0 ? provisioner_for(master).install(testing) : provisioner_for(@instance).install(testing)
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.remote_instances_list.collect {|inst| inst.ip if inst.running? }.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 )
21
20
  else
22
- if provision_slave
23
- vputs "Provisioning slaves"
24
- verbose ? provisioner_for(nil).install(testing) : hide_output { provisioner_for(nil).install(testing) }
25
- else
26
- vputs "Provisioning master"
27
- verbose ? provisioner_for(master).install(testing) : hide_output { provisioner_for(master).install(testing) }
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 )
28
26
  end
29
27
  end
30
-
31
- cleanup_storage_directory unless testing
32
28
  end
29
+ end
33
30
 
34
- end
data/bin/cloud-setup-dev CHANGED
@@ -7,19 +7,19 @@ o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
7
  opts.on('-n name', '--name name', 'Setup development environment for cloud named') { |c| optioner.cloudname c }
8
8
  end
9
9
 
10
- o.loaded_clouds.each do |cloud|
11
- with_cloud(cloud) do
12
-
13
- setup_dev
14
-
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
15
  str =<<-EOE
16
- Host #{name}-master
17
- User #{user}
18
- Hostname #{master.ip}
19
- IdentityFile #{full_keypair_path}
16
+ Host #{cld.name}-master
17
+ User #{cld.user}
18
+ Hostname #{cld.remote_instances_list.first.ip}
19
+ IdentityFile #{cld.keypair}
20
20
  EOE
21
-
21
+
22
22
  puts "Enter the following in your .ssh/config file"
23
23
  puts str
24
- end
24
+ end
25
25
  end
data/bin/cloud-spec CHANGED
@@ -29,7 +29,8 @@ o.loaded_clouds.each do |cloud|
29
29
  case testtype
30
30
  when "launch"
31
31
  when nil
32
- print_with_nice_printer("Starting live specing cloud #{name}")
32
+ print_with_nice_printer("Starting live specing cloud #{name}")
33
+ puts "TODO: this isn't implented yet."
33
34
  # hide_output {launch_and_configure_master!}
34
35
  print_with_nice_printer("Waiting for cloud to provision")
35
36
 
data/bin/cloud-ssh CHANGED
@@ -4,11 +4,20 @@ require "poolparty"
4
4
  require "poolpartycl"
5
5
 
6
6
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
+ optioner.options( :num => 0 )
7
8
  opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
8
- opts.on('-i num', '--id num', 'Instance num to ssh (default: 0)') { |i| optioner.num i }
9
+ opts.on('-i num', '--id num', 'Instance num to ssh (default: 0)') { |i| optioner.inst_num i.to_i }
9
10
  end
10
- load_pool(o.spec || Binary.get_existing_spec_location)
11
+ load_pool(o.spec? ? o.spec : Binary.get_existing_spec_location)
11
12
 
12
13
  @cloud = o.loaded_clouds.first
14
+ nodes = @cloud.list_of_running_instances
13
15
 
14
- @cloud.ssh_into_instance_number( o.num.to_i || 0 ) if @cloud
16
+ puts nodes.map {|a| a.to_s}.join("\n")
17
+
18
+ if !nodes.empty?
19
+ n = o.inst_num? ? o.inst_num : 0
20
+ @cloud.ssh_into( nodes[n].ip ) if @cloud
21
+ else
22
+ puts "No running instances can be found"
23
+ end
data/bin/cloud-start CHANGED
@@ -1,32 +1,28 @@
1
1
  #!/usr/bin/env ruby
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
- require "poolpartycl"
5
4
 
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- optioner.cloudnames
8
- optioner.daemonizeable
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 }
9
7
  end
10
8
 
11
- o.loaded_clouds.each do |cloud|
12
- with_cloud(cloud) do
13
- setup_dev
14
- vputs header("Starting cloud #{name}")
15
- vputs "#{list_of_running_instances.size} running instances (#{minimum_instances} - #{maximum_instances})"
16
- # if list_of_running_instances.size <= 1
17
- puts "Starting the master instance"
18
- # if testing
19
- # puts("\tNot launching while in testing mode")
20
- # else
21
- vputs "Launching and configuring the master"
22
- @cl = self
23
- daemon ? daemonize {@cl.launch_and_configure_master!} : launch_and_configure_master!
24
- # end
25
- # end
26
- when_no_pending_instances do
27
- puts open(::File.join(File.dirname(__FILE__), "..", "lib", "poolparty", "config", "postlaunchmessage.txt")).read ^ {:master_ip => master.ip.chomp}
28
- clear_base_directory unless testing
9
+ o.loaded_clouds.each do |cld|
10
+ if cld.list_of_running_instances.size.zero?
11
+ puts header("Starting cloud #{cld.name}")
12
+ puts "#{cld.list_of_running_instances.size} running instances (#{cld.minimum_instances} - #{cld.maximum_instances})"
13
+
14
+ cld.launch_instance! do |node|
15
+ ::PoolParty::Provision::BootStrapper.new(node.ip, :full_keypair_path => cld.keypair.full_filepath, :cloud => cld)
16
+ ::PoolParty::Provision::DrConfigure.new(node.ip, :full_keypair_path => cld.keypair.full_filepath, :cloud => cld)
17
+
18
+ puts <<-EOM
19
+ Your cloud has started. Your ip is #{node.ip}
20
+ EOM
29
21
  end
30
- end
31
22
 
23
+ else
24
+ puts <<-EOE
25
+ Your cloud is already running.
26
+ EOE
27
+ end
32
28
  end
data/bin/cloud-terminate CHANGED
@@ -13,7 +13,7 @@ o.loaded_clouds.each do |cloud|
13
13
 
14
14
  list_of_running_instances.each do |inst|
15
15
  puts "Shutting down #{inst.instance_id}"
16
- terminate_instance!(inst.instance_id)
16
+ terminate_instance!(:instance_id => inst.instance_id)
17
17
  end
18
18
 
19
19
  end
@@ -0,0 +1,24 @@
1
+ #!/usr/bin/env ruby
2
+ require 'rubygems'
3
+ require 'EC2' #rescue `gem install -y grempe-amazon-ec2`
4
+ aws_keys = {}
5
+ aws_keys = YAML::load( File.open('/etc/poolparty/aws_keys.yml') ) rescue 'No aws_keys.yml file. Will try to use enviornment variables'
6
+
7
+ ACCESS_KEY_ID = aws_keys[:access_key] || ENV['AMAZON_ACCESS_KEY_ID'] || ENV['AWS_ACCESS_KEY']
8
+ SECRET_ACCESS_KEY = aws_keys[:secret_access_key] || ENV['AMAZON_SECRET_ACCESS_KEY'] || ENV['AWS_SECRET_ACCESS_KEY']
9
+
10
+ if ENV['EC2_URL']
11
+ ec2 = EC2::Base.new( :access_key_id => ACCESS_KEY_ID, :secret_access_key => SECRET_ACCESS_KEY, :server => URI.parse(ENV['EC2_URL']).host )
12
+ else
13
+ # default server is US ec2.amazonaws.com
14
+ ec2 = EC2::Base.new( :access_key_id => ACCESS_KEY_ID, :secret_access_key => SECRET_ACCESS_KEY )
15
+ end
16
+
17
+ response = ec2.describe_instances
18
+
19
+ public_dns_names = response.reservationSet.item.first.instancesSet.item.collect do |instance|
20
+ p instance
21
+ instance.dnsName if instance.instanceState.name == 'running'
22
+ end.compact
23
+
24
+ puts public_dns_names.join("\t")
@@ -16,7 +16,7 @@ include Remote
16
16
  @clouds.each do |cl|
17
17
 
18
18
  with_cloud(cl, {:testing => o.testing}) do
19
- cmd = "hostname master && #{PoolParty::Remote::RemoteInstance.puppet_runner_command}"
19
+ cmd = "hostname master && #{PoolParty::Remote::RemoteInstance.dependency_resolver_comand}"
20
20
  %x[#{cmd}] unless testing
21
21
  after_launch_master
22
22
  end
@@ -0,0 +1,25 @@
1
+ #!/usr/bin/env ruby
2
+ # based on snippet from ciconia
3
+ # http://snippets.dzone.com/posts/show/2265
4
+
5
+ require 'fileutils'
6
+ require File.dirname(__FILE__)+'/../vendor/gems/butterfly/lib/butterfly.rb'
7
+ require 'rack'
8
+
9
+ monitor_dir = ::File.join(::File.dirname(__FILE__),'..','lib/poolparty/monitors/')
10
+ require(::File.join(monitor_dir, 'stats_monitor_adaptor.rb') )
11
+ opts ={ :adaptor_opts => {
12
+ :file => ::File.join(monitor_dir, 'stats_monitor_adaptor.rb')},
13
+ :port => PoolParty::Default.butterfly_port
14
+ }
15
+
16
+ app = Rack::Builder.new do
17
+ use Rack::ShowExceptions
18
+ # use Rack::Lint
19
+ run Butterfly::Server.new(opts)
20
+ end
21
+
22
+ # pid = fork do
23
+ Rack::Handler::Thin.run(app, :Port => PoolParty::Default.butterfly_port)
24
+ # end
25
+ # Process.detach pid
@@ -11,5 +11,5 @@ end
11
11
  o.loaded_clouds.each do |cloud|
12
12
  # @nodes = cloud.messenger_send!("get_current_nodes")
13
13
  # @nodes = @nodes.split(" ").map {|a| a.split(/@/)[-1] }
14
- PoolParty::Ruberl::Base.new(cloud.master, Base.messenger_client_port).messenger_send!("clear_cert_for #{cloud.for}")
14
+ PoolParty::Ruberl::Base.new(cloud.master, Default.messenger_client_port).messenger_send!("clear_cert_for #{cloud.for}")
15
15
  end
@@ -0,0 +1,26 @@
1
+ #!/usr/bin/env ruby
2
+ require "rubygems"
3
+ require 'net/http'
4
+ require 'json'
5
+ require "poolparty/lite"
6
+
7
+ vote_for = ARGV.shift || "none" # or pending or terminated
8
+ schema = ::PoolParty.load_cloud_from_json(ARGV.shift) #TODO: smarter option parser
9
+ remote_base_name = schema.options.remote_base.split('::')[-1].camelcase
10
+ remoter_base = PoolParty::Remote.module_eval(remote_base_name)
11
+ require 'rubygems'; require 'ruby-debug'; debugger
12
+
13
+ case vote_for
14
+ when "expand"
15
+ # PoolParty.log << "Launching new instance"
16
+ remoter_base.send :launch_new_instance!, schema.options do |node|
17
+ ::PoolParty::Provision::BootStrapper.new( node[:ip], :full_keypair_path => cld.keypair.full_filepath, :cloud => schema.options )
18
+ ::PoolParty::Provision::DrConfigure.new( node[:ip], :full_keypair_path => cld.keypair.full_filepath, :cloud => schema.options )
19
+ end
20
+ when "contract"
21
+ last_instance_id = %x[/usr/bin/server-list-active instance_id].split("\t").last
22
+ remoter_base.terminate_instance! schema.options.merge(:instance_id => last_instance_id)
23
+ else
24
+ puts "Unknown action: #{vote_for}"
25
+ end
26
+
@@ -20,8 +20,7 @@ o.loaded_clouds.each do |cloud|
20
20
  next if node == "master"
21
21
  # @tp.process do
22
22
  str = returning Array.new do |s|
23
- s << "/usr/sbin/puppetca --clean #{node}.compute-1.internal"
24
- s << "/usr/sbin/puppetca --clean #{node}.ec2.internal"
23
+ s << cloud.dependency_resolver_command
25
24
  end.join(";")
26
25
 
27
26
  node_id = node.gsub(/node/, '')
data/bin/server-get-load CHANGED
@@ -1,18 +1,15 @@
1
1
  #!/usr/bin/env ruby
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
- require "poolparty"
4
- require "poolpartycl"
3
+ require "poolparty/lite"
4
+ Dir["#{File.dirname(__FILE__)}/../lib/poolparty/monitors/base_monitor.rb"].each {|f| require f}
5
5
 
6
- available_monitors = PoolParty::Monitors.available_monitors
7
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
8
- # opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
9
- opts.on('-m name', '--monitor monitor_name', "Monitor name (default: cpu) (Available monitors: #{available_monitors.join(", ")})") {|c| optioner.monitorname c}
10
- end
6
+ monitor = ARGV.pop || "cpu"
11
7
 
12
- @monitor = o.monitorname ? o.monitorname : "cpu"
8
+ begin
9
+ Dir["#{File.dirname(__FILE__)}/../lib/poolparty/monitors/monitors/#{monitor}_monitor.rb"].each {|f| require f}
13
10
 
14
- if PoolParty::Monitors.available_monitors.include?(@monitor.downcase.to_sym)
15
- print "PoolParty::Monitors::#{@monitor.capitalize}Monitor".constantize.run.to_f
16
- else
17
- puts "Unknown monitor"
11
+ klass = eval("PoolParty::Monitors::#{monitor.capitalize}Monitor")
12
+ print (klass.send :run).to_f rescue -1.0
13
+ rescue Exception => e
14
+ puts -1.0
18
15
  end
@@ -1,18 +1,26 @@
1
1
  #!/usr/bin/env ruby
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
- require "poolparty"
4
- require "poolpartycl"
3
+ require "poolparty/lite"
5
4
 
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-c name', '--class name', 'Listing for cloud class (valid args: [name|ip])') { |t| optioner.classname t }
8
- opts.on('-n name', '--name name', 'Listing for cloud name') { |c| optioner.cloudname c }
9
- end
5
+ list_type = ARGV.shift || "ip"
6
+
7
+ json_file = ARGV[0] || PoolParty::Default.properties_hash_file
8
+ raise "ERROR: no json_file given" if !json_file
9
+ schema = PoolParty::Schema.new( ::File.read(json_file) )
10
+
11
+ remoter_base = schema.options.remote_base
10
12
 
11
- @ctype = (o.classname || "name").downcase.to_sym
13
+ instances = PoolParty::Remote::Ec2.describe_instances(schema.options)
14
+ inst_array = instances.map {|inst| inst.send list_type.to_sym }
15
+
16
+ print_array =
17
+ case list_type
18
+ when "ip"
19
+ inst_array.select {|a| a =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/}
20
+ when "internal_ip"
21
+ inst_array.compact.map {|ip| ip.gsub(/ip-/, '').gsub(/\.ec2\.internal/, '').gsub(/-/, '.') }
22
+ else
23
+ inst_array
24
+ end
12
25
 
13
- o.loaded_clouds.each do |cloud|
14
- with_cloud(cloud, {:ctype => @ctype}) do
15
- print "#{list_of_running_instances.collect{|a| "#{a.send ctype}" }.join("\t")}"
16
- end
17
-
18
- end
26
+ print print_array.compact.join("\t")
@@ -0,0 +1,15 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
+ require "poolparty/lite"
4
+
5
+ status = ARGV.shift || "running" # or pending or terminated
6
+ schema = ::PoolParty.load_cloud_from_json(ARGV.shift) #TODO: smarter option parser
7
+
8
+ remoter_base = schema.options.remote_base
9
+
10
+ instances = Kernel.const_get(remoter_base.camelcase).send :describe_instances, schema.options
11
+
12
+ print instances.select {|inst| inst.status == status }.join("\t")
13
+
14
+ # usage:
15
+ # server-list-instances status