fairchild-poolparty 1.1.4 → 1.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (333) hide show
  1. data/README.txt +0 -12
  2. data/Rakefile +17 -1
  3. data/VERSION.yml +1 -1
  4. data/bin/cloud +20 -1
  5. data/bin/cloud-bootstrap +14 -4
  6. data/bin/cloud-configure +26 -9
  7. data/bin/cloud-contract +7 -7
  8. data/bin/cloud-describe +28 -0
  9. data/bin/cloud-expand +13 -6
  10. data/bin/cloud-list +3 -5
  11. data/bin/cloud-osxcopy +1 -1
  12. data/bin/cloud-provision +1 -1
  13. data/bin/cloud-show +6 -5
  14. data/bin/cloud-ssh +1 -3
  15. data/bin/cloud-start +8 -6
  16. data/bin/cloud-terminate +9 -7
  17. data/bin/server-cloud-elections +29 -18
  18. data/bin/server-ensure-provisioning +24 -29
  19. data/bin/server-list-active +10 -5
  20. data/bin/server-monitor.ru +18 -1
  21. data/bin/server-update-hosts +3 -3
  22. data/bin/server-write-new-nodes +1 -1
  23. data/config/jeweler.rb +12 -3
  24. data/lib/poolparty/aska/aska.rb +1 -12
  25. data/lib/poolparty/base_packages/haproxy.rb +26 -18
  26. data/lib/poolparty/base_packages/poolparty.rb +1 -1
  27. data/lib/poolparty/capistrano.rb +1 -1
  28. data/lib/poolparty/core/array.rb +12 -0
  29. data/lib/poolparty/core/hash.rb +12 -5
  30. data/lib/poolparty/core/nil.rb +8 -0
  31. data/lib/poolparty/core/object.rb +15 -5
  32. data/lib/poolparty/core/string.rb +28 -2
  33. data/lib/poolparty/dependency_resolver/chef_resolver.rb +106 -79
  34. data/lib/poolparty/dependency_resolver/dependency_resolver.rb +1 -1
  35. data/lib/poolparty/dependency_resolver/dependency_resolver_cloud_extensions.rb +5 -4
  36. data/lib/poolparty/dependency_resolver/puppet_resolver.rb +44 -17
  37. data/lib/poolparty/helpers/console.rb +1 -1
  38. data/lib/poolparty/helpers/optioner.rb +9 -2
  39. data/lib/poolparty/lite.rb +12 -2
  40. data/lib/poolparty/modules/callbacks.rb +44 -0
  41. data/lib/poolparty/modules/cloud_dsl.rb +17 -11
  42. data/lib/poolparty/modules/cloud_resourcer.rb +29 -21
  43. data/lib/poolparty/modules/definable_resource.rb +1 -1
  44. data/lib/poolparty/modules/pinger.rb +28 -0
  45. data/lib/poolparty/modules/resourcing_dsl.rb +7 -3
  46. data/lib/poolparty/modules/thread_pool.rb +107 -106
  47. data/lib/poolparty/modules/user_helpers.rb +20 -0
  48. data/lib/poolparty/monitors/base_monitor.rb +32 -81
  49. data/lib/poolparty/monitors/monitor_rack.rb +60 -69
  50. data/lib/poolparty/monitors/monitors/favicon_monitor.rb +12 -0
  51. data/lib/poolparty/monitors/monitors/load_monitor.rb +9 -15
  52. data/lib/poolparty/monitors/monitors/memory_monitor.rb +48 -48
  53. data/lib/poolparty/monitors/monitors/neighborhood_monitor.rb +77 -0
  54. data/lib/poolparty/monitors/{stats_monitor.rb → monitors/stats_monitor.rb} +29 -24
  55. data/lib/poolparty/monitors/monitors/time_monitor.rb +15 -0
  56. data/lib/poolparty/net/messenger.rb +2 -0
  57. data/lib/poolparty/net/remoter/cloud_control.rb +177 -227
  58. data/lib/poolparty/net/remoter/connections.rb +10 -18
  59. data/lib/poolparty/net/remoter/interactive.rb +24 -90
  60. data/lib/poolparty/net/remoter_base.rb +98 -25
  61. data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +83 -66
  62. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vm_disk.rb +12 -0
  63. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx.rb +33 -0
  64. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx_file.rb +117 -0
  65. data/lib/poolparty/net/remoter_bases/vmrun/vmrun.rb +165 -0
  66. data/lib/poolparty/net/remoter_bases/vmrun/vmrun_instance.rb +71 -0
  67. data/lib/poolparty/{base_packages → plugins}/bind.rb +1 -1
  68. data/lib/poolparty/plugins/chef.rb +71 -71
  69. data/lib/poolparty/plugins/chef_deploy.rb +58 -0
  70. data/lib/poolparty/plugins/{deploydirectory.rb → deploy_directory.rb} +12 -3
  71. data/lib/poolparty/plugins/dynomite.rb +14 -0
  72. data/lib/poolparty/plugins/gem_package.rb +37 -0
  73. data/lib/poolparty/plugins/line_in_file.rb +1 -0
  74. data/lib/poolparty/plugins/nanite.rb +41 -0
  75. data/lib/poolparty/{base_packages → plugins}/tokyo_tyrant.rb +1 -1
  76. data/lib/poolparty/poolparty/cloud.rb +36 -35
  77. data/lib/poolparty/poolparty/default.rb +2 -11
  78. data/lib/poolparty/poolparty/key.rb +15 -12
  79. data/lib/poolparty/poolparty/neighborhoods.rb +54 -21
  80. data/lib/poolparty/poolparty/plugin.rb +6 -9
  81. data/lib/poolparty/poolparty/plugin_model.rb +5 -5
  82. data/lib/poolparty/poolparty/pool.rb +8 -4
  83. data/lib/poolparty/poolparty/poolparty_base_class.rb +20 -11
  84. data/lib/poolparty/poolparty/resource.rb +9 -5
  85. data/lib/poolparty/poolparty/service.rb +3 -1
  86. data/lib/poolparty/provision/boot_strapper.rb +47 -24
  87. data/lib/poolparty/provision/configurations/chef.rb +7 -4
  88. data/lib/poolparty/provision/dr_configure.rb +80 -25
  89. data/lib/poolparty/resources/cron.rb +8 -0
  90. data/lib/poolparty/resources/directory.rb +1 -1
  91. data/lib/poolparty/resources/file.rb +16 -0
  92. data/lib/poolparty/resources/package.rb +7 -2
  93. data/lib/poolparty/resources/service.rb +4 -3
  94. data/lib/poolparty/resources/symlink.rb +0 -8
  95. data/lib/poolparty/schema.rb +35 -20
  96. data/lib/poolparty/templates/haproxy.conf +27 -25
  97. data/lib/poolparty/templates/monitor.ru +3 -3
  98. data/lib/poolparty/verification/verifier_base.rb +17 -0
  99. data/lib/poolparty/verification/verifiers/ping.rb +17 -0
  100. data/lib/poolparty/verification/verify.rb +74 -0
  101. data/lib/poolparty.rb +8 -9
  102. data/lib/poolpartycl.rb +14 -0
  103. data/spec/bin/server-list-active_spec.rb +2 -0
  104. data/spec/poolparty/base_packages/haproxy_spec.rb +1 -1
  105. data/spec/poolparty/core/array_spec.rb +3 -1
  106. data/spec/poolparty/core/ordered_hash_spec.rb +2 -2
  107. data/spec/poolparty/dependency_resolver/chef_resolver_spec.rb +9 -15
  108. data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +6 -6
  109. data/spec/poolparty/dependency_resolver/puppet_resolver_spec.rb +121 -124
  110. data/spec/poolparty/net/remote_spec.rb +287 -286
  111. data/spec/poolparty/net/remoter_bases/ec2_mocks_and_stubs.rb +1 -1
  112. data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +7 -8
  113. data/spec/poolparty/net/remoter_bases/ec2_spec.rb +22 -7
  114. data/spec/poolparty/net/remoter_spec.rb +48 -45
  115. data/spec/poolparty/poolparty/cloud_spec.rb +15 -22
  116. data/spec/poolparty/poolparty/key_spec.rb +4 -4
  117. data/spec/poolparty/poolparty/neighborhoods_spec.rb +1 -2
  118. data/spec/poolparty/poolparty/plugin_spec.rb +2 -2
  119. data/spec/poolparty/poolparty/resource_spec.rb +4 -5
  120. data/spec/poolparty/poolparty_base_class_spec.rb +82 -78
  121. data/spec/poolparty/resources/package_spec.rb +0 -3
  122. data/spec/poolparty/spec_helper.rb +4 -4
  123. data/tasks/development.rake +9 -0
  124. data/test/poolparty/core/array_test.rb +21 -0
  125. data/test/poolparty/core/hash_test.rb +14 -1
  126. data/test/poolparty/core/string_test.rb +29 -0
  127. data/test/poolparty/dependency_resolver/puppet_resolver_test.rb +106 -0
  128. data/test/poolparty/modules/callbacks_test.rb +40 -0
  129. data/test/poolparty/modules/cloud_dsl_test.rb +25 -0
  130. data/test/poolparty/net/remoter_bases/vmrun/vmrun_test.rb +50 -0
  131. data/test/poolparty/net/remoter_test.rb +14 -0
  132. data/test/poolparty/poolparty/neighborhood_test.rb +23 -0
  133. data/test/poolparty/poolparty/poolparty_base_class_test.rb +84 -0
  134. data/test/poolparty/verification/verify_test.rb +49 -0
  135. data/test/test_helper.rb +4 -1
  136. data/test/test_poolparty.rb +6 -5
  137. data/vendor/chef/apache2/attributes/apache.rb +1 -1
  138. data/vendor/chef/apache2/templates/default/default-site.erb +1 -1
  139. data/vendor/chef/chef-deploy/LICENSE +201 -0
  140. data/vendor/chef/chef-deploy/README.rdoc +24 -0
  141. data/vendor/chef/chef-deploy/Rakefile +57 -0
  142. data/vendor/chef/chef-deploy/TODO +4 -0
  143. data/vendor/chef/chef-deploy/lib/chef-deploy/cached_deploy.rb +230 -0
  144. data/vendor/chef/chef-deploy/lib/chef-deploy/git.rb +132 -0
  145. data/vendor/chef/chef-deploy/lib/chef-deploy/subversion.rb +98 -0
  146. data/vendor/chef/chef-deploy/lib/chef-deploy.rb +183 -0
  147. metadata +57 -252
  148. data/bin/cloud-run +0 -18
  149. data/bin/cloud-stats +0 -17
  150. data/bin/ec2-list-active +0 -24
  151. data/bin/pool +0 -31
  152. data/bin/pool-describe +0 -8
  153. data/bin/pool-generate +0 -18
  154. data/bin/pool-init +0 -28
  155. data/bin/pool-list +0 -30
  156. data/bin/pool-start +0 -26
  157. data/bin/server-list-instances +0 -15
  158. data/lib/erlang/messenger/Emakefile +0 -1
  159. data/lib/erlang/messenger/Makefile +0 -15
  160. data/lib/erlang/messenger/README +0 -5
  161. data/lib/erlang/messenger/Rakefile +0 -72
  162. data/lib/erlang/messenger/control +0 -11
  163. data/lib/erlang/messenger/ebin/client.app +0 -19
  164. data/lib/erlang/messenger/ebin/master.app +0 -19
  165. data/lib/erlang/messenger/ebin/node.app +0 -19
  166. data/lib/erlang/messenger/ebin/packager.app +0 -19
  167. data/lib/erlang/messenger/ebin/pm_client_rel-0.1.rel +0 -1
  168. data/lib/erlang/messenger/ebin/pm_master_rel-0.1.rel +0 -1
  169. data/lib/erlang/messenger/ebin/pm_node_rel-0.1.rel +0 -1
  170. data/lib/erlang/messenger/include/defines.hrl +0 -27
  171. data/lib/erlang/messenger/lib/eunit/AUTHORS +0 -2
  172. data/lib/erlang/messenger/lib/eunit/CHANGELOG +0 -14
  173. data/lib/erlang/messenger/lib/eunit/COPYING +0 -504
  174. data/lib/erlang/messenger/lib/eunit/Makefile +0 -28
  175. data/lib/erlang/messenger/lib/eunit/NOTES +0 -276
  176. data/lib/erlang/messenger/lib/eunit/README +0 -3
  177. data/lib/erlang/messenger/lib/eunit/doc/edoc-info +0 -3
  178. data/lib/erlang/messenger/lib/eunit/doc/erlang.png +0 -0
  179. data/lib/erlang/messenger/lib/eunit/doc/eunit.html +0 -172
  180. data/lib/erlang/messenger/lib/eunit/doc/index.html +0 -17
  181. data/lib/erlang/messenger/lib/eunit/doc/modules-frame.html +0 -12
  182. data/lib/erlang/messenger/lib/eunit/doc/overview-summary.html +0 -984
  183. data/lib/erlang/messenger/lib/eunit/doc/overview.edoc +0 -980
  184. data/lib/erlang/messenger/lib/eunit/doc/packages-frame.html +0 -11
  185. data/lib/erlang/messenger/lib/eunit/doc/stylesheet.css +0 -55
  186. data/lib/erlang/messenger/lib/eunit/ebin/autoload.beam +0 -0
  187. data/lib/erlang/messenger/lib/eunit/ebin/code_monitor.beam +0 -0
  188. data/lib/erlang/messenger/lib/eunit/ebin/eunit.app +0 -21
  189. data/lib/erlang/messenger/lib/eunit/ebin/eunit.appup +0 -1
  190. data/lib/erlang/messenger/lib/eunit/ebin/eunit.beam +0 -0
  191. data/lib/erlang/messenger/lib/eunit/ebin/eunit_autoexport.beam +0 -0
  192. data/lib/erlang/messenger/lib/eunit/ebin/eunit_data.beam +0 -0
  193. data/lib/erlang/messenger/lib/eunit/ebin/eunit_lib.beam +0 -0
  194. data/lib/erlang/messenger/lib/eunit/ebin/eunit_proc.beam +0 -0
  195. data/lib/erlang/messenger/lib/eunit/ebin/eunit_serial.beam +0 -0
  196. data/lib/erlang/messenger/lib/eunit/ebin/eunit_server.beam +0 -0
  197. data/lib/erlang/messenger/lib/eunit/ebin/eunit_striptests.beam +0 -0
  198. data/lib/erlang/messenger/lib/eunit/ebin/eunit_test.beam +0 -0
  199. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tests.beam +0 -0
  200. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tty.beam +0 -0
  201. data/lib/erlang/messenger/lib/eunit/ebin/file_monitor.beam +0 -0
  202. data/lib/erlang/messenger/lib/eunit/examples/eunit_examples.erl +0 -339
  203. data/lib/erlang/messenger/lib/eunit/examples/fib.erl +0 -19
  204. data/lib/erlang/messenger/lib/eunit/examples/tests.txt +0 -1
  205. data/lib/erlang/messenger/lib/eunit/include/eunit.hrl +0 -313
  206. data/lib/erlang/messenger/lib/eunit/src/Makefile +0 -46
  207. data/lib/erlang/messenger/lib/eunit/src/autoload.erl +0 -388
  208. data/lib/erlang/messenger/lib/eunit/src/code_monitor.erl +0 -243
  209. data/lib/erlang/messenger/lib/eunit/src/eunit.app.src +0 -21
  210. data/lib/erlang/messenger/lib/eunit/src/eunit.appup.src +0 -1
  211. data/lib/erlang/messenger/lib/eunit/src/eunit.erl +0 -196
  212. data/lib/erlang/messenger/lib/eunit/src/eunit_autoexport.erl +0 -102
  213. data/lib/erlang/messenger/lib/eunit/src/eunit_data.erl +0 -798
  214. data/lib/erlang/messenger/lib/eunit/src/eunit_internal.hrl +0 -48
  215. data/lib/erlang/messenger/lib/eunit/src/eunit_lib.erl +0 -682
  216. data/lib/erlang/messenger/lib/eunit/src/eunit_proc.erl +0 -552
  217. data/lib/erlang/messenger/lib/eunit/src/eunit_serial.erl +0 -157
  218. data/lib/erlang/messenger/lib/eunit/src/eunit_server.erl +0 -340
  219. data/lib/erlang/messenger/lib/eunit/src/eunit_striptests.erl +0 -64
  220. data/lib/erlang/messenger/lib/eunit/src/eunit_test.erl +0 -334
  221. data/lib/erlang/messenger/lib/eunit/src/eunit_tests.erl +0 -45
  222. data/lib/erlang/messenger/lib/eunit/src/eunit_tty.erl +0 -272
  223. data/lib/erlang/messenger/lib/eunit/src/file_monitor.erl +0 -409
  224. data/lib/erlang/messenger/lib/eunit/sys.config +0 -9
  225. data/lib/erlang/messenger/lib/eunit/vsn.mk +0 -1
  226. data/lib/erlang/messenger/pm_client_rel-0.1.boot +0 -0
  227. data/lib/erlang/messenger/pm_client_rel-0.1.script +0 -238
  228. data/lib/erlang/messenger/pm_master_rel-0.1.boot +0 -0
  229. data/lib/erlang/messenger/pm_master_rel-0.1.script +0 -239
  230. data/lib/erlang/messenger/pm_node_rel-0.1.boot +0 -0
  231. data/lib/erlang/messenger/pm_node_rel-0.1.script +0 -237
  232. data/lib/erlang/messenger/src/client_app.erl +0 -39
  233. data/lib/erlang/messenger/src/client_server.erl +0 -60
  234. data/lib/erlang/messenger/src/master_app.erl +0 -39
  235. data/lib/erlang/messenger/src/node_app.erl +0 -39
  236. data/lib/erlang/messenger/src/pm_client.erl +0 -49
  237. data/lib/erlang/messenger/src/pm_client_supervisor.erl +0 -38
  238. data/lib/erlang/messenger/src/pm_cluster.erl +0 -61
  239. data/lib/erlang/messenger/src/pm_event_manager.erl +0 -27
  240. data/lib/erlang/messenger/src/pm_master.erl +0 -215
  241. data/lib/erlang/messenger/src/pm_master_event_handler.erl +0 -72
  242. data/lib/erlang/messenger/src/pm_master_supervisor.erl +0 -39
  243. data/lib/erlang/messenger/src/pm_node.erl +0 -200
  244. data/lib/erlang/messenger/src/pm_node_supervisor.erl +0 -38
  245. data/lib/erlang/messenger/src/pm_packager.erl +0 -76
  246. data/lib/erlang/messenger/src/pm_spawner.erl +0 -213
  247. data/lib/erlang/messenger/src/pm_strings.erl +0 -11
  248. data/lib/erlang/messenger/src/utils.erl +0 -72
  249. data/lib/erlang/messenger/useful_snippets +0 -17
  250. data/lib/poolparty/monitors/monitors/server_monitor.rb +0 -7
  251. data/lib/poolparty/monitors/monitors/web_monitor.rb +0 -18
  252. data/lib/poolparty/monitors/neighborhood_monitor.rb +0 -24
  253. data/lib/poolparty/monitors.rb +0 -6
  254. data/lib/poolparty/net/remoter/lists.rb +0 -12
  255. data/lib/poolparty/poolparty/custom_resource.rb +0 -45
  256. data/lib/poolparty/resources/custom_service.rb +0 -30
  257. data/lib/poolparty/services/gem_package.rb +0 -52
  258. data/lib/poolparty/version.rb +0 -15
  259. data/spec/poolparty/plugins/svn_spec.rb +0 -16
  260. data/spec/poolparty/poolparty/custom_resource_spec.rb +0 -79
  261. data/vendor/gems/butterfly/History.txt +0 -4
  262. data/vendor/gems/butterfly/PostInstall.txt +0 -2
  263. data/vendor/gems/butterfly/README.rdoc +0 -48
  264. data/vendor/gems/butterfly/Rakefile +0 -62
  265. data/vendor/gems/butterfly/VERSION.yml +0 -4
  266. data/vendor/gems/butterfly/bin/flutter +0 -4
  267. data/vendor/gems/butterfly/butterfly.gemspec +0 -37
  268. data/vendor/gems/butterfly/examples/config.ru +0 -15
  269. data/vendor/gems/butterfly/examples/my_app.rb +0 -12
  270. data/vendor/gems/butterfly/lib/butterfly.rb +0 -14
  271. data/vendor/gems/butterfly/lib/handler.rb +0 -48
  272. data/vendor/gems/butterfly/lib/request.rb +0 -29
  273. data/vendor/gems/butterfly/lib/response.rb +0 -49
  274. data/vendor/gems/butterfly/script/console +0 -10
  275. data/vendor/gems/butterfly/script/destroy +0 -14
  276. data/vendor/gems/butterfly/script/generate +0 -14
  277. data/vendor/gems/butterfly/test/test_adapter_base.rb +0 -23
  278. data/vendor/gems/butterfly/test/test_butterfly_request.rb +0 -46
  279. data/vendor/gems/butterfly/test/test_butterfly_response.rb +0 -43
  280. data/vendor/gems/butterfly/test/test_butterfly_server.rb +0 -16
  281. data/vendor/gems/butterfly/test/test_default.rb +0 -12
  282. data/vendor/gems/butterfly/test/test_helper.rb +0 -6
  283. data/vendor/gems/dslify/History.txt +0 -4
  284. data/vendor/gems/dslify/Manifest.txt +0 -25
  285. data/vendor/gems/dslify/PostInstall.txt +0 -5
  286. data/vendor/gems/dslify/README.txt +0 -60
  287. data/vendor/gems/dslify/Rakefile +0 -56
  288. data/vendor/gems/dslify/config/hoe.rb +0 -73
  289. data/vendor/gems/dslify/config/requirements.rb +0 -15
  290. data/vendor/gems/dslify/dslify.gemspec +0 -40
  291. data/vendor/gems/dslify/lib/dslify/dslify.rb +0 -69
  292. data/vendor/gems/dslify/lib/dslify/version.rb +0 -10
  293. data/vendor/gems/dslify/lib/dslify.rb +0 -7
  294. data/vendor/gems/dslify/script/console +0 -10
  295. data/vendor/gems/dslify/script/destroy +0 -14
  296. data/vendor/gems/dslify/script/generate +0 -14
  297. data/vendor/gems/dslify/script/txt2html +0 -82
  298. data/vendor/gems/dslify/setup.rb +0 -1585
  299. data/vendor/gems/dslify/tasks/deployment.rake +0 -34
  300. data/vendor/gems/dslify/tasks/environment.rake +0 -7
  301. data/vendor/gems/dslify/tasks/website.rake +0 -17
  302. data/vendor/gems/dslify/test/test_dslify.rb +0 -114
  303. data/vendor/gems/dslify/website/index.html +0 -86
  304. data/vendor/gems/dslify/website/index.txt +0 -83
  305. data/vendor/gems/dslify/website/javascripts/rounded_corners_lite.inc.js +0 -285
  306. data/vendor/gems/dslify/website/stylesheets/screen.css +0 -138
  307. data/vendor/gems/dslify/website/template.html.erb +0 -48
  308. data/vendor/gems/parenting/History.txt +0 -4
  309. data/vendor/gems/parenting/Manifest.txt +0 -13
  310. data/vendor/gems/parenting/PostInstall.txt +0 -2
  311. data/vendor/gems/parenting/README.rdoc +0 -47
  312. data/vendor/gems/parenting/Rakefile +0 -28
  313. data/vendor/gems/parenting/lib/parenting/base.rb +0 -65
  314. data/vendor/gems/parenting/lib/parenting.rb +0 -10
  315. data/vendor/gems/parenting/parenting.gemspec +0 -39
  316. data/vendor/gems/parenting/script/console +0 -10
  317. data/vendor/gems/parenting/script/destroy +0 -14
  318. data/vendor/gems/parenting/script/generate +0 -14
  319. data/vendor/gems/parenting/test/file_to_eval.rb +0 -9
  320. data/vendor/gems/parenting/test/test_helper.rb +0 -5
  321. data/vendor/gems/parenting/test/test_parenting.rb +0 -89
  322. data/vendor/gems/suitcase/LICENSE +0 -20
  323. data/vendor/gems/suitcase/README.rdoc +0 -31
  324. data/vendor/gems/suitcase/Rakefile +0 -57
  325. data/vendor/gems/suitcase/VERSION.yml +0 -4
  326. data/vendor/gems/suitcase/lib/suitcase/unzipper.rb +0 -15
  327. data/vendor/gems/suitcase/lib/suitcase/zipper.rb +0 -119
  328. data/vendor/gems/suitcase/lib/suitcase.rb +0 -5
  329. data/vendor/gems/suitcase/suitcase.gemspec +0 -32
  330. data/vendor/gems/suitcase/test/suitcase_test.rb +0 -102
  331. data/vendor/gems/suitcase/test/test_dir/box.rb +0 -1
  332. data/vendor/gems/suitcase/test/test_dir/test.txt +0 -1
  333. data/vendor/gems/suitcase/test/test_helper.rb +0 -12
