fairchild-poolparty 1.1.5 → 1.2.12

Sign up to get free protection for your applications and to get access to all the features.
Files changed (385) hide show
  1. data/History.txt +3 -0
  2. data/README.txt +13 -9
  3. data/Rakefile +0 -1
  4. data/VERSION.yml +2 -2
  5. data/bin/cloud +43 -46
  6. data/bin/cloud-bootstrap +33 -23
  7. data/bin/cloud-configure +33 -34
  8. data/bin/cloud-console +31 -9
  9. data/bin/cloud-contract +27 -11
  10. data/bin/cloud-expand +32 -19
  11. data/bin/cloud-list +43 -15
  12. data/bin/cloud-osxcopy +22 -12
  13. data/bin/cloud-provision +39 -24
  14. data/bin/cloud-run +37 -0
  15. data/bin/cloud-setup-dev +31 -20
  16. data/bin/cloud-show +40 -21
  17. data/bin/cloud-ssh +24 -15
  18. data/bin/cloud-start +33 -19
  19. data/bin/cloud-terminate +34 -15
  20. data/bin/cloud-verify +41 -0
  21. data/bin/install-poolparty +22 -0
  22. data/bin/server-cloud-elections +17 -23
  23. data/bin/server-list-active +23 -22
  24. data/bin/server-manage-election +14 -23
  25. data/bin/server-show-stats +1 -1
  26. data/config/jeweler.rb +6 -6
  27. data/examples/basic.rb +13 -14
  28. data/examples/fairchild.rb +25 -20
  29. data/examples/maize.rb +37 -0
  30. data/examples/metavirt_cloud.rb +33 -0
  31. data/examples/simple.rb +13 -0
  32. data/examples/vmrun_cloud.rb +17 -0
  33. data/lib/poolparty/{aska/aska.rb → aska.rb} +3 -0
  34. data/lib/poolparty/core/array.rb +13 -1
  35. data/lib/poolparty/core/exception.rb +1 -1
  36. data/lib/poolparty/core/hash.rb +63 -2
  37. data/lib/poolparty/core/integer.rb +11 -0
  38. data/lib/poolparty/core/object.rb +41 -19
  39. data/lib/poolparty/core/proc.rb +0 -7
  40. data/lib/poolparty/core/string.rb +35 -2
  41. data/lib/poolparty/core/symbol.rb +10 -0
  42. data/lib/poolparty/core/time.rb +6 -0
  43. data/lib/poolparty/dependency_resolver/chef_resolver.rb +40 -41
  44. data/lib/poolparty/dependency_resolver/dependency_resolver.rb +1 -1
  45. data/lib/poolparty/dependency_resolver/dependency_resolver_cloud_extensions.rb +6 -6
  46. data/lib/poolparty/dependency_resolver/puppet.rb +0 -1
  47. data/lib/poolparty/dependency_resolver/puppet_resolver.rb +14 -48
  48. data/lib/poolparty/exceptions/MasterException.rb +2 -2
  49. data/lib/poolparty/extra/duration.rb +96 -0
  50. data/lib/poolparty/helpers/binary.rb +1 -1
  51. data/lib/poolparty/helpers/console.rb +0 -5
  52. data/lib/poolparty/helpers/optioner.rb +18 -13
  53. data/lib/poolparty/installers/base_installer.rb +113 -0
  54. data/lib/poolparty/installers/ec2.rb +141 -0
  55. data/lib/poolparty/installers/vmrun.rb +144 -0
  56. data/lib/poolparty/lite.rb +5 -2
  57. data/lib/poolparty/modules/callbacks.rb +15 -2
  58. data/lib/poolparty/modules/cloud_dsl.rb +10 -8
  59. data/lib/poolparty/modules/cloud_resourcer.rb +39 -59
  60. data/lib/poolparty/modules/daemonizable.rb +4 -5
  61. data/lib/poolparty/modules/definable_resource.rb +6 -7
  62. data/lib/poolparty/modules/file_writer.rb +2 -2
  63. data/lib/poolparty/modules/output.rb +2 -2
  64. data/lib/poolparty/modules/pinger.rb +9 -2
  65. data/lib/poolparty/modules/pretty_printer.rb +1 -1
  66. data/lib/poolparty/modules/resourcing_dsl.rb +1 -29
  67. data/lib/poolparty/modules/searchable_paths.rb +100 -0
  68. data/lib/poolparty/modules/user_helpers.rb +1 -1
  69. data/lib/poolparty/monitors/base_monitor.rb +65 -0
  70. data/lib/poolparty/monitors/monitor_daemon.rb +168 -0
  71. data/lib/poolparty/monitors/monitor_rack.rb +29 -15
  72. data/lib/poolparty/monitors/monitors/{time_monitor.rb → clock_monitor.rb} +7 -2
  73. data/lib/poolparty/monitors/monitors/cloud_monitor.rb +36 -0
  74. data/lib/poolparty/monitors/monitors/elections_monitor.rb +76 -0
  75. data/lib/poolparty/monitors/monitors/neighborhood_monitor.rb +15 -12
  76. data/lib/poolparty/monitors/monitors/stats_monitor.rb +68 -49
  77. data/lib/poolparty/net/init.rb +12 -7
  78. data/lib/poolparty/net/remote_instance.rb +48 -64
  79. data/lib/poolparty/net/remoter/cloud_control.rb +0 -177
  80. data/lib/poolparty/net/remoter/connections.rb +19 -14
  81. data/lib/poolparty/net/remoter/interactive.rb +30 -24
  82. data/lib/poolparty/net/remoter_base.rb +140 -48
  83. data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +119 -71
  84. data/lib/poolparty/net/remoter_bases/ec2/ec2_remote_instance.rb +42 -31
  85. data/lib/poolparty/net/remoter_bases/ec2/ec2_response_object.rb +75 -10
  86. data/lib/poolparty/net/remoter_bases/libvirt/libvirt.rb +73 -0
  87. data/lib/poolparty/net/remoter_bases/libvirt/libvirt_instance.rb +64 -0
  88. data/lib/poolparty/net/remoter_bases/metavirt/metavirt.rb +110 -0
  89. data/lib/poolparty/net/remoter_bases/metavirt/metavirt_instance.rb +37 -0
  90. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vm_disk.rb +1 -1
  91. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx.rb +1 -1
  92. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx_file.rb +117 -117
  93. data/lib/poolparty/net/remoter_bases/vmrun/vmrun.rb +59 -43
  94. data/lib/poolparty/net/remoter_bases/vmrun/vmrun_instance.rb +37 -21
  95. data/lib/poolparty/plugins/apache2/apache.rb +266 -0
  96. data/lib/poolparty/plugins/apache2/passenger_site.rb +86 -0
  97. data/lib/poolparty/plugins/apache2/php5.rb +40 -0
  98. data/lib/poolparty/plugins/apache2/virtual_host.rb +53 -0
  99. data/lib/poolparty/plugins/authorized_key.rb +29 -0
  100. data/lib/poolparty/plugins/bind.rb +5 -6
  101. data/lib/poolparty/plugins/{chef.rb → chef/chef.rb} +32 -44
  102. data/lib/poolparty/plugins/chef/chef_deploy.rb +55 -0
  103. data/lib/poolparty/plugins/chef/chef_deploy_definition.rb +32 -0
  104. data/lib/poolparty/plugins/chef/chef_library.rb +7 -0
  105. data/lib/poolparty/plugins/chef/chef_recipe.rb +7 -0
  106. data/lib/poolparty/plugins/chef/include_chef_recipe.rb +14 -0
  107. data/lib/poolparty/plugins/deploy_directory.rb +41 -26
  108. data/lib/poolparty/plugins/gem_package.rb +42 -14
  109. data/lib/poolparty/plugins/git.rb +62 -33
  110. data/lib/poolparty/{base_packages → plugins}/haproxy.rb +21 -20
  111. data/lib/poolparty/plugins/heartbeat.rb +16 -0
  112. data/lib/poolparty/plugins/host.rb +39 -0
  113. data/lib/poolparty/plugins/line_in_file.rb +24 -2
  114. data/lib/poolparty/plugins/plugin_template.rb +13 -0
  115. data/lib/poolparty/{base_packages/poolparty.rb → plugins/poolparty_base_packages.rb} +4 -6
  116. data/lib/poolparty/plugins/rails_deploy.rb +128 -0
  117. data/lib/poolparty/{base_packages → plugins}/ruby.rb +3 -3
  118. data/lib/poolparty/plugins/runit.rb +17 -92
  119. data/lib/poolparty/plugins/sshkey.rb +50 -0
  120. data/lib/poolparty/plugins/svn.rb +10 -8
  121. data/lib/poolparty/poolparty/cloud.rb +224 -61
  122. data/lib/poolparty/poolparty/default.rb +22 -15
  123. data/lib/poolparty/poolparty/key.rb +19 -28
  124. data/lib/poolparty/poolparty/neighborhoods.rb +16 -5
  125. data/lib/poolparty/poolparty/plugin.rb +49 -13
  126. data/lib/poolparty/poolparty/pool.rb +32 -9
  127. data/lib/poolparty/poolparty/poolparty_base_class.rb +65 -45
  128. data/lib/poolparty/poolparty/resource.rb +24 -49
  129. data/lib/poolparty/poolparty/service.rb +11 -9
  130. data/lib/poolparty/provision/boot_strapper.rb +48 -37
  131. data/lib/poolparty/provision/configurations/chef.rb +6 -5
  132. data/lib/poolparty/provision/dr_configure.rb +25 -19
  133. data/lib/poolparty/resources/cron.rb +37 -4
  134. data/lib/poolparty/resources/directory.rb +30 -0
  135. data/lib/poolparty/resources/exec.rb +31 -1
  136. data/lib/poolparty/resources/file.rb +54 -12
  137. data/lib/poolparty/resources/group.rb +21 -0
  138. data/lib/poolparty/resources/mount.rb +24 -4
  139. data/lib/poolparty/resources/package.rb +30 -6
  140. data/lib/poolparty/resources/remote_file.rb +33 -1
  141. data/lib/poolparty/resources/service.rb +22 -1
  142. data/lib/poolparty/resources/symlink.rb +37 -2
  143. data/lib/poolparty/resources/user.rb +25 -0
  144. data/lib/poolparty/resources/variable.rb +26 -1
  145. data/lib/poolparty/resources.rb +42 -0
  146. data/lib/poolparty/schema.rb +6 -8
  147. data/lib/poolparty/templates/apache2/apache2.conf +14 -0
  148. data/lib/poolparty/templates/apache2/base.conf.erb +168 -0
  149. data/lib/poolparty/templates/apache2/browser_fixes.conf.erb +26 -0
  150. data/lib/poolparty/templates/apache2/debian.conf.erb +675 -0
  151. data/lib/poolparty/templates/apache2/default-site.conf.erb +41 -0
  152. data/lib/poolparty/templates/apache2/directory_indexes.conf.erb +101 -0
  153. data/lib/poolparty/templates/apache2/logging-syslog.conf.erb +42 -0
  154. data/lib/poolparty/templates/apache2/mime-extras.conf.erb +211 -0
  155. data/lib/poolparty/templates/apache2/mime-minimal.conf.erb +15 -0
  156. data/lib/poolparty/templates/apache2/mpm-worker.conf.erb +20 -0
  157. data/lib/poolparty/templates/apache2/mpm-worker.erb +20 -0
  158. data/lib/poolparty/templates/apache2/passenger.conf.erb +20 -0
  159. data/lib/poolparty/templates/apache2/php.ini.erb +1253 -0
  160. data/lib/poolparty/templates/apache2/server-status.erb +19 -0
  161. data/lib/poolparty/templates/{gemrc → gemrc_template} +0 -0
  162. data/lib/poolparty/templates/haproxy.conf +2 -2
  163. data/lib/poolparty/templates/monitor.ru +13 -0
  164. data/lib/poolparty/templates/php.ini.erb +1253 -0
  165. data/lib/poolparty/verification/verifier_base.rb +10 -0
  166. data/lib/poolparty/verification/verifiers/http_match.rb +43 -0
  167. data/lib/poolparty/verification/verifiers/http_status.rb +59 -0
  168. data/lib/poolparty/verification/verifiers/ping.rb +18 -1
  169. data/lib/poolparty/verification/verify.rb +6 -0
  170. data/lib/poolparty.rb +14 -15
  171. data/lib/poolpartycl.rb +1 -1
  172. data/spec/bin/bin_spec_helper.rb +1 -0
  173. data/spec/bin/fixtures/bin_cloud_for_test.rb +0 -6
  174. data/spec/bin/server-list-active_spec.rb +4 -6
  175. data/spec/poolparty/core/object_spec.rb +1 -62
  176. data/spec/poolparty/core/ordered_hash_spec.rb +7 -7
  177. data/spec/poolparty/core/string_spec.rb +1 -1
  178. data/spec/poolparty/dependency_resolver/chef_resolver_spec.rb +0 -8
  179. data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +35 -32
  180. data/spec/poolparty/extra/deployments_spec.rb +68 -68
  181. data/spec/poolparty/fixtures/clouds.json +1 -1
  182. data/spec/poolparty/fixtures/fake_key.pub +1 -0
  183. data/spec/poolparty/helpers/optioner_spec.rb +4 -11
  184. data/spec/poolparty/modules/cloud_resourcer_spec.rb +1 -1
  185. data/spec/poolparty/modules/searchable_paths_spec.rb +83 -0
  186. data/spec/poolparty/net/remote_instance_spec.rb +1 -2
  187. data/spec/poolparty/net/remoter_base_spec.rb +7 -11
  188. data/spec/poolparty/net/remoter_bases/ec2_mocks_and_stubs.rb +9 -11
  189. data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +6 -56
  190. data/spec/poolparty/net/remoter_bases/ec2_spec.rb +10 -7
  191. data/spec/poolparty/net/remoter_spec.rb +2 -3
  192. data/spec/poolparty/plugins/authorized_key_spec.rb +23 -0
  193. data/spec/poolparty/plugins/deploydirectory_spec.rb +64 -51
  194. data/spec/poolparty/plugins/git_spec.rb +8 -10
  195. data/spec/poolparty/poolparty/cloud_spec.rb +61 -64
  196. data/spec/poolparty/poolparty/configurers/files/ruby_basic.rb +2 -4
  197. data/spec/poolparty/poolparty/configurers/files/ruby_plugins.rb +1 -1
  198. data/spec/poolparty/poolparty/configurers/ruby_spec.rb +1 -6
  199. data/spec/poolparty/poolparty/default_spec.rb +23 -22
  200. data/spec/poolparty/poolparty/example_spec.rb +47 -26
  201. data/spec/poolparty/{base_packages → poolparty}/haproxy_spec.rb +1 -1
  202. data/spec/poolparty/{base_packages → poolparty}/heartbeat_spec.rb +1 -1
  203. data/spec/poolparty/poolparty/key_spec.rb +2 -2
  204. data/spec/poolparty/poolparty/neighborhoods_spec.rb +1 -1
  205. data/spec/poolparty/poolparty/plugin_model_spec.rb +13 -17
  206. data/spec/poolparty/poolparty/plugin_spec.rb +7 -7
  207. data/spec/poolparty/poolparty/pool_spec.rb +4 -10
  208. data/spec/poolparty/poolparty/resource_spec.rb +25 -29
  209. data/spec/poolparty/poolparty/script_spec.rb +1 -4
  210. data/spec/poolparty/poolparty/test_plugins/webserver.rb +27 -25
  211. data/spec/poolparty/resources/file_spec.rb +5 -4
  212. data/spec/poolparty/resources/sshkey_spec.rb +39 -40
  213. data/spec/poolparty/spec_helper.rb +9 -39
  214. data/tasks/poolparty.rake +29 -1
  215. data/tasks/spec.rake +39 -1
  216. data/test/fixtures/fake_clouds.rb +11 -0
  217. data/test/fixtures/metavirt_cloud.json +1 -0
  218. data/test/fixtures/test_key +1 -0
  219. data/test/poolparty/core/array_test.rb +11 -0
  220. data/test/poolparty/core/hash_test.rb +5 -7
  221. data/test/poolparty/core/object_test.rb +29 -0
  222. data/test/poolparty/dependency_resolver/chef_resolver_test.rb +82 -0
  223. data/test/poolparty/dependency_resolver/puppet_resolver_test.rb +5 -26
  224. data/test/poolparty/modules/callbacks_test.rb +1 -1
  225. data/test/poolparty/modules/cloud_dsl_test.rb +10 -8
  226. data/test/poolparty/monitors/test_base_monitor.rb +17 -0
  227. data/test/poolparty/monitors/test_monitor_rack.rb +26 -0
  228. data/test/poolparty/net/remoter_base_test.rb +17 -0
  229. data/test/poolparty/net/remoter_bases/libvirt/libvirt_test.rb +70 -0
  230. data/test/poolparty/net/remoter_bases/metavirt/metavirt_test.rb +81 -0
  231. data/test/poolparty/net/remoter_bases/vmrun/vmrun_test.rb +58 -27
  232. data/test/poolparty/plugins/chef_deploy_test.rb +37 -0
  233. data/test/poolparty/plugins/chef_plugin_test.rb +23 -0
  234. data/test/poolparty/plugins/rails_deploy_test.rb +50 -0
  235. data/test/poolparty/poolparty/cloud_test.rb +65 -0
  236. data/test/poolparty/poolparty/isolated_cloud_test.rb +25 -0
  237. data/test/poolparty/poolparty/neighborhood_test.rb +1 -1
  238. data/test/poolparty/poolparty/plugin_test.rb +19 -0
  239. data/test/poolparty/poolparty/pool_test.rb +22 -0
  240. data/test/poolparty/poolparty/poolparty_base_class_test.rb +53 -15
  241. data/test/poolparty/poolparty/schema_test.rb +13 -0
  242. data/test/poolparty/poolparty/template_test.rb +6 -6
  243. data/test/poolparty/verification/verify_test.rb +7 -3
  244. data/test/test_helper.rb +15 -4
  245. data/test/test_methods.rb +11 -0
  246. data/vendor/chef/apache2/attributes/apache.rb +1 -1
  247. data/vendor/gems/dslify/LICENSE +20 -0
  248. data/vendor/gems/dslify/README.rdoc +33 -0
  249. data/vendor/gems/dslify/Rakefile +56 -0
  250. data/vendor/gems/dslify/VERSION.yml +4 -0
  251. data/vendor/gems/dslify/dslify.gemspec +29 -0
  252. data/vendor/gems/dslify/lib/dslify.rb +81 -0
  253. data/vendor/gems/dslify/test/dslify_test.rb +283 -0
  254. data/vendor/gems/dslify/test/test_helper.rb +7 -0
  255. data/vendor/gems/git-style-binaries/README.markdown +280 -0
  256. data/vendor/gems/git-style-binaries/Rakefile +64 -0
  257. data/vendor/gems/git-style-binaries/VERSION.yml +4 -0
  258. data/vendor/gems/git-style-binaries/doc/EXAMPLES +1 -0
  259. data/vendor/gems/git-style-binaries/doc/gsb-screencast.png +0 -0
  260. data/vendor/gems/git-style-binaries/doc/poolparty-binaries.screenplay +412 -0
  261. data/vendor/gems/git-style-binaries/git-style-binaries.gemspec +78 -0
  262. data/vendor/gems/git-style-binaries/lib/ext/colorize.rb +198 -0
  263. data/vendor/gems/git-style-binaries/lib/ext/core.rb +16 -0
  264. data/vendor/gems/git-style-binaries/lib/git-style-binary/autorunner.rb +21 -0
  265. data/vendor/gems/git-style-binaries/lib/git-style-binary/command.rb +204 -0
  266. data/vendor/gems/git-style-binaries/lib/git-style-binary/commands/help.rb +32 -0
  267. data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/name_resolver.rb +78 -0
  268. data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb +37 -0
  269. data/vendor/gems/git-style-binaries/lib/git-style-binary/parser.rb +223 -0
  270. data/vendor/gems/git-style-binaries/lib/git-style-binary.rb +88 -0
  271. data/vendor/gems/git-style-binaries/test/fixtures/flickr +4 -0
  272. data/vendor/gems/git-style-binaries/test/fixtures/flickr-download +17 -0
  273. data/vendor/gems/git-style-binaries/test/fixtures/wordpress +42 -0
  274. data/vendor/gems/git-style-binaries/test/fixtures/wordpress-categories +18 -0
  275. data/vendor/gems/git-style-binaries/test/fixtures/wordpress-list +18 -0
  276. data/vendor/gems/git-style-binaries/test/fixtures/wordpress-post +26 -0
  277. data/vendor/gems/git-style-binaries/test/git-style-binary/command_test.rb +17 -0
  278. data/vendor/gems/git-style-binaries/test/git_style_binary_test.rb +21 -0
  279. data/vendor/gems/git-style-binaries/test/running_binaries_test.rb +224 -0
  280. data/vendor/gems/git-style-binaries/test/shoulda_macros/matching_stdio.rb +13 -0
  281. data/vendor/gems/git-style-binaries/test/test_helper.rb +28 -0
  282. data/vendor/gems/parenting/History.txt +4 -0
  283. data/vendor/gems/parenting/Manifest.txt +14 -0
  284. data/vendor/gems/parenting/PostInstall.txt +2 -0
  285. data/vendor/gems/parenting/README.rdoc +47 -0
  286. data/vendor/gems/parenting/Rakefile +28 -0
  287. data/vendor/gems/parenting/lib/parenting/parenting.rb +70 -0
  288. data/vendor/gems/parenting/lib/parenting.rb +10 -0
  289. data/vendor/gems/parenting/parenting.gemspec +39 -0
  290. data/vendor/gems/parenting/script/console +10 -0
  291. data/vendor/gems/parenting/script/destroy +14 -0
  292. data/vendor/gems/parenting/script/generate +14 -0
  293. data/vendor/gems/parenting/test/file_to_eval.rb +9 -0
  294. data/vendor/gems/parenting/test/test_helper.rb +5 -0
  295. data/vendor/gems/parenting/test/test_parenting.rb +117 -0
  296. data/vendor/gems/suitcase/LICENSE +20 -0
  297. data/vendor/gems/suitcase/README.rdoc +31 -0
  298. data/vendor/gems/suitcase/Rakefile +57 -0
  299. data/vendor/gems/suitcase/VERSION.yml +4 -0
  300. data/vendor/gems/suitcase/lib/suitcase/unzipper.rb +15 -0
  301. data/vendor/gems/suitcase/lib/suitcase/zipper.rb +167 -0
  302. data/vendor/gems/suitcase/lib/suitcase.rb +5 -0
  303. data/vendor/gems/suitcase/suitcase.gemspec +32 -0
  304. data/vendor/gems/suitcase/test/suitcase_test.rb +108 -0
  305. data/vendor/gems/suitcase/test/test_dir/box.rb +1 -0
  306. data/vendor/gems/suitcase/test/test_dir/gems/famoseagle-carrot-0.6.0.gem +0 -0
  307. data/vendor/gems/suitcase/test/test_dir/test.txt +1 -0
  308. data/vendor/gems/suitcase/test/test_helper.rb +12 -0
  309. data/vendor/gems/trollop/FAQ.txt +35 -0
  310. data/vendor/gems/trollop/History.txt +97 -0
  311. data/vendor/gems/trollop/Manifest.txt +7 -0
  312. data/vendor/gems/trollop/README.txt +40 -0
  313. data/vendor/gems/trollop/Rakefile +36 -0
  314. data/vendor/gems/trollop/lib/trollop.rb +735 -0
  315. data/vendor/gems/trollop/release-script.txt +13 -0
  316. data/vendor/gems/trollop/test/test_trollop.rb +1042 -0
  317. data/vendor/gems/trollop/www/index.html +167 -0
  318. metadata +205 -150
  319. data/bin/cloud-describe +0 -28
  320. data/bin/cloud-handle-load +0 -27
  321. data/bin/cloud-rsync +0 -28
  322. data/bin/cloud-spec +0 -41
  323. data/bin/messenger-get-current-nodes +0 -14
  324. data/bin/server-become-master +0 -24
  325. data/bin/server-build-messenger +0 -28
  326. data/bin/server-clean-cert-for +0 -15
  327. data/bin/server-provision +0 -32
  328. data/bin/server-start-agent +0 -15
  329. data/bin/server-start-client +0 -29
  330. data/bin/server-start-master +0 -26
  331. data/bin/server-start-node +0 -32
  332. data/bin/server-stop-client +0 -3
  333. data/bin/server-stop-master +0 -3
  334. data/bin/server-stop-node +0 -3
  335. data/bin/server-update-hosts +0 -49
  336. data/examples/poolparty.rb +0 -12
  337. data/lib/poolparty/base_packages/heartbeat.rb +0 -58
  338. data/lib/poolparty/base_packages/runit.rb +0 -21
  339. data/lib/poolparty/capistrano/cloud_tasks.rb +0 -10
  340. data/lib/poolparty/capistrano.rb +0 -54
  341. data/lib/poolparty/config/postlaunchmessage.txt +0 -5
  342. data/lib/poolparty/core/metaid.rb +0 -15
  343. data/lib/poolparty/core/module.rb +0 -40
  344. data/lib/poolparty/extra/deployments.rb +0 -31
  345. data/lib/poolparty/helpers/display.rb +0 -30
  346. data/lib/poolparty/net/messenger.rb +0 -57
  347. data/lib/poolparty/net/remote_bases.rb +0 -21
  348. data/lib/poolparty/plugins/chef_deploy.rb +0 -58
  349. data/lib/poolparty/plugins/dynomite.rb +0 -14
  350. data/lib/poolparty/plugins/nanite.rb +0 -41
  351. data/lib/poolparty/plugins/rsyncmirror.rb +0 -28
  352. data/lib/poolparty/plugins/tokyo_tyrant.rb +0 -23
  353. data/lib/poolparty/poolparty/plugin_model.rb +0 -45
  354. data/lib/poolparty/resources/host.rb +0 -16
  355. data/lib/poolparty/resources/sshkey.rb +0 -27
  356. data/lib/poolparty/services/conditional.rb +0 -46
  357. data/lib/poolparty/spec/core/string.rb +0 -18
  358. data/lib/poolparty/spec/matchers/a_spec_extensions_base.rb +0 -26
  359. data/lib/poolparty/spec/matchers/have_cron.rb +0 -28
  360. data/lib/poolparty/spec/matchers/have_deploydirectory.rb +0 -15
  361. data/lib/poolparty/spec/matchers/have_directory.rb +0 -31
  362. data/lib/poolparty/spec/matchers/have_exec.rb +0 -28
  363. data/lib/poolparty/spec/matchers/have_file.rb +0 -28
  364. data/lib/poolparty/spec/matchers/have_gempackage.rb +0 -28
  365. data/lib/poolparty/spec/matchers/have_git.rb +0 -28
  366. data/lib/poolparty/spec/matchers/have_host.rb +0 -28
  367. data/lib/poolparty/spec/matchers/have_mount.rb +0 -28
  368. data/lib/poolparty/spec/matchers/have_package.rb +0 -28
  369. data/lib/poolparty/spec/matchers/have_remotefile.rb +0 -28
  370. data/lib/poolparty/spec/matchers/have_rsyncmirror.rb +0 -28
  371. data/lib/poolparty/spec/matchers/have_service.rb +0 -28
  372. data/lib/poolparty/spec/matchers/have_sshkey.rb +0 -28
  373. data/lib/poolparty/spec/matchers/have_symlink.rb +0 -28
  374. data/lib/poolparty/spec/matchers/have_variable.rb +0 -32
  375. data/lib/poolparty/spec/spec/dynamic_matchers.rb +0 -63
  376. data/lib/poolparty/spec/spec/ensure_matchers_exist.rb +0 -7
  377. data/lib/poolparty/spec/templates/have_base.rb +0 -28
  378. data/lib/poolparty/spec.rb +0 -31
  379. data/spec/poolparty/core/module_spec.rb +0 -15
  380. data/spec/poolparty/helpers/display_spec.rb +0 -13
  381. data/spec/poolparty/id_rsa +0 -27
  382. data/spec/poolparty/net/messenger_spec.rb +0 -16
  383. data/spec/poolparty/resources/host_spec.rb +0 -35
  384. data/spec/poolparty/services/conditional_spec.rb +0 -52
  385. data/spec/poolparty/spec/core/string_spec.rb +0 -57
