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
@@ -0,0 +1,57 @@
1
+ require 'rubygems'
2
+ require 'rake/gempackagetask'
3
+ require 'rubygems/specification'
4
+ require 'date'
5
+ require 'spec/rake/spectask'
6
+
7
+ GEM = "chef-deploy"
8
+ GEM_VERSION = "0.0.9"
9
+ AUTHOR = "Ezra Zygmuntowicz"
10
+ EMAIL = "Your Email"
11
+ HOMEPAGE = "http://example.com"
12
+ SUMMARY = "A gem that provides..."
13
+
14
+ spec = Gem::Specification.new do |s|
15
+ s.name = GEM
16
+ s.version = GEM_VERSION
17
+ s.platform = Gem::Platform::RUBY
18
+ s.has_rdoc = true
19
+ s.extra_rdoc_files = ["README.rdoc", "LICENSE", 'TODO']
20
+ s.summary = SUMMARY
21
+ s.description = s.summary
22
+ s.author = AUTHOR
23
+ s.email = EMAIL
24
+ s.homepage = HOMEPAGE
25
+
26
+ # Uncomment this to add a dependency
27
+ # s.add_dependency "foo"
28
+
29
+ s.require_path = 'lib'
30
+ s.autorequire = GEM
31
+ s.files = %w(LICENSE README.rdoc Rakefile TODO) + Dir.glob("{lib,spec}/**/*")
32
+ end
33
+
34
+ task :default => :spec
35
+
36
+ desc "Run specs"
37
+ Spec::Rake::SpecTask.new do |t|
38
+ t.spec_files = FileList['spec/**/*_spec.rb']
39
+ t.spec_opts = %w(-fs --color)
40
+ end
41
+
42
+
43
+ Rake::GemPackageTask.new(spec) do |pkg|
44
+ pkg.gem_spec = spec
45
+ end
46
+
47
+ desc "install the gem locally"
48
+ task :install => [:package] do
49
+ sh %{sudo gem install pkg/#{GEM}-#{GEM_VERSION}}
50
+ end
51
+
52
+ desc "create a gemspec file"
53
+ task :make_spec do
54
+ File.open("#{GEM}.gemspec", "w") do |file|
55
+ file.puts spec.to_ruby
56
+ end
57
+ end
@@ -0,0 +1,4 @@
1
+ TODO:
2
+ Fix LICENSE with your name
3
+ Fix Rakefile with your name and contact info
4
+ Add your code to lib/<%= name %>.rb
@@ -0,0 +1,230 @@
1
+ # stolen wholesale from capistrano, thanks Jamis!
2
+ require 'yaml'
3
+ class ChefDeployFailure < StandardError
4
+ end
5
+
6
+ class CachedDeploy
7
+ # Executes the SCM command for this strategy and writes the REVISION
8
+ # mark file to each host.
9
+ def deploy
10
+ @configuration[:release_path] = "#{@configuration[:deploy_to]}/releases/#{Time.now.utc.strftime("%Y%m%d%H%M%S")}"
11
+ if @configuration[:revision] == ''
12
+ @configuration[:revision] = source.query_revision(@configuration[:branch]) {|cmd| run cmd}
13
+ end
14
+ Chef::Log.info "deploying branch: #{@configuration[:branch]} rev: #{@configuration[:revision]}"
15
+ Chef::Log.info "updating the cached checkout"
16
+ run(update_repository_cache)
17
+ Chef::Log.info "copying the cached version to #{configuration[:release_path]}"
18
+ run(copy_repository_cache)
19
+ install_gems
20
+ callback(:before_migrate)
21
+ migrate
22
+ callback(:before_symlink)
23
+ symlink
24
+ callback(:before_restart)
25
+ restart
26
+ callback(:after_restart)
27
+ cleanup
28
+ end
29
+
30
+ def restart
31
+ unless @configuration[:restart_command].empty?
32
+ Chef::Log.info "restarting app: #{latest_release}"
33
+ Chef::Log.info run("cd #{current_path} && #{@configuration[:restart_command]}")
34
+ end
35
+ end
36
+
37
+ def install_gems
38
+ if File.exist?("#{latest_release}/gems.yml")
39
+ gems = YAML.load(IO.read("#{latest_release}/gems.yml"))
40
+ resources = []
41
+ gems.each do |g|
42
+ next if has_gem?(g[:name], g[:version])
43
+ r = Chef::Resource::GemPackage.new(g[:name], nil, @configuration[:node])
44
+ r.version g[:version]
45
+ r.source "http://gems.github.com"
46
+ resources << r
47
+ end
48
+ resources.each do |r|
49
+ r.run_action(:install)
50
+ end
51
+ end
52
+ end
53
+
54
+ def has_gem?(name, version=nil)
55
+ if !$GEM_LIST_DEPLOY
56
+ gems = {}
57
+ `gem list --local`.each_line do |line|
58
+ gems[$1.to_sym] = $2.split(/, /) if line =~ /^(.*) \(([^\)]*)\)$/
59
+ end
60
+ $GEM_LIST_DEPLOY = gems
61
+ end
62
+ if $GEM_LIST_DEPLOY[name.to_sym]
63
+ if version
64
+ if $GEM_LIST_DEPLOY[name.to_sym].include?(version)
65
+ Chef::Log.info("Gem: #{name}:#{version} already installed, skipping")
66
+ return true
67
+ end
68
+ else
69
+ Chef::Log.info("Gem: #{name} already installed, skipping")
70
+ return true
71
+ end
72
+ end
73
+ false
74
+ end
75
+
76
+ # before_symlink
77
+ # before_restart
78
+ def callback(what)
79
+ if File.exist?("#{latest_release}/deploy/#{what}.rb")
80
+ Chef::Log.info "running deploy hook: #{latest_release}/deploy/#{what}.rb"
81
+ Chef::Log.info run("cd #{latest_release} && ruby deploy/#{what}.rb #{@configuration[:environment]} #{@configuration[:role]}")
82
+ end
83
+ end
84
+
85
+ def latest_release
86
+ all_releases.last
87
+ end
88
+
89
+ def previous_release(current=latest_release)
90
+ index = all_releases.index(current)
91
+ all_releases[index-1]
92
+ end
93
+
94
+ def oldest_release
95
+ all_releases.first
96
+ end
97
+
98
+ def all_releases
99
+ `ls #{release_path}`.split("\n").sort.map{|r| File.join(release_path, r)}
100
+ end
101
+
102
+ def cleanup
103
+ while all_releases.size >= 5
104
+ FileUtils.rm_rf oldest_release
105
+ end
106
+ end
107
+
108
+ def rollback
109
+ Chef::Log.info "rolling back to previous release"
110
+ symlink(previous_release)
111
+ FileUtils.rm_rf latest_release
112
+ Chef::Log.info "restarting with previous release"
113
+ restart
114
+ end
115
+
116
+ def migrate
117
+ if @configuration[:migrate]
118
+ run "ln -nfs #{shared_path}/config/database.yml #{latest_release}/config/database.yml"
119
+ Chef::Log.info "Migrating: cd #{latest_release} && RAILS_ENV=#{@configuration[:environment]} #{@configuration[:migration_command]}"
120
+ Chef::Log.info run("cd #{latest_release} && RAILS_ENV=#{@configuration[:environment]} #{@configuration[:migration_command]}")
121
+ end
122
+ end
123
+
124
+ def user
125
+ @configuration[:user] || 'nobody'
126
+ end
127
+
128
+ def current_path
129
+ "#{@configuration[:deploy_to]}/current"
130
+ end
131
+
132
+ def shared_path
133
+ configuration[:shared_path]
134
+ end
135
+
136
+ def release_path
137
+ "#{@configuration[:deploy_to]}/releases"
138
+ end
139
+
140
+ def symlink(release_to_link=latest_release)
141
+ Chef::Log.info "symlinking and finishing deploy"
142
+ symlink = false
143
+ begin
144
+ run [ "chmod -R g+w #{release_to_link}",
145
+ "rm -rf #{release_to_link}/log #{release_to_link}/public/system #{release_to_link}/tmp/pids",
146
+ "mkdir -p #{release_to_link}/tmp",
147
+ "ln -nfs #{shared_path}/log #{release_to_link}/log",
148
+ "mkdir -p #{release_to_link}/public",
149
+ "mkdir -p #{release_to_link}/config",
150
+ "ln -nfs #{shared_path}/system #{release_to_link}/public/system",
151
+ "ln -nfs #{shared_path}/pids #{release_to_link}/tmp/pids",
152
+ "ln -nfs #{shared_path}/config/database.yml #{release_to_link}/config/database.yml",
153
+ "chown -R #{user}:#{user} #{release_to_link}"
154
+ ].join(" && ")
155
+
156
+ symlink = true
157
+ run "rm -f #{current_path} && ln -nfs #{release_to_link} #{current_path} && chown -R #{user}:#{user} #{current_path}"
158
+ rescue => e
159
+ run "rm -f #{current_path} && ln -nfs #{previous_release(release_to_link)} #{current_path} && chown -R #{user}:#{user} #{current_path}" if symlink
160
+ run "rm -rf #{release_to_link}"
161
+ raise e
162
+ end
163
+ end
164
+
165
+ def run(cmd)
166
+ res = `#{cmd}`
167
+ raise(ChefDeployFailure, res) unless $? == 0
168
+ res
169
+ end
170
+
171
+ # :repository_cache
172
+ # :shared_path
173
+ # :repository
174
+ # :release_path
175
+ # :copy_exclude
176
+ # :revision
177
+ # :user
178
+ # :group
179
+ def initialize(opts={})
180
+ @configuration = opts
181
+ @configuration[:shared_path] = "#{@configuration[:deploy_to]}/shared"
182
+ end
183
+
184
+ def configuration
185
+ @configuration
186
+ end
187
+
188
+ def source
189
+ #@source ||= case configuration[:scm]
190
+ #when 'git'
191
+ Git.new configuration
192
+ #when 'svn'
193
+ # Subversion.new configuration
194
+ #end
195
+ end
196
+
197
+ private
198
+
199
+ def repository_cache
200
+ File.join(configuration[:shared_path], configuration[:repository_cache] || "cached-copy")
201
+ end
202
+
203
+ def update_repository_cache
204
+ command = "if [ -d #{repository_cache} ]; then " +
205
+ "#{source.sync(revision, repository_cache)}; " +
206
+ "else #{source.checkout(revision, repository_cache)}; fi"
207
+ command
208
+ end
209
+
210
+ def copy_repository_cache
211
+ if copy_exclude.empty?
212
+ return "cp -RPp #{repository_cache} #{configuration[:release_path]} && #{mark}"
213
+ else
214
+ exclusions = copy_exclude.map { |e| "--exclude=\"#{e}\"" }.join(' ')
215
+ return "rsync -lrpt #{exclusions} #{repository_cache}/* #{configuration[:release_path]} && #{mark}"
216
+ end
217
+ end
218
+
219
+ def revision
220
+ configuration[:revision]
221
+ end
222
+
223
+ def mark
224
+ "(echo #{revision} > #{configuration[:release_path]}/REVISION)"
225
+ end
226
+
227
+ def copy_exclude
228
+ @copy_exclude ||= Array(configuration.fetch(:copy_exclude, []))
229
+ end
230
+ end
@@ -0,0 +1,132 @@
1
+ # stolen wholesale from capistrano, thanks Jamis!
2
+
3
+ class Git
4
+ # Performs a clone on the remote machine, then checkout on the branch
5
+ # you want to deploy.
6
+
7
+ def initialize(opts={})
8
+ @configuration = opts
9
+ end
10
+
11
+ def configuration
12
+ @configuration
13
+ end
14
+
15
+ def git
16
+ "git"
17
+ end
18
+
19
+ def respository
20
+ configuration[:repository]
21
+ end
22
+
23
+ def checkout(revision, destination)
24
+ remote = origin
25
+
26
+ args = []
27
+ args << "-o #{remote}" unless remote == 'origin'
28
+ if depth = configuration[:git_shallow_clone]
29
+ args << "--depth #{depth}"
30
+ end
31
+
32
+ execute = []
33
+ if args.empty?
34
+ execute << "#{git} clone #{verbose} #{configuration[:repository]} #{destination}"
35
+ else
36
+ execute << "#{git} clone #{verbose} #{args.join(' ')} #{configuration[:repository]} #{destination}"
37
+ end
38
+
39
+ # checkout into a local branch rather than a detached HEAD
40
+ execute << "cd #{destination} && #{git} checkout #{verbose} -b deploy #{revision}"
41
+
42
+ if configuration[:git_enable_submodules]
43
+ execute << "#{git} submodule #{verbose} init"
44
+ execute << "#{git} submodule #{verbose} update"
45
+ end
46
+
47
+ execute.join(" && ")
48
+ end
49
+
50
+ # An expensive export. Performs a checkout as above, then
51
+ # removes the repo.
52
+ def export(revision, destination)
53
+ checkout(revision, destination) << " && rm -Rf #{destination}/.git"
54
+ end
55
+
56
+ # Merges the changes to 'head' since the last fetch, for remote_cache
57
+ # deployment strategy
58
+ def sync(revision, destination)
59
+ remote = origin
60
+
61
+ execute = []
62
+ execute << "cd #{destination}"
63
+
64
+ # Use git-config to setup a remote tracking branches. Could use
65
+ # git-remote but it complains when a remote of the same name already
66
+ # exists, git-config will just silenty overwrite the setting every
67
+ # time. This could cause wierd-ness in the remote cache if the url
68
+ # changes between calls, but as long as the repositories are all
69
+ # based from each other it should still work fine.
70
+ if remote != 'origin'
71
+ execute << "#{git} config remote.#{remote}.url #{configuration[:repository]}"
72
+ execute << "#{git} config remote.#{remote}.fetch +refs/heads/*:refs/remotes/#{remote}/*"
73
+ end
74
+
75
+ # since we're in a local branch already, just reset to specified revision rather than merge
76
+ execute << "#{git} fetch #{verbose} #{remote} && #{git} reset #{verbose} --hard #{revision}"
77
+
78
+ if configuration[:git_enable_submodules]
79
+ execute << "#{git} submodule #{verbose} init"
80
+ execute << "#{git} submodule #{verbose} update"
81
+ end
82
+
83
+ execute.join(" && ")
84
+ end
85
+
86
+ # Returns a string of diffs between two revisions
87
+ def diff(from, to=nil)
88
+ from << "..#{to}" if to
89
+ scm :diff, from
90
+ end
91
+
92
+ # Returns a log of changes between the two revisions (inclusive).
93
+ def log(from, to=nil)
94
+ scm :log, "#{from}..#{to}"
95
+ end
96
+
97
+ # Getting the actual commit id, in case we were passed a tag
98
+ # or partial sha or something - it will return the sha if you pass a sha, too
99
+ def query_revision(revision)
100
+ raise ArgumentError, "Deploying remote branches is no longer supported. Specify the remote branch as a local branch for the git repository you're deploying from (ie: '#{revision.gsub('origin/', '')}' rather than '#{revision}')." if revision =~ /^origin\//
101
+ return revision if revision =~ /^[0-9a-f]{40}$/
102
+ command = scm('ls-remote', configuration[:repository], revision)
103
+ result = yield(command)
104
+ rev, ref = result.split(/[\t\n]/)
105
+ newrev = nil
106
+ if ref.sub(/refs\/.*?\//, '').strip == revision
107
+ newrev = rev
108
+ end
109
+ raise "Unable to resolve revision for '#{revision}' on repository '#{configuration[:repository]}'." unless newrev =~ /^[0-9a-f]{40}$/
110
+ return newrev
111
+ end
112
+
113
+ def scm(*args)
114
+ [git, *args].compact.join(" ")
115
+ end
116
+
117
+ def head
118
+ configuration[:branch] || 'HEAD'
119
+ end
120
+
121
+ def origin
122
+ configuration[:remote] || 'origin'
123
+ end
124
+
125
+ private
126
+
127
+ # If verbose output is requested, return nil, otherwise return the
128
+ # command-line switch for "quiet" ("-q").
129
+ def verbose
130
+ nil#configuration[:scm_verbose] ? nil : "-q"
131
+ end
132
+ end
@@ -0,0 +1,98 @@
1
+ require 'capistrano/recipes/deploy/scm/base'
2
+ require 'yaml'
3
+
4
+ class Subversion
5
+
6
+ def initialize(opts={})
7
+ @config = opts
8
+ end
9
+
10
+ def config
11
+ @config
12
+ end
13
+
14
+ # Subversion understands 'HEAD' to refer to the latest revision in the
15
+ # repository.
16
+ def head
17
+ "HEAD"
18
+ end
19
+
20
+ def repository
21
+ config[:repository]
22
+ end
23
+
24
+ # Returns the command that will check out the given revision to the
25
+ # given destination.
26
+ def checkout(revision, destination)
27
+ scm :checkout, config[:arguments], verbose, authentication, "-r#{revision}", repository, destination
28
+ end
29
+
30
+ # Returns the command that will do an "svn update" to the given
31
+ # revision, for the working copy at the given destination.
32
+ def sync(revision, destination)
33
+ scm :update, arguments, verbose, authentication, "-r#{revision}", destination
34
+ end
35
+
36
+ # Returns the command that will do an "svn export" of the given revision
37
+ # to the given destination.
38
+ def export(revision, destination)
39
+ scm :export, arguments, verbose, authentication, "-r#{revision}", repository, destination
40
+ end
41
+
42
+ # Returns the command that will do an "svn diff" for the two revisions.
43
+ def diff(from, to=nil)
44
+ scm :diff, repository, authentication, "-r#{from}:#{to || head}"
45
+ end
46
+
47
+ # Returns an "svn log" command for the two revisions.
48
+ def log(from, to=nil)
49
+ scm :log, repository, authentication, "-r#{from}:#{to || head}"
50
+ end
51
+
52
+ # Attempts to translate the given revision identifier to a "real"
53
+ # revision. If the identifier is an integer, it will simply be returned.
54
+ # Otherwise, this will yield a string of the commands it needs to be
55
+ # executed (svn info), and will extract the revision from the response.
56
+ def query_revision(revision)
57
+ return revision if revision =~ /^\d+$/
58
+ command = scm(:info, repository, authentication, "-r#{revision}")
59
+ result = yield(command)
60
+ yaml = YAML.load(result)
61
+ raise "tried to run `#{command}' and got unexpected result #{result.inspect}" unless Hash === yaml
62
+ yaml['Last Changed Rev'] || yaml['Revision']
63
+ end
64
+
65
+ # Increments the given revision number and returns it.
66
+ def next_revision(revision)
67
+ revision.to_i + 1
68
+ end
69
+
70
+
71
+ private
72
+
73
+ # If a username is configured for the SCM, return the command-line
74
+ # switches for that. Note that we don't need to return the password
75
+ # switch, since Capistrano will check for that prompt in the output
76
+ # and will respond appropriately.
77
+ def authentication
78
+ username = config(:svn_username)
79
+ return "" unless username
80
+ result = "--username #{config(:svn_username)} "
81
+ result << "--password #{config(:svn_password)} "
82
+ result
83
+ end
84
+
85
+ # If verbose output is requested, return nil, otherwise return the
86
+ # command-line switch for "quiet" ("-q").
87
+ def verbose
88
+ "-q"
89
+ end
90
+
91
+ def scm(*args)
92
+ ['svn', *args].compact.join(" ")
93
+ end
94
+
95
+ def svn_password_prompt
96
+ config[:password]
97
+ end
98
+ end
@@ -0,0 +1,183 @@
1
+ require File.join(File.dirname(__FILE__), 'chef-deploy/git')
2
+ require File.join(File.dirname(__FILE__), 'chef-deploy/cached_deploy')
3
+
4
+ # deploy "/data/#{app}" do
5
+ # repo "git://github.com/engineyard/rack-app.git"
6
+ # branch "HEAD"
7
+ # user "ez"
8
+ # enable_submodules true
9
+ # migrate true
10
+ # migration_command "rake db:migrate"
11
+ # environment "production"
12
+ # shallow_clone true
13
+ # action :deploy # or :rollback
14
+ # restart_command "touch tmp/restart.txt"
15
+ # end
16
+
17
+ class Chef
18
+ class Resource
19
+ class Deploy < Chef::Resource
20
+
21
+ def initialize(name, collection=nil, node=nil)
22
+ super(name, collection, node)
23
+ @resource_name = :deploy
24
+ @deploy_to = name
25
+ @branch = 'HEAD'
26
+ @repository_cache = 'cached-copy'
27
+ @copy_exclude = []
28
+ @revision = nil
29
+ @action = :deploy
30
+ @allowed_actions.push(:deploy)
31
+ @allowed_actions.push(:rollback)
32
+ end
33
+
34
+ def repo(arg=nil)
35
+ set_or_return(
36
+ :repo,
37
+ arg,
38
+ :kind_of => [ String ]
39
+ )
40
+ end
41
+
42
+
43
+ def role(arg=nil)
44
+ set_or_return(
45
+ :role,
46
+ arg,
47
+ :kind_of => [ String ]
48
+ )
49
+ end
50
+
51
+ def restart_command(arg=nil)
52
+ set_or_return(
53
+ :restart_command,
54
+ arg,
55
+ :kind_of => [ String ]
56
+ )
57
+ end
58
+
59
+ def migrate(arg=nil)
60
+ set_or_return(
61
+ :migrate,
62
+ arg,
63
+ :kind_of => [ TrueClass, FalseClass ]
64
+ )
65
+ end
66
+
67
+ def migration_command(arg=nil)
68
+ set_or_return(
69
+ :migration_command,
70
+ arg,
71
+ :kind_of => [ String ]
72
+ )
73
+ end
74
+
75
+ def user(arg=nil)
76
+ set_or_return(
77
+ :user,
78
+ arg,
79
+ :kind_of => [ String ]
80
+ )
81
+ end
82
+
83
+ def enable_submodules(arg=false)
84
+ set_or_return(
85
+ :enable_submodules,
86
+ arg,
87
+ :kind_of => [ TrueClass, FalseClass ]
88
+ )
89
+ end
90
+
91
+ def shallow_clone(arg=false)
92
+ set_or_return(
93
+ :shallow_clone,
94
+ arg,
95
+ :kind_of => [ TrueClass, FalseClass ]
96
+ )
97
+ end
98
+
99
+ def repository_cache(arg=nil)
100
+ set_or_return(
101
+ :repository_cache,
102
+ arg,
103
+ :kind_of => [ String ]
104
+ )
105
+ end
106
+
107
+ def copy_exclude(arg=nil)
108
+ set_or_return(
109
+ :copy_exclude,
110
+ arg,
111
+ :kind_of => [ String ]
112
+ )
113
+ end
114
+
115
+ def revision(arg=nil)
116
+ set_or_return(
117
+ :revision,
118
+ arg,
119
+ :kind_of => [ String ]
120
+ )
121
+ end
122
+
123
+ def branch(arg=nil)
124
+ set_or_return(
125
+ :branch,
126
+ arg,
127
+ :kind_of => [ String ]
128
+ )
129
+ end
130
+
131
+ def environment(arg=nil)
132
+ set_or_return(
133
+ :environment,
134
+ arg,
135
+ :kind_of => [ String ]
136
+ )
137
+ end
138
+
139
+ end
140
+ end
141
+
142
+ class Provider
143
+ class Deploy < Chef::Provider
144
+
145
+ def load_current_resource
146
+ FileUtils.mkdir_p "#{@new_resource.name}/shared"
147
+ FileUtils.mkdir_p "#{@new_resource.name}/releases"
148
+ @dep = CachedDeploy.new :user => @new_resource.user,
149
+ :role => @new_resource.role,
150
+ :branch => (@new_resource.branch || 'HEAD'),
151
+ :restart_command => @new_resource.restart_command,
152
+ :repository => @new_resource.repo,
153
+ :environment => @new_resource.environment,
154
+ :migration_command => @new_resource.migration_command,
155
+ :migrate => @new_resource.migrate,
156
+ :deploy_to => @new_resource.name,
157
+ :repository_cache => @new_resource.repository_cache,
158
+ :copy_exclude => @new_resource.copy_exclude,
159
+ :revision => (@new_resource.revision || ''),
160
+ :git_enable_submodules => @new_resource.enable_submodules,
161
+ :git_shallow_clone => @new_resource.shallow_clone,
162
+ :node => @node,
163
+ :new_resource => @new_resource
164
+ end
165
+
166
+ def action_deploy
167
+ Chef::Log.level(:debug)
168
+ Chef::Log.info "Running a new deploy\nto: #{@new_resource.name}\nrepo: #{@new_resource.repo}"
169
+ @dep.deploy
170
+ Chef::Log.level(Chef::Config[:log_level])
171
+ end
172
+
173
+ def action_rollback
174
+ Chef::Log.level(:debug)
175
+ Chef::Log.info "Rolling back deploy\nto: #{@new_resource.name}\nrepo: #{@new_resource.repo}"
176
+ @dep.rollback
177
+ Chef::Log.level(Chef::Config[:log_level])
178
+ end
179
+ end
180
+ end
181
+ end
182
+
183
+ Chef::Platform.platforms[:default].merge! :deploy => Chef::Provider::Deploy, :gem_package => Chef::Provider::Package::Rubygems