@@ -1,42 +1,39 @@
1
+ =begin rdoc
2
+ BootStrapper is contains the basic files that need to be uploaded to a new instance and the first commands that are run to set up a base PoolParty enviornment. This includes things like ensuring that ruby, rubygems, and poolparty are installed, and then start the monitor.
3
+ =end
4
+
1
5
  require "#{::File.dirname(__FILE__)}/../net/remoter/connections"
2
6
 
3
- #provide a very simple provisioner with as few dependencies as possible
7
+ # Provide a very simple provisioner with as few dependencies as possible
4
8
  module PoolParty
5
9
  module Provision
6
-
10
+
7
11
  class BootStrapper
8
12
  include ::PoolParty::Remote
9
13
 
10
14
  # List of gems that are default to install
11
15
  def self.gem_list
12
- @gem_list ||= %w( flexmock
13
- lockfile
14
- logging
15
- ZenTest
16
+ @gem_list ||= %w( logging
16
17
  rake
17
18
  xml-simple
18
- sexp_processor
19
19
  net-ssh
20
20
  net-sftp
21
21
  net-scp
22
22
  net-ssh-gateway
23
- echoe
24
23
  highline
25
24
  json
26
- capistrano
27
- ParseTree
28
- ruby2ruby
29
25
  activesupport
30
26
  grempe-amazon-ec2
31
- RubyInline
27
+ ohai
32
28
  chef
33
29
  auser-dslify
34
- auser-butterfly
35
30
  auser-parenting
36
- thin
31
+ adamwiggins-rest-client
32
+ rack
33
+ thin
37
34
  )
38
35
  end
39
-
36
+
40
37
  # Default options for the boot_strapper
41
38
  @defaults = ::PoolParty::Default.default_options.merge({
42
39
  :full_keypair_path => "#{ENV["AWS_KEYPAIR_NAME"]}" || "~/.ssh/id_rsa",
@@ -45,34 +42,50 @@ module PoolParty
45
42
  })
46
43
  class <<self; attr_reader :defaults; end
47
44
 
48
- def initialize(host, opts={}, &block)
45
+ # In case the method is being called on ourself, let's check the
46
+ # defaults hash to see if it's available there
47
+ def method_missing(m,*a,&block)
48
+ if self.class.defaults.has_key?(m)
49
+ self.class.defaults[m]
50
+ elsif @cloud
51
+ @cloud.send m, *a, &block
52
+ else
53
+ super
54
+ end
55
+ end
56
+
57
+ def initialize(host, opts={}, &block)
49
58
  self.class.defaults.merge(opts).to_instance_variables(self)
50
59
  @target_host = host
51
60
  @cloud = opts[:cloud]
52
61
 
53
- instance_eval &block if block
62
+ instance_eval &block if block
54
63
  @cloud.call_before_bootstrap_callbacks if @cloud
55
64
 
56
65
  default_commands
66
+ dputs "Starting bootstrapping process on #{host}"
57
67
  execute!
58
-
68
+
59
69
  @cloud.call_after_bootstrap_callbacks if @cloud
60
70
  after_bootstrap
71
+ dputs "Bootstrapping complete on #{host}"
61
72
  end
62
73
 
63
74
  def self.class_commands
64
75
  @class_commands ||= []
65
76
  end
66
77
 
78
+ # Collect all the bootstrap files that will be uploaded to the remote instances
67
79
  def pack_the_dependencies
68
80
  # Add the keypair to the instance... shudder
69
- ::Suitcase::Zipper.add(@cloud.keypair, "keys")
81
+ ::Suitcase::Zipper.add(keypair, "keys")
70
82
 
71
83
  # Use the locally built poolparty gem if it is availabl
72
84
  if edge_pp_gem = Dir["#{Default.vendor_path}/../pkg/*poolparty*gem"].pop
73
85
  puts "using edge poolparty: #{::File.expand_path(edge_pp_gem)}"
74
- ::Suitcase::Zipper.add(edge_pp_gem, 'gems')
86
+ ::Suitcase::Zipper.add(edge_pp_gem, 'gems')
75
87
  else
88
+ vputs "using gem auser-poolparty. use rake build to use edge"
76
89
  self.class.gem_list << 'auser-poolparty'
77
90
  end
78
91
  # Add the gems to the suitcase
@@ -81,7 +94,7 @@ module PoolParty
81
94
 
82
95
  ::Suitcase::Zipper.packages( "http://rubyforge.org/frs/download.php/45905/rubygems-1.3.1.tgz",
83
96
  "#{Default.tmp_path}/trash/dependencies/packages")
84
- ::Suitcase::Zipper.add("templates/")
97
+ # ::Suitcase::Zipper.add("templates/")
85
98
 
86
99
  ::Suitcase::Zipper.add("#{::File.dirname(__FILE__)}/../templates/monitor.ru", "/etc/poolparty/")
87
100
  ::Suitcase::Zipper.add("#{::File.dirname(__FILE__)}/../templates/monitor.god", "/etc/poolparty/")
@@ -89,11 +102,20 @@ module PoolParty
89
102
  ::Suitcase::Zipper.add("#{Default.tmp_path}/trash/dependencies/cache", "gems")
90
103
 
91
104
  ::Suitcase::Zipper.add("#{::File.join(File.dirname(__FILE__), '..', 'templates', 'gemrc' )}", "etc/poolparty")
105
+
106
+ instances = @cloud.nodes(:status => "running") + [@cloud.started_instance]
107
+ ::Suitcase::Zipper.add_content_as(
108
+ {:instances => instances.flatten.compact}.to_json,
109
+ "neighborhood.json", "/etc/poolparty")
110
+
92
111
  ::Suitcase::Zipper.build_dir!("#{Default.tmp_path}/dependencies")
93
112
 
113
+ ::Suitcase::Zipper.flush!
114
+
94
115
  # ::FileUtils.rm_rf "#{Default.tmp_path}/trash"
95
116
  end
96
117
 
118
+ # The commands to setup a PoolParty enviornment
97
119
  def default_commands
98
120
  pack_the_dependencies
99
121
  ::FileUtils.rm_rf "#{Default.tmp_path}/dependencies/gems/cache"
@@ -107,7 +129,7 @@ module PoolParty
107
129
  'cd /var/poolparty/dependencies',
108
130
  "cp /var/poolparty/dependencies/etc/poolparty/gemrc /etc/poolparty",
109
131
  "#{installer} update",
110
- "#{installer} install -y ruby1.8 ruby1.8-dev libopenssl-ruby1.8 build-essential wget", #optional, but nice to have
132
+ "#{installer} install -y ruby ruby1.8-dev libopenssl-ruby1.8 build-essential wget", #optional, but nice to have
111
133
  "tar -zxvf packages/rubygems-1.3.1.tgz",
112
134
  "cd rubygems-1.3.1",
113
135
  "ruby setup.rb --no-ri --no-rdoc",
@@ -121,9 +143,10 @@ module PoolParty
121
143
  'touch /var/poolparty/POOLPARTY.PROGRESS',
122
144
  "mkdir -p /root/.ssh",
123
145
  "cp /var/poolparty/dependencies/keys/* /root/.ssh/",
124
- "chmod 600 /root/.ssh/#{@cloud.keypair.basename}",
146
+ "chmod 600 /root/.ssh/#{::File.basename(@cloud.keypair.full_filepath)}",
125
147
  # "god -c /etc/poolparty/monitor.god",
126
- "thin -R /etc/poolparty/monitor.ru -p 8642 --daemon --pid /var/run/stats_monitor.pid start 2>/dev/null",
148
+ "mkdir -p /var/log/poolparty/",
149
+ "thin -R /etc/poolparty/monitor.ru -p 8642 --pid /var/run/stats_monitor.pid --daemon -l /var/log/poolparty/monitor.log start 2>/dev/null",
127
150
  'echo "bootstrap" >> /var/poolparty/POOLPARTY.PROGRESS']