@@ -0,0 +1,266 @@
1
+ module PoolParty
2
+ module Plugin
3
+
4
+ =begin rdoc
5
+
6
+ Install Apache2 and make various helpers accessible.
7
+
8
+ NOTE: this will not install a virtual host by default, *including* a default
9
+ host. This means apache will not start up unless you specify at least the
10
+ default host.
11
+
12
+ =end
13
+ class Apache < Plugin
14
+ dsl_methods :passenger_version
15
+
16
+ default_options :port => 80,
17
+ :www_user => 'www-data'
18
+
19
+ def loaded(opts={}, &block)
20
+ configs
21
+ has_service("apache2", :requires => get_package("apache2"))
22
+ end
23
+
24
+ def enable
25
+ enable_default
26
+ end
27
+
28
+ def before_load(o={}, &block)
29
+ install
30
+ end
31
+
32
+ def install
33
+ installed_as_worker
34
+ end
35
+
36
+ def installed_as_worker
37
+ unless @installed_as_worker
38
+ has_package("apache2")
39
+ # has_package("apache2-mpm-worker")
40
+
41
+ base_install
42
+ @installed_as_worker = true
43
+ end
44
+ end
45
+
46
+ def base_install
47
+ unless @base_install
48
+ has_exec({:name => "restart-apache2", :command => "/etc/init.d/apache2 restart", :action => :nothing})
49
+ has_exec({:name => "reload-apache2", :command => "/etc/init.d/apache2 reload", :action => :nothing})
50
+ has_exec({:name => "force-reload-apache2", :command => "/etc/init.d/apache2 force-reload", :action => :nothing})
51
+ @base_install = true
52
+ end
53
+ end
54
+
55
+ def install_passenger# {{{
56
+ install
57
+ enable_passenger
58
+ end# }}}
59
+
60
+ def enable_passenger
61
+ unless @enable_passenger
62
+ installed_as_worker
63
+ has_package "build-essential"
64
+ has_package "apache2-prefork-dev"
65
+ has_gem_package "fastthread"
66
+ has_gem_package "passenger"
67
+ passenger_configs
68
+
69
+ has_exec(:name => "install_passenger_script",
70
+ :command => 'echo -en \"\\\\n\\\\n\\\\n\\\\n\" | passenger-install-apache2-module',
71
+ :if_not => "test -f /etc/apache2/conf.d/passenger.conf && test -s /etc/apache2/conf.d/passenger.conf",
72
+ :creates => lambda { "node[:poolparty][:passenger_module_path]" },
73
+ :calls => get_exec("restart-apache2")
74
+ )
75
+
76
+ @enable_passenger = true
77
+ end
78
+ end
79
+
80
+ def passenger_configs
81
+ unless @passenger_configs
82
+ has_variable "gems_path", :value => lambda { "`gem env gemdir`.chomp!" }
83
+ has_variable "ruby_path", :value => lambda { "`which ruby`.chomp!" }
84
+
85
+ passenger_version ||= "2.2.2"
86
+
87
+ has_variable("passenger_version", :value => passenger_version)
88
+ has_variable("passenger_root_path", :value => "\#{poolparty[:gems_path]}/gems/passenger-#{passenger_version}")
89
+ has_variable("passenger_module_path", :value => "\#{poolparty[:passenger_root_path]}/ext/apache2/mod_passenger.so")
90
+
91
+ has_file(:name => "/etc/apache2/mods-available/passenger.load") do
92
+ content <<-eof
93
+ LoadModule passenger_module <%= @node[:poolparty][:passenger_module_path] %>
94
+ eof
95
+ end
96
+
97
+ has_file(:name => "/etc/apache2/mods-available/passenger.conf") do
98
+ content <<-eof
99
+ PassengerRoot <%= @node[:poolparty][:passenger_root_path] %>
100
+ PassengerRuby <%= @node[:poolparty][:ruby_path] %>
101
+ eof
102
+ end
103
+
104
+ present_apache_module(:passenger)
105
+ @passenger_configs = true
106
+ end
107
+ end
108
+
109
+ # def enable_ssl# {{{
110
+ # unless @enable_ssl
111
+ # has_package("apache2.2-common")
112
+ # has_package("openssl")
113
+ # has_variable(:name => "ssl_enabled", :value => "true")
114
+
115
+ # has_exec(:command => "a2enmod ssl") do
116
+ # requires [ get_package("openssl") ]
117
+ # if_not "/usr/bin/test -L /etc/apache2/mods-enabled/ssl.load"
118
+ # calls get_exec("restart-apache2")
119
+ # end
120
+ # @enable_ssl = true
121
+ # end
122
+ # end# }}}
123
+
124
+ def configs
125
+ unless @configs
126
+ listen(port) unless @listen
127
+ has_directory("/etc/apache2")
128
+ has_directory("/etc/apache2/conf.d")
129
+ has_directory("/etc/apache2/site-includes")
130
+
131
+ has_file(:name => "/etc/apache2/apache2.conf") do
132
+ mode 0644
133
+ requires get_directory("/etc/apache2/conf.d")
134
+ template "apache2"/"apache2.conf"
135
+ end
136
+ # does_not_have_file(:name => "/etc/apache2/ports.conf")
137
+
138
+ has_exec(:command => "/usr/sbin/a2dissite default") do
139
+ only_if "/usr/bin/test -L /etc/apache2/sites-enabled/000-default"
140
+ calls get_exec("reload-apache2")
141
+ end
142
+
143
+ # Base config
144
+ config("base", "apache2"/"base.conf.erb")
145
+ config("mime", "apache2"/"mime-minimal.conf.erb")
146
+ config("browser_fixes", "apache2"/"browser_fixes.conf.erb")
147
+
148
+ present_apache_module("mime", "rewrite")
149
+ # end
150
+ @configs = true
151
+ end
152
+ end
153
+
154
+ def enable_default
155
+ listen 80 # assumes no haproxy
156
+ site "default-site", :template => :apache2/"default-site.conf.erb"
157
+ end
158
+
159
+
160
+ def config(name, temp)
161
+ has_file(:name => "/etc/apache2/conf.d/#{name}.conf") do
162
+ template temp
163
+ calls get_exec("reload-apache2")
164
+ end
165
+ end
166
+
167
+ def listen(p="80")
168
+ has_variable(:name => "port", :value => p)
169
+ self.port = p
170
+ @listen = true
171
+ end
172
+
173
+ def site(name, opts={})
174
+ case opts[:ensure] || "present"
175
+ when "present", "installed"
176
+ install_site(name, opts)
177
+ when "absent"
178
+ has_exec(:command => "/usr/sbin/a2dissite #{name}", :calls => get_exec("reload-apache2")) do
179
+ requires get_package("apache2")
180
+ only_if "/bin/sh -c \"[ -L /etc/apache2/sites-enabled/#{name} ] && [ /etc/apache2/sites-enabled/#{name} -ef /etc/apache2/sites-available/#{name}]\""
181
+ end
182
+ end
183
+ end
184
+
185
+ def install_site(name, opts={})
186
+ opts.merge!(:name => "/etc/apache2/sites-available/#{name}")
187
+ has_directory(:name => "/etc/apache2/sites-available")
188
+ has_file(opts) unless opts[:no_file]
189
+ has_exec(:name => "/usr/sbin/a2ensite #{name}", :calls => get_exec("reload-apache2")) do
190
+ requires get_package("apache2")
191
+ if_not "/bin/sh -c '[ -L /etc/apache2/sites-enabled/#{name} ] && [ /etc/apache2/sites-enabled/#{name} -ef /etc/apache2/sites-available/#{name} ]'"
192
+ end
193
+ end
194
+
195
+ def site_include(name, content, ensureer="present")
196
+ has_file(:name => "/etc/apache2/site-includes/#{name}.inc", :ensures => ensureer, :content => content, :requires => get_file("/etc/apache2/site-includes"))
197
+ end
198
+
199
+ def present_apache_module(*names)
200
+ names.each do |name|
201
+ has_exec(:name => "mod-#{name}", :command => "/usr/sbin/a2enmod #{name}") do
202
+ requires get_package("apache2")
203
+ if_not "/bin/sh -c \'[ -L /etc/apache2/mods-enabled/#{name}.load ] && [ /etc/apache2/mods-enabled/#{name}.load -ef /etc/apache2/mods-available/#{name}.load ]\'"
204
+ calls get_exec("force-reload-apache2")
205
+ end
206
+ end
207
+ end
208
+
209
+ def absent_apache_module(*names)
210
+ names.each do |name|
211
+ has_exec({:name => "no-mod-#{name}"}, :command => "/usr/sbin/a2dismod #{name}") do
212
+ requires get_package("apache2")
213
+ if_not "/bin/sh -c \'[ -L /etc/apache2/mods-enabled/#{name}.load ] && [ /etc/apache2/mods-enabled/#{name}.load -ef /etc/apache2/mods-available/#{name}.load ]\'"
214
+ calls get_exec("force-reload-apache2")
215
+ end
216
+ end
217
+ end
218
+
219
+ end
220
+
221
+ # plugin(:passengersite_with_ssl) do# {{{
222
+ # def loaded(opts={}, parent=self)
223
+ # enable_passenger
224
+
225
+ # has_variable(:name => "virtualhost_name", :value => name)
226
+ # has_variable(:name => "port", :value => port.nil? ? "8080" : port)
227
+
228
+ # has_directory(:name => "/var/www")
229
+ # has_directory(:name => "/var/www/#{name}")
230
+ # has_directory(:name => "/var/www/#{name}/log", :requires => get_directory("/var/www/#{name}/"))
231
+
232
+ # has_variable(:name => "passenger_name", :value => name)
233
+
234
+ # has_file(options.merge({:name => "/etc/apache2/sites-available/#{name}", :ensures => 'present', :alias => "#{name}", :requires => get_package("apache2")})) do
235
+ # template File.dirname(__FILE__), "/../templates/webserver", "passenger.conf.erb"
236
+ # end
237
+
238
+ # has_exec(:command => "/usr/sbin/a2ensite #{name}", :calls => 'Exec["reload-apache2"]', :requires => get_file("/etc/apache2/sites-available/#{name}")) do
239
+ # if_not "/bin/sh -c \"[ -L /etc/apache2/sites-enabled/#{@parent.name} ] && [ /etc/apache2/sites-enabled/#{@parent.name} -ef /etc/apache2/sites-available/#{@parent.name} ]\""
240
+ # end
241
+ # end
242
+
243
+ # tell apache ssl which certificate/private key files to use for this virtual site
244
+ # def certificate(cert_path, key_path)
245
+ # cert_name = File.basename(cert_path)
246
+ # key_name = File.basename(key_path)
247
+ # has_variable(:name => "ssl_cert_file", :value => "/var/www/#{name}/cert/#{cert_name}")
248
+ # has_variable(:name => "ssl_private_key_file", :value => "/var/www/#{name}/cert/#{key_name}")
249
+
250
+ # has_directory(:name => "/var/www")
251
+ # has_directory(:name => "/var/www/#{name}")
252
+ # has_directory(:name => "/var/www/#{name}/cert", :requires => get_directory("/var/www/#{name}/"))
253
+
254
+ # has_file(:name => "/var/www/#{name}/cert/#{cert_name}") do
255
+ # content open(cert_path).read
256
+ # end
257
+ # has_file(:name => "/var/www/#{name}/cert/#{key_name}") do
258
+ # content open(key_path).read
259
+ # end
260
+ # end
261
+ # end
262
+ # }}}
263
+
264
+ end
265
+
266
+ end
@@ -0,0 +1,86 @@
1
+ require File.dirname(__FILE__)+'/apache'
2
+ module PoolParty
3
+ module Plugin
4
+ # Usage:
5
+ #
6
+ # passengersite do
7
+ # end
8
+ class PassengerSite < Apache
9
+
10
+ default_options(
11
+ :dir => "/var/www",
12
+ :appended_path => nil,
13
+ :owner => 'www-data',
14
+ :mode =>'0744',
15
+ :enviornment => 'production',
16
+ :deploy_dirs => false
17
+ )
18
+
19
+ def loaded(opts={}, prnt=nil)
20
+ enable_passenger
21
+ port "80" unless self.port
22
+
23
+ has_directory(:name => dir, :owner => www_user, :mode => '0744')
24
+ has_directory(:name => "#{site_directory}", :owner => www_user, :mode => '0744')
25
+ has_site_directory 'logs'
26
+
27
+ if deploy_dirs || opts[:with_deployment_directories]
28
+ has_site_directory "shared"
29
+ has_site_directory "shared/public"
30
+ has_site_directory "shared/config"
31
+ has_site_directory "shared/log"
32
+ has_site_directory "releases"
33
+ if !::File.exists?("#{dir}/#{name}/current")
34
+
35
+ # setup an initial symlink so apache will start even if there have not been any deploys yet
36
+ has_site_directory "releases/initial/public"
37
+ #FIXME the following line is chef specific. It will fail with puppet
38
+ has_symlink({:target_file => "#{dir}/#{name}/current",
39
+ :to => "#{dir}/#{name}/releases/initial"})
40
+ end
41
+ log_dir = "#{site_directory}/shared/log"
42
+ appended_path "current"
43
+
44
+ else
45
+ log_dir = "#{site_directory}/log"
46
+ end
47
+
48
+ passenger_entry <<-EOE
49
+ <VirtualHost *:#{port}>
50
+ ServerName #{name}
51
+ DocumentRoot #{site_directory}/public
52
+ RailsEnv #{enviornment}
53
+ ErrorLog #{log_dir}/error_log
54
+ CustomLog #{log_dir}/access_log common
55
+ </VirtualHost>
56
+ EOE
57
+
58
+ # has_directory(:name => "/var/www")
59
+ # has_directory(:name => "/var/www/#{name}")
60
+ # has_directory(:name => "/var/www/#{name}/log")
61
+ parent.install_site(name, :no_file => true) # we already created the file with #passenger_entry
62
+ end
63
+
64
+ def passenger_entry(file)
65
+ if ::File.file?(file)
66
+ has_file({:name => "/etc/apache2/sites-available/#{name}", :template => file})
67
+ else
68
+ has_file({:content => file, :name => "/etc/apache2/sites-available/#{name}" })
69
+ end
70
+ end
71
+
72
+ def has_site_directory( dir_name='' , opts={})
73
+ has_directory({ :name => "#{site_directory}/#{dir_name}",
74
+ :owner => www_user,
75
+ :mode =>'0744'
76
+ }.merge(opts) )
77
+ end
78
+
79
+ def site_directory
80
+ "#{dir}/#{name}%s" % [appended_path ? "/" + appended_path : ""]
81
+ end
82
+ end
83
+
84
+ end
85
+
86
+ end
@@ -0,0 +1,40 @@
1
+ require File.dirname(__FILE__)+'/apache'
2
+ module PoolParty
3
+ module Plugin
4
+ # Usage:
5
+ #
6
+ # enable_php5 do
7
+ # extras :cli, :pspell, :mysql
8
+ # end
9
+ class EnablePhp5 < Plugin
10
+ def loaded(opts={}, parent=self)
11
+ has_package(:name => "php5")
12
+ has_package(:name => "libapache2-mod-php5")
13
+ present_apache_module("php5")
14
+ has_file({:name => "/etc/php5/apache2/php.ini",
15
+ :template => "apache2/php.ini.erb",
16
+ :mode => 755,
17
+ :requires => get_package("libapache2-mod-php5"),
18
+ :calls => get_exec("reload-apache2")})
19
+
20
+ has_file(:name => "/etc/apache2/conf.d/enable-php.conf",
21
+ :mode => 755,
22
+ :calls => get_exec("reload-apache2"),
23
+ :content => <<-eos
24
+ AddHandler php5-script php
25
+ AddType text/html php
26
+ eos
27
+ )
28
+ end
29
+
30
+ def extras(*names)
31
+ names.each do |name|
32
+ has_package(:name => "php5-#{name}")
33
+ end
34
+ end
35
+
36
+ end
37
+
38
+ end
39
+
40
+ end
@@ -0,0 +1,53 @@
1
+ require File.dirname(__FILE__)+'/apache'
2
+ module PoolParty
3
+ module Plugin
4
+ class VirtualHost < Plugin
5
+ def listen(port="80")
6
+ has_variable(:name => "port", :value => port)
7
+ port port
8
+ end
9
+
10
+ def virtual_host_entry(file)
11
+ @virtual_host_entry = true
12
+ if ::File.file?(file)
13
+ has_file(dsl_options.merge({:name => "/etc/apache2/sites-available/#{name}",
14
+ :template => file,
15
+ :requires => get_package("apache2")}))
16
+ else
17
+ has_file(dsl_options.merge({:content => file,
18
+ :name => "/etc/apache2/sites-available/#{name}",
19
+ :requires => get_package("apache2")}))
20
+ end
21
+ end
22
+
23
+
24
+ def loaded(opts={}, parent=self)
25
+ has_directory(:name => "/var/www", :owner => www_user, :mode=>'0744')
26
+ has_directory(:name => "/var/www/#{name}", :owner => www_user, :mode=>'0744')
27
+ has_directory(:name => "/var/www/#{name}/logs", :owner => www_user, :mode=>'0744')
28
+
29
+ has_variable(:name => "sitename", :value => "#{name}")
30
+
31
+ unless @virtual_host_entry
32
+ virtual_host_entry <<-eof
33
+ <VirtualHost *:#{port}>
34
+ ServerName #{name}
35
+ DocumentRoot /var/www/#{name}
36
+ </VirtualHost>
37
+ eof
38
+ end
39
+
40
+ has_exec(:name => "insert-site-#{name}",
41
+ :command => "/usr/sbin/a2ensite #{name}",
42
+ :calls => get_exec("reload-apache2"),
43
+ :requires => get_file("/etc/apache2/sites-available/#{name}")) do
44
+ requires get_package("apache2")
45
+ if_not "/bin/sh -c '[ -L /etc/apache2/sites-enabled/#{parent.name} ] && [ /etc/apache2/sites-enabled/#{parent.name} -ef /etc/apache2/sites-available/#{parent.name} ]'"
46
+ end
47
+ end
48
+
49
+ end
50
+
51
+ end
52
+
53
+ end
@@ -0,0 +1,29 @@
1
+ =begin rdoc
2
+ Authorized key
3
+
4
+ Usage:
5
+ has_authorized_key :for_user => "username",
6
+ :public_key_file => "/Users/alerner/.ssh/id_rsa.pub"
7
+ =end
8
+ module PoolParty
9
+ module Plugin
10
+ class AuthorizedKey < Plugin
11
+
12
+ default_options(
13
+ :for_user => "root",
14
+ :public_key_file => nil
15
+ )
16
+
17
+ def loaded(o={}, &block)
18
+ has_directory "~#{for_user}/.ssh", :owner => for_user
19
+ has_file "~#{for_user}/.ssh/authorized_keys", :content => ""
20
+ has_line_in_file(:line => public_key_content, :file => "~#{for_user}/.ssh/authorized_keys")
21
+ end
22
+
23
+ def public_key_content
24
+ open(public_key_file).read
25
+ end
26
+
27
+ end
28
+ end
29
+ end
@@ -1,11 +1,10 @@
1
1
  module PoolParty
2
- class Base
3
- plugin :bind do
4
-
2
+ module Plugin
3
+
4
+ class Bind < Plugin
5
5
  def enable
6
-
7
6
  end
8
-
9
7
  end
8
+
10
9
  end
11
- end
10
+ end
@@ -1,25 +1,16 @@
1
+ $:.unshift(::File.dirname(__FILE__))
1
2
  require "tempfile"
3
+ require "chef_deploy"
4
+ require "chef_library"
5
+ require "chef_recipe"
6
+ require "include_chef_recipe"
7
+
2
8
  # BIG TODO: Slim the place where the content is gathered from
3
9
  module PoolParty
4
- class ChefRecipe
5
- include Dslify
6
- end
7
- class Chef
8
- define_resource :chef_recipe do
9
- end
10
- define_resource :chef_library do
11
- end
12
-
13
- plugin :include_chef_recipe do
14
- def loaded(opts={}, &block)
15
- parent.has_chef_recipe ::File.basename(name)
16
- end
17
- def before_configure
18
- ::Suitcase::Zipper.add(name, "chef/cookbooks") if ::File.exist?(name)
19
- end
20
- end
10
+
11
+ module Plugin
21
12
 
22
- plugin :chef do
13
+ class Chef < Plugin
23
14
  def before_load(o, &block)