128
151
  commands << self.class.class_commands unless self.class.class_commands.empty?
129
152
  end
@@ -5,15 +5,18 @@ module PoolParty
5
5
  def self.commands
6
6
  [
7
7
  "mkdir -p /etc/chef/cookbooks /etc/chef/cache",
8
- "cp -R /var/poolparty/dr_configure/chef/recipes/* /etc/chef/cookbooks",
9
- "cp /var/poolparty/dr_configure/chef_config.rb /etc/chef/solo.rb",
8
+ "cp -R /var/poolparty/dr_configure/chef/cookbooks/* /etc/chef/cookbooks",
9
+ "cp /var/poolparty/dr_configure/chef/solo.rb /etc/chef/solo.rb",
10
+ "cp /var/poolparty/dr_configure/chef/dna.json /etc/chef/dna.json",
10
11
  "/usr/bin/chef-solo -c /etc/chef/solo.rb -j /etc/chef/dna.json"
11
12
  ]
12
13
  end
13
14
  def self.files_to_upload
14
15
  [
15
- "#{Default.tmp_path}/chef_config.rb",
16
- "#{Default.tmp_path}/dna.json"
16
+ "#{Default.tmp_path}/dr_configure/chef/solo.rb",
17
+ "#{Default.tmp_path}/dr_configure/chef/dna.json",
18
+ "#{Default.base_config_directory}/chef/solo.rb",
19
+ "#{Default.base_config_directory}/chef/dna.json"
17
20
  ]