24
15
  end
25
16
 
@@ -31,22 +22,19 @@ module PoolParty
31
22
  end
32
23
 
33
24
  def basedir
34
- @basedir ||= "#{Default.tmp_path}/dr_configure/chef/cookbooks/main"
25
+ @basedir ||= "#{cloud.tmp_path}/dr_configure/chef/cookbooks/main"
35
26
  end
36
27
 
37
28
  def recipe(file=nil, o={}, &block)
38
29
  if file
39
- file = ::File.expand_path(file)
40
- ::FileUtils.mkdir_p "#{basedir}/recipes"
41
-
42
- unless ::File.file?(file)
43
- tfile = Tempfile.new("main-poolparty-recipe")
44
- tfile << file # copy the string into the temp file
45
- file = tfile.path
46
- end
47
- ::FileUtils.rm "#{basedir}/recipes/default.rb" if ::File.file?("#{basedir}/recipes/default.rb")
48
- ::File.cp file, "#{basedir}/recipes/default.rb"
30
+ file = search_in_known_locations(file)
31
+ raise RecipeNotFoundError.new(file) unless file
49
32
 
33
+ ::FileUtils.mkdir_p "#{basedir}/recipes" unless ::File.directory?("#{basedir}/recipes")
34
+ ::FileUtils.rm "#{basedir}/recipes/default.rb" if ::File.file?("#{basedir}/recipes/default.rb")
35
+ # ::FileUtils.cp file, "#{basedir}/recipes/default.rb"
36
+ ::File.open("#{basedir}/recipes/default.rb", "w") {|f| f << open(file).read }
37
+
50
38
  templates o[:templates] if o[:templates]