18
21
  end
19
22
  end
@@ -10,64 +10,119 @@ module PoolParty
10
10
  class DrConfigure
11
11
  include ::PoolParty::Remote
12
12
 
13
- def self.defaults
13
+ def self.defaults
14
14
  ::PoolParty::Default.default_options.merge({
15
15
  :full_keypair_path => "#{ENV["AWS_KEYPAIR_NAME"]}" || "~/.ssh/id_rsa",
16
16
  :installer => 'apt-get install -y',
17
- :dependency_resolver => 'chef'
17
+ :dependency_resolver => 'chef',
18
+ :invalid_run_count => 2
18
19
  })
19
20
  end
20
-
21
- attr_accessor :full_keypair_path
21
+
22
+ # In case the method is being called on ourself, let's check the
23
+ # defaults hash to see if it's available there
24
+ def method_missing(m,*a,&block)
25
+ if self.class.defaults.has_key?(m)
26
+ self.class.defaults[m]
27
+ elsif @cloud
28
+ @cloud.send m, *a, &block
29
+ else
30
+ super
31
+ end
32
+ end
33
+
34
+ attr_reader :cloud, :keypair, :run_count
35
+
22
36
  def initialize(host, opts={}, &block)
23
37
  self.class.defaults.merge(opts).to_instance_variables(self)
24
38
  @target_host = host
25
39
  @configurator = "::PoolParty::Provision::#{dependency_resolver.capitalize}".constantize
26
40
  @cloud = opts[:cloud]
41
+ @keypair = @cloud.keypair
42
+ @run_count = 0
27
43
 
28
44
  @cloud.call_before_configure_callbacks if @cloud
29
45
  prescribe_configuration
30
46
  execute!
31
47
  end
32
48
 
49
+ private
50
+
33
51
  def prescribe_configuration
52
+ ::FileUtils.mkdir_p "#{Default.tmp_path}/dr_configure" unless ::File.directory?("#{Default.tmp_path}/dr_configure")
34
53
  ::File.cp $pool_specfile, "#{Default.tmp_path}/dr_configure/clouds.rb"
35
54
  ::File.open "#{Default.tmp_path}/dr_configure/clouds.json", "w" do |f|
36
55
  f << cloud.to_properties_hash.to_json
37
56
  end
38
-
57
+
39
58
  setup_configurator
40
- write_erlang_cookie
59
+ # write_erlang_cookie
41
60
  @configurator.files_to_upload.each {|f| ::FileUtils.cp f, "#{Default.tmp_path}/dr_configure/#{::File.basename(f)}" if ::File.file?(f) }
42
61
 