51
39
 
52
40
  recipe_files << basedir
@@ -66,13 +54,13 @@ module PoolParty
66
54
  templates.each do |f|
67
55
  f = ::File.expand_path(f)
68
56
  if ::File.file?(f)
69
- ::File.cp f, "#{basedir}/templates/default/#{::File.basename(f)}"
57
+ ::FileUtils.cp f, "#{basedir}/templates/default/#{::File.basename(f)}"
70
58
  elsif ::File.directory?(f)
71
- Dir["#{f}/**"].each {|f| ::File.cp f, "#{basedir}/templates/default/#{::File.basename(f)}" }
59
+ Dir["#{f}/**"].each {|f| ::FileUtils.cp f, "#{basedir}/templates/default/#{::File.basename(f)}" }
72
60
  else
73
61
  tfile = Tempfile.new("main-poolparty-recipe")
74
62
  tfile << f # copy the string into the temp file
75
- ::File.cp tfile.path, "#{basedir}/templates/default/#{::File.basename(f)}"
63
+ ::FileUtils.cp tfile.path, "#{basedir}/templates/default/#{::File.basename(f)}"
76
64
  end
77
65
  end
78
66
  end
@@ -91,11 +79,11 @@ module PoolParty
91
79
  end
92
80
  else
93
81
  unless @recipe
94
- @recipe = ChefRecipe.new
95
- @recipe.instance_eval &block if block
96
- @recipe.recipes(recipe_files.empty? ? ["poolparty"] : ["poolparty", "main"])
97
- # ::File.open("#{Default.tmp_path}/dr_configure/dna.json", "w+") {|f| f << @recipe.options.to_json }
98
- ::Suitcase::Zipper.add_content_as(@recipe.options.to_json, "dna.json", "chef")
82
+ # @recipe = has_chef_recipe "poolparty", &block
83
+ # @recipe.instance_eval(&block) if block
84
+ # @recipe.recipes(recipe_files.empty? ? ["poolparty"] : ["poolparty", "main"])
85
+ dna_content = recipe_files.empty? ? ["poolparty"] : ["poolparty", "main"]
86
+ ::Suitcase::Zipper.add_content_as({:recipes => dna_content}.to_json, "dna.json", "chef")
99
87
 
100
88
  configure_commands ["cp -f /var/poolparty/dr_configure/chef/dna.json /etc/chef/dna.json"]
101
89
  end
@@ -107,7 +95,7 @@ module PoolParty
107
95
  recps.each do |rcp|
108
96
  Dir[::File.expand_path(rcp)].each do |f|
109
97
  included_recipes << f
110
- end
98
+ end
111
99
  end