43
62
  pack_up_and_ship_off_suitcase
44
-
45
- commands << [
46
- 'chmod 600 /var/poolparty/dr_configure/clouds.json',
47
- 'chmod 600 /var/poolparty/dr_configure/clouds.rb',
48
- 'cp -f /var/poolparty/dr_configure/clouds.json /etc/poolparty',
49
- 'cp /var/poolparty/dr_configure/clouds.rb /etc/poolparty',
50
- 'cp /var/poolparty/dr_configure/erlang.cookie /root/.erlang.cookie',
51
- 'ruby /var/poolparty/dr_configure/erlang_cookie_maker',
52
- "touch /var/poolparty/POOLPARTY.PROGRESS",
53
- 'echo "configure" >> /var/poolparty/POOLPARTY.PROGRESS'
54
- ]
55
- commands << self.class.class_commands unless self.class.class_commands.empty?
56
- commands << @configurator.commands
63
+ run_commands
64
+ end
65
+
66
+ def execute!
67
+ super
68
+ add_run_count!
69
+ begin
70
+ if @cloud.verifiers.size > 0
71
+ @cloud.passing?
72
+ @cloud.vputs "Cloud passed verification"
73
+ end
74
+ rescue Exception => e
75
+ if run_count < invalid_run_count
76
+ @cloud.vputs <<-EOM
77
+
78
+ Verification failed: #{e}"
79
+ Running configure again to try to solve the problem
80
+
81
+ EOM
82
+ execute!
83
+ else
84
+ @cloud.vputs <<-EOM
85
+
86
+ Verification failed: #{e}"
87
+ Please check your clouds.rb for any errors
88
+
89
+ EOM
90
+ end
91
+ end
92
+ end
93
+
94
+ def run_commands
95
+ commands << [
96
+ 'chmod 644 /var/poolparty/dr_configure/clouds.json',
97
+ 'chmod 644 /var/poolparty/dr_configure/clouds.rb',
98
+ 'cp /var/poolparty/dr_configure/clouds.json /etc/poolparty',
99
+ 'cp /var/poolparty/dr_configure/clouds.rb /etc/poolparty',
100
+ "touch /var/poolparty/POOLPARTY.PROGRESS",
101
+ 'echo "configure" >> /var/poolparty/POOLPARTY.PROGRESS'
102
+ ]
103
+ commands << self.class.class_commands unless self.class.class_commands.empty?
104
+ commands << @configurator.commands
57
105
  end
58
106
 
59
107
  def pack_up_and_ship_off_suitcase
60
108
  ::Suitcase::Zipper.build_dir!("#{Default.tmp_path}/dr_configure")
61
-
62
- rsync "#{Default.tmp_path}/dr_configure/", "/var/poolparty/dr_configure/"
109
+ rsync "#{Default.tmp_path}/dr_configure/", "/var/poolparty/dr_configure/", ['-a --stats']
63
110
  end
64
111
 
112
+ # Pack up monitors verifiers plugins directories in the same direcotry as your clouds.rb and send to nodes.
65
113
  def setup_configurator
66
114
  # @cloud.write_properties_hash("#{Default.tmp_path}/properties_hash.rb")
67
- #TODO: move to puppet class
68
- puts "writting new config file"
69
- @cloud.build_and_store_new_config_file("#{Default.tmp_path}/dr_configure/poolparty.pp")
70
- # Neighborhoods.clump(@cloud.remote_instances_list, "#{Default.tmp_path}/neighborhood.json")
115
+ #TODO: move to puppet class
116
+ #TODO: remove or conditionalize this puppet specific task
117
+ @cloud.build_and_store_new_config_file("#{Default.tmp_path}/dr_configure/poolparty.pp")
118
+
119
+ %w(monitors verifiers plugins).each do |dir|
120
+ @cloud.pack_user_directory dir
121
+ end
122
+ end
123
+
124
+ def add_run_count!
125
+ @run_count += 1
71
126
  end
72
127
 
73
128
  def write_erlang_cookie
@@ -7,6 +7,14 @@ module PoolParty
7
7
  :command => nil,
8
8
  :user => "root"
9
9
  })
10
+
11
+ def present
12
+ :create
13
+ end
14
+
15
+ def absent
16
+ :delete
17
+ end
10
18
 
11
19
  end
12
20
 
@@ -4,7 +4,7 @@ module PoolParty
4
4
  class Directory < Resource
5
5
 
6
6
  def present
7
- "directory"
7
+ :create
8
8
  end
9
9
 
10
10
  end
@@ -3,6 +3,18 @@ module PoolParty
3
3
 
4
4
  class File < Resource
5
5
 
6
+ def loaded(o={}, &block)
7
+ parent.has_directory ::File.dirname(name) if parent
8
+ end
9
+
10
+ def present
11
+ :create
12
+ end
13
+
14
+ def absent
15
+ :delete
16
+ end
17
+
6
18
  def after_create
7
19
  run_render = dsl_options.include?(:render_as) ? dsl_options.delete(:render_as) : false
8
20
 
@@ -23,6 +35,10 @@ module PoolParty
23
35
  end
24
36
  end
25
37
 
38
+ def method_missing m, *a, &block
39
+ super rescue ::File.send(m, *a, &block)
40
+ end
41
+
26
42
  end
27
43
 
28
44
  end
@@ -3,8 +3,13 @@ module PoolParty
3
3
 
4
4
  class Package < Resource
5
5
 
6
- default_options({
7
- })
6
+ def present
7
+ :install
8
+ end
9
+
10
+ def absent
11
+ :remove
12
+ end
8
13
 
9
14
  end
10
15
 
@@ -4,16 +4,17 @@ module PoolParty
4
4
  class Service < Resource
5
5
 
6
6
  default_options({
7
- :ensures => "running",
7
+ :ensures => "enable",
8
8
  :enable => true
9
9
  })
10
10
 
11
11
  def present
12
- "running"
12
+ :start
13
13
  end
14
14
  def absent
15
- "stopping"
15
+ :stop
16
16
  end
17
+
17
18
  end
18
19
 
19
20
  end
@@ -6,14 +6,6 @@ module PoolParty
6
6
  def initialize *args, &block
7
7
  super
8
8
  end
9
-
10
- def source(i=nil)
11
- i ? options[:ensures] = i : options[:ensures]
12
- end
13
-
14
- def present
15
- options[:ensures]
16
- end
17
9
 
18
10
  end
19
11
 
@@ -1,3 +1,8 @@
1
+ =begin rdoc
2
+ Schema
3
+
4
+ Schemas are basically stub clouds without the PoolParty stack
5
+ =end
1
6
  module PoolParty
2
7
  class Schema
3
8
  attr_accessor :hsh
@@ -6,6 +11,8 @@ module PoolParty
6
11
  case h
7
12
  when Hash
8
13
  h.each {|k,v| self[k] = v}