112
100
  end
113
101
  end
@@ -132,12 +120,7 @@ file_cache_path "/etc/chef"
132
120
  else
133
121
  open(file).read
134
122
  end
135
- # ::FileUtils.mkdir_p "#{Default.tmp_path}/trash" unless ::File.directory? "#{Default.tmp_path}/trash"
136
- # ::File.open("#{Default.tmp_path}/trash/solo.rb", "w+") do |tf|
137
- # tf << conf_string
138
- # end
139
123
  ::Suitcase::Zipper.add_content_as(conf_string, "solo.rb", "chef")
140
- # ::Suitcase::Zipper.add("#{Default.tmp_path}/trash/solo.rb", "chef")
141
124
  end
142
125
  end
143
126
 
@@ -148,7 +131,7 @@ file_cache_path "/etc/chef"
148
131
  def before_bootstrap
149
132
  bootstrap_gems "chef", "ohai"
150
133
  bootstrap_commands [
151
- "mkdir -p /etc/chef/cookbooks /etc/chef/cache"
134
+ "mkdir -p /etc/chef/cookbooks /etc/chef/cache"
152
135
  ]
153
136
  end
154
137
  def before_configure
@@ -170,4 +153,9 @@ file_cache_path "/etc/chef"
170
153
  end
171
154
 
172
155
  end
156
+ class RecipeNotFoundError < StandardError
157
+ def initialize(n)
158
+ super("The recipe you specified cannot be found: #{n}")
159
+ end
160
+ end
173
161
  end