14
+ when Array
15
+ h.each {|el| self[el['ip']]=el}
9
16
  when String
10
17
  JSON.parse(h).each {|k,v| self[k.to_sym] = v}
11
18
  end
@@ -40,25 +47,33 @@ module PoolParty
40
47
  @hsh.send(sym, *args, &block)
41
48
  end
42
49
  end
50
+
51
+ def to_cloud(node={})
52
+ require "ostruct"
53
+
54
+ $pool_specfile = "/etc/poolparty/clouds.rb"
55
+
56
+ remoter_base = PoolParty::Remote.module_eval(options.remote_base.split('::')[-1].camelcase)
57
+ # TODO: Seriously, make this sexier
58
+
59
+ cld = OpenStruct.new(options)
60
+ cld.keypair = ::PoolParty::Key.new("/etc/poolparty/#{node[:keypair]}")
61
+ cld.remoter_base = remoter_base
62
+ cld.build_and_store_new_config_file = "/etc/poolparty/clouds.json"
63
+ cld.dependency_resolver = PoolParty.module_eval(options.dependency_resolver.split("::")[-1].camelcase).send(:new)
64
+
65
+ cld
66
+ end
43
67
  end
44
68
  end
45
- # class Hash
46
- # def [](k=nil)
47
- # if self.has_key?(k.to_sym)
48
- # fetch(k.to_sym)
49
- # elsif self.has_key?(k.to_s)
50
- # fetch(k.to_s)
51
- # else
52
- # nil
53
- # end
54
- # end
55
- # def method_missing(sym, *args, &block)
56
- # if has_key?(sym.to_sym)
57
- # fetch(sym)
58
- # elsif has_key?(sym.to_s)
59
- # fetch(sym.to_s)
60
- # else
61
- # super
62
- # end
63
- # end
64
- # end
69
+ class Hash
70
+ def method_missing(sym, *args, &block)
71
+ if has_key?(sym.to_sym)
72
+ fetch(sym)
73
+ elsif has_key?(sym.to_s)
74
+ fetch(sym.to_s)
75
+ else
76
+ super
77
+ end
78
+ end
79
+ end
@@ -5,32 +5,34 @@ global
5
5
  user haproxy
6
6
  group haproxy
7
7
  chroot /var/run/haproxy
8
- log 127.0.0.1 local0 debug
9
- pidfile /var/run/haproxy.pid
8
+ log 127.0.0.1 local0 debug
9
+ pidfile /var/run/haproxy.pid
10
10
 
11
11
  defaults
12
- log global # Log to the global log
13
- clitimeout 150000
14
- srvtimeout 150000
15
- contimeout 30000
16
-
17
- option httplog
18
- option httpclose # disable keepalive (HAProxy does not yet support the HTTP keep-alive mode)
19
- option forwardfor # enable insert of X-Forwarded-For headers
20
- retries 3
21
- option redispatch
22
-
23
- balance roundrobin # each server is used in turns, according to assigned weight
24
-
25
- # Stats
26
- stats enable
27
- stats uri /poolparty
28
- stats realm Statistics\ for\ PoolParty
12
+ log global # Log to the global log
13
+
14
+ clitimeout 150000
15
+ srvtimeout 150000
16
+ contimeout 30000
17
+
18
+ option httplog
19
+ option httpclose # disable keepalive (HAProxy does not yet support the HTTP keep-alive mode)
20
+ option forwardfor # enable insert of X-Forwarded-For headers
21
+ option redispatch
22
+
23
+ retries 3
24
+
25
+ balance roundrobin # each server is used in turns, according to assigned weight
26
+
27
+ # Stats
28
+ stats enable
29
+ stats uri /poolparty
30
+ stats realm Statistics\ for\ PoolParty
29
31
 
30
32
  listen <%= @node[:poolparty][:haproxy_name] %>
31
- mode <%= @node[:poolparty][:proxy_mode] %>
32
- bind 0.0.0.0:<%= @node[:poolparty][:ports_haproxy].join(",0.0.0.0:") %>
33
- cookie POOLPARTYPARTY
34
- <% %x[/usr/bin/server-list-active ip].split("\t").each_with_index do |ip, index| %>
35
- server <%= index == 0 ? "master" : "node#{index}" %> <%= ip %>:<%= @node[:poolparty][:forwarding_port] %> weight 1 check cookie
36
- <% end %>
33
+ mode <%= @node[:poolparty][:proxy_mode] %>
34
+ bind 0.0.0.0:<%= @node[:poolparty][:ports_haproxy].join(",0.0.0.0:") %>
35
+ cookie POOLPARTY
36
+ <% %x[/usr/bin/server-list-active internal_ip].split("\t").each_with_index do |ip, index| %>
37
+ server <%= index == 0 ? "master" : "node#{index}" %> <%= ip %>:<%= @node[:poolparty][:forwarding_port] %> weight 1 check cookie
38
+ <% end %>
@@ -3,12 +3,12 @@ require 'rubygems'
3
3
  require 'rack'
4
4
  require 'json'
5
5
  require 'thin'
6
- require "poolparty/monitors"
6
+ require 'rest_client'
7
+ require "poolparty/monitors/monitor_rack"
7
8
 
8
9
  app = Rack::Builder.new do
9
- use Rack::Reloader, 2
10
+ # use Rack::Reloader, 2
10
11
  use Rack::ShowExceptions
11
- use Rack::Lint
12
12
  # use Rack::PostBodyContentTypeParser #parses json requests to params hash
13
13
  run Monitors::MonitorRack.new()
14
14
  end
@@ -0,0 +1,17 @@
1
+ module PoolParty
2
+ module Verifiers
3
+
4
+ class VerifierBase
5
+ attr_reader :host
6
+
7
+ def host=(h=nil)
8
+ @host ||= h
9
+ end
10
+
11
+ def name
12
+ @name ||= self.class.to_s.top_level_class
13
+ end
14
+ end
15
+
16
+ end
17
+ end
@@ -0,0 +1,17 @@
1
+ module PoolParty
2
+ module Verifiers
3
+
4
+ class Ping < VerifierBase
5
+ include ::PoolParty::Pinger
6
+
7
+ attr_reader :port
8
+ def initialize(port=80)
9
+ @port = port
10
+ end
11
+ def passing?
12
+ ping_port(host, port, 3)
13
+ end
14
+ end
15
+
16
+ end
17
+ end