poolparty 0.2.69 → 0.2.84

Sign up to get free protection for your applications and to get access to all the features.
Files changed (298) hide show
  1. data/Capfile +1 -0
  2. data/History.txt +6 -0
  3. data/Manifest.txt +140 -143
  4. data/PostInstall.txt +1 -1
  5. data/README.txt +2 -0
  6. data/bin/cloud-configure +5 -2
  7. data/bin/cloud-handle-load +3 -3
  8. data/bin/cloud-maintain +3 -3
  9. data/bin/cloud-provision +6 -5
  10. data/bin/cloud-rsync +28 -0
  11. data/bin/cloud-setup-dev +25 -0
  12. data/bin/cloud-spec +40 -0
  13. data/bin/cloud-start +5 -3
  14. data/bin/server-clean-cert-for +15 -0
  15. data/bin/server-rerun +0 -1
  16. data/bin/server-start-client +1 -1
  17. data/bin/server-start-master +1 -1
  18. data/bin/server-start-node +1 -1
  19. data/bin/server-update-hosts +4 -3
  20. data/bin/server-write-new-nodes +26 -0
  21. data/generators/poolspec/USAGE +2 -2
  22. data/generators/poolspec/poolspec_generator.rb +1 -1
  23. data/lib/erlang/messenger/Makefile +15 -0
  24. data/lib/erlang/messenger/ebin/client_app.beam +0 -0
  25. data/lib/erlang/messenger/ebin/client_server.beam +0 -0
  26. data/lib/erlang/messenger/ebin/erl_crash.dump +10326 -0
  27. data/lib/erlang/messenger/ebin/master_app.beam +0 -0
  28. data/lib/erlang/messenger/ebin/node_app.beam +0 -0
  29. data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
  30. data/lib/erlang/messenger/ebin/pm_client_old.beam +0 -0
  31. data/lib/erlang/messenger/ebin/pm_client_supervisor.beam +0 -0
  32. data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
  33. data/lib/erlang/messenger/ebin/pm_event_manager.beam +0 -0
  34. data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
  35. data/lib/erlang/messenger/ebin/pm_master_event_handler.beam +0 -0
  36. data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
  37. data/lib/erlang/messenger/ebin/pm_node.beam +0 -0
  38. data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
  39. data/lib/erlang/messenger/ebin/pm_packager.beam +0 -0
  40. data/lib/erlang/messenger/ebin/pm_spawner.beam +0 -0
  41. data/lib/erlang/messenger/ebin/pm_strings.beam +0 -0
  42. data/lib/erlang/messenger/ebin/utils.beam +0 -0
  43. data/lib/erlang/messenger/lib/eunit/Makefile +28 -0
  44. data/lib/erlang/messenger/lib/eunit/ebin/autoload.beam +0 -0
  45. data/lib/erlang/messenger/lib/eunit/ebin/code_monitor.beam +0 -0
  46. data/lib/erlang/messenger/lib/eunit/ebin/eunit.beam +0 -0
  47. data/lib/erlang/messenger/lib/eunit/ebin/eunit_autoexport.beam +0 -0
  48. data/lib/erlang/messenger/lib/eunit/ebin/eunit_data.beam +0 -0
  49. data/lib/erlang/messenger/lib/eunit/ebin/eunit_lib.beam +0 -0
  50. data/lib/erlang/messenger/lib/eunit/ebin/eunit_proc.beam +0 -0
  51. data/lib/erlang/messenger/lib/eunit/ebin/eunit_serial.beam +0 -0
  52. data/lib/erlang/messenger/lib/eunit/ebin/eunit_server.beam +0 -0
  53. data/lib/erlang/messenger/lib/eunit/ebin/eunit_striptests.beam +0 -0
  54. data/lib/erlang/messenger/lib/eunit/ebin/eunit_test.beam +0 -0
  55. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tests.beam +0 -0
  56. data/lib/erlang/messenger/lib/eunit/ebin/eunit_tty.beam +0 -0
  57. data/lib/erlang/messenger/lib/eunit/ebin/file_monitor.beam +0 -0
  58. data/lib/erlang/messenger/lib/eunit/src/Makefile +46 -0
  59. data/lib/erlang/messenger/src/pm_master.erl +5 -0
  60. data/lib/erlang/messenger/src/pm_node.erl +2 -3
  61. data/lib/erlang/messenger/src/pm_spawner.erl +213 -0
  62. data/lib/poolparty/base_packages/heartbeat.rb +57 -43
  63. data/lib/poolparty/base_packages/poolparty.rb +18 -15
  64. data/lib/poolparty/capistrano.rb +18 -0
  65. data/lib/poolparty/core/class.rb +24 -0
  66. data/lib/poolparty/core/kernel.rb +7 -0
  67. data/lib/poolparty/core/module.rb +2 -2
  68. data/lib/poolparty/core/string.rb +1 -1
  69. data/lib/poolparty/dependency_resolutions/puppet.rb +10 -2
  70. data/lib/poolparty/exceptions/ProvisionerException.rb +5 -0
  71. data/lib/poolparty/extra/deployments.rb +31 -0
  72. data/lib/poolparty/helpers/binary.rb +14 -2
  73. data/lib/poolparty/helpers/optioner.rb +61 -22
  74. data/lib/poolparty/helpers/ruberl.rb +33 -0
  75. data/lib/poolparty/modules/cloud_dsl.rb +2 -1
  76. data/lib/poolparty/modules/cloud_resourcer.rb +30 -6
  77. data/lib/poolparty/modules/configurable.rb +2 -0
  78. data/lib/poolparty/modules/file_writer.rb +4 -4
  79. data/lib/poolparty/modules/resourcing_dsl.rb +5 -5
  80. data/lib/poolparty/monitors/base_monitor.rb +1 -1
  81. data/lib/poolparty/monitors/monitors/cpu_monitor.rb +2 -2
  82. data/lib/poolparty/net/messenger.rb +1 -1
  83. data/lib/poolparty/net/remote.rb +2 -2
  84. data/lib/poolparty/net/remote_bases/ec2.rb +51 -11
  85. data/lib/poolparty/net/remote_instance.rb +7 -3
  86. data/lib/poolparty/net/remoter.rb +72 -24
  87. data/lib/poolparty/net/remoter_base.rb +10 -0
  88. data/lib/poolparty/plugins/deploydirectory.rb +10 -5
  89. data/lib/poolparty/plugins/git.rb +51 -0
  90. data/lib/poolparty/{pool → poolparty}/base.rb +4 -2
  91. data/lib/poolparty/{pool → poolparty}/cloud.rb +32 -10
  92. data/lib/poolparty/{pool → poolparty}/plugin_model.rb +4 -4
  93. data/lib/poolparty/{pool → poolparty}/pool.rb +2 -2
  94. data/lib/poolparty/{pool → poolparty}/resource.rb +33 -15
  95. data/lib/poolparty/{pool → poolparty}/resources/class_package.rb +3 -3
  96. data/lib/poolparty/{pool → poolparty}/resources/directory.rb +6 -3
  97. data/lib/poolparty/{pool → poolparty}/resources/exec.rb +2 -5
  98. data/lib/poolparty/{pool → poolparty}/resources/file.rb +3 -3
  99. data/lib/poolparty/{pool → poolparty}/resources/package.rb +1 -1
  100. data/lib/poolparty/{pool → poolparty}/resources/remote_file.rb +1 -1
  101. data/lib/poolparty/poolparty/resources/remote_user.rb +17 -0
  102. data/lib/poolparty/{pool → poolparty}/resources/sshkey.rb +5 -1
  103. data/lib/poolparty/{pool → poolparty}/script.rb +1 -1
  104. data/lib/poolparty/provisioners/capistrano/capistrano.rb +127 -0
  105. data/lib/poolparty/provisioners/capistrano/capistrano_configurer.rb +58 -0
  106. data/lib/poolparty/provisioners/capistrano/recipies/base.rb +104 -0
  107. data/lib/poolparty/provisioners/capistrano/recipies/master.rb +121 -0
  108. data/lib/poolparty/provisioners/capistrano/recipies/slave.rb +12 -0
  109. data/lib/poolparty/provisioners/provisioner_base.rb +204 -0
  110. data/lib/poolparty/spec/core/string.rb +16 -0
  111. data/lib/poolparty/spec/matchers/a_spec_extensions_base.rb +26 -0
  112. data/lib/poolparty/spec/matchers/have_cron.rb +28 -0
  113. data/lib/poolparty/spec/matchers/have_deploydirectory.rb +15 -0
  114. data/lib/poolparty/spec/matchers/have_directory.rb +31 -0
  115. data/lib/poolparty/spec/matchers/have_exec.rb +28 -0
  116. data/lib/poolparty/spec/matchers/have_file.rb +28 -0
  117. data/lib/poolparty/spec/matchers/have_gempackage.rb +28 -0
  118. data/lib/poolparty/spec/matchers/have_git.rb +28 -0
  119. data/lib/poolparty/spec/matchers/have_host.rb +28 -0
  120. data/lib/poolparty/spec/matchers/have_mount.rb +28 -0
  121. data/lib/poolparty/spec/matchers/have_package.rb +28 -0
  122. data/lib/poolparty/spec/matchers/have_remotefile.rb +28 -0
  123. data/lib/poolparty/spec/matchers/have_rsyncmirror.rb +28 -0
  124. data/lib/poolparty/spec/matchers/have_service.rb +28 -0
  125. data/lib/poolparty/spec/matchers/have_sshkey.rb +28 -0
  126. data/lib/poolparty/spec/matchers/have_symlink.rb +28 -0
  127. data/lib/poolparty/spec/matchers/have_variable.rb +32 -0
  128. data/lib/poolparty/spec/spec/dynamic_matchers.rb +63 -0
  129. data/lib/poolparty/spec/spec/ensure_matchers_exist.rb +7 -0
  130. data/lib/poolparty/spec/templates/have_base.rb +28 -0
  131. data/lib/poolparty/templates/authkeys +1 -1
  132. data/lib/poolparty/templates/gem +12 -10
  133. data/lib/poolparty/templates/ha.cf +9 -11
  134. data/lib/poolparty/templates/haresources +1 -1
  135. data/lib/poolparty/templates/logd.cf +42 -0
  136. data/lib/poolparty/templates/puppet.conf +18 -8
  137. data/lib/poolparty/templates/puppetcleaner +9 -3
  138. data/lib/poolparty/templates/puppetrerun +16 -3
  139. data/lib/poolparty/templates/puppetrunner +1 -1
  140. data/lib/poolparty/version.rb +1 -1
  141. data/lib/poolparty.rb +12 -8
  142. data/lib/poolpartyspec.rb +34 -0
  143. data/poolparty.gemspec +151 -149
  144. data/spec/poolparty/aska/aska_spec.rb +0 -5
  145. data/spec/poolparty/bin/console_spec.rb +3 -0
  146. data/spec/poolparty/extra/deployments_spec.rb +64 -0
  147. data/spec/poolparty/helpers/binary_spec.rb +1 -1
  148. data/spec/poolparty/helpers/optioner_spec.rb +17 -4
  149. data/spec/poolparty/modules/cloud_resourcer_spec.rb +19 -2
  150. data/spec/poolparty/modules/configurable_spec.rb +2 -2
  151. data/spec/poolparty/net/remote_bases/ec2_spec.rb +5 -2
  152. data/spec/poolparty/net/remote_instance_spec.rb +5 -0
  153. data/spec/poolparty/net/remote_spec.rb +24 -31
  154. data/spec/poolparty/net/remoter_base_spec.rb +11 -6
  155. data/spec/poolparty/net/remoter_spec.rb +55 -27
  156. data/spec/poolparty/plugins/deploydirectory_spec.rb +1 -0
  157. data/spec/poolparty/plugins/git_spec.rb +45 -0
  158. data/spec/poolparty/{pool → poolparty}/cloud_spec.rb +41 -0
  159. data/spec/poolparty/{pool → poolparty}/plugin_spec.rb +1 -1
  160. data/spec/poolparty/{pool → poolparty}/pool_spec.rb +1 -1
  161. data/spec/poolparty/{pool → poolparty}/resource_spec.rb +15 -2
  162. data/spec/poolparty/poolparty/resources/user_spec.rb +38 -0
  163. data/spec/poolparty/poolparty/test_plugins/virtual_host_template.erb +0 -0
  164. data/spec/poolparty/poolparty_spec.rb +1 -1
  165. data/spec/poolparty/provisioners/capistrano/capistrano_spec.rb +27 -0
  166. data/spec/poolparty/provisioners/provisioner_base_spec.rb +120 -0
  167. data/spec/poolparty/spec/core/string_spec.rb +57 -0
  168. data/spec/poolparty/spec_helper.rb +48 -6
  169. data/tasks/deployment.rake +3 -5
  170. data/tasks/spec.rake +2 -3
  171. data/website/index.html +2 -2
  172. metadata +150 -148
  173. data/lib/erlang/messenger/lib/eunit/.svn/all-wcprops +0 -53
  174. data/lib/erlang/messenger/lib/eunit/.svn/entries +0 -140
  175. data/lib/erlang/messenger/lib/eunit/.svn/format +0 -1
  176. data/lib/erlang/messenger/lib/eunit/.svn/prop-base/NOTES.svn-base +0 -5
  177. data/lib/erlang/messenger/lib/eunit/.svn/text-base/AUTHORS.svn-base +0 -2
  178. data/lib/erlang/messenger/lib/eunit/.svn/text-base/CHANGELOG.svn-base +0 -14
  179. data/lib/erlang/messenger/lib/eunit/.svn/text-base/COPYING.svn-base +0 -504
  180. data/lib/erlang/messenger/lib/eunit/.svn/text-base/NOTES.svn-base +0 -276
  181. data/lib/erlang/messenger/lib/eunit/.svn/text-base/README.svn-base +0 -3
  182. data/lib/erlang/messenger/lib/eunit/.svn/text-base/sys.config.svn-base +0 -9
  183. data/lib/erlang/messenger/lib/eunit/.svn/text-base/vsn.mk.svn-base +0 -1
  184. data/lib/erlang/messenger/lib/eunit/doc/.svn/all-wcprops +0 -59
  185. data/lib/erlang/messenger/lib/eunit/doc/.svn/entries +0 -142
  186. data/lib/erlang/messenger/lib/eunit/doc/.svn/format +0 -1
  187. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/erlang.png.svn-base +0 -5
  188. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/eunit.html.svn-base +0 -5
  189. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/index.html.svn-base +0 -5
  190. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/modules-frame.html.svn-base +0 -5
  191. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/overview-summary.html.svn-base +0 -5
  192. data/lib/erlang/messenger/lib/eunit/doc/.svn/prop-base/packages-frame.html.svn-base +0 -5
  193. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/edoc-info.svn-base +0 -3
  194. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/erlang.png.svn-base +0 -0
  195. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/eunit.html.svn-base +0 -172
  196. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/index.html.svn-base +0 -17
  197. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/modules-frame.html.svn-base +0 -12
  198. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview-summary.html.svn-base +0 -984
  199. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/overview.edoc.svn-base +0 -980
  200. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/packages-frame.html.svn-base +0 -11
  201. data/lib/erlang/messenger/lib/eunit/doc/.svn/text-base/stylesheet.css.svn-base +0 -55
  202. data/lib/erlang/messenger/lib/eunit/ebin/.svn/all-wcprops +0 -5
  203. data/lib/erlang/messenger/lib/eunit/ebin/.svn/dir-prop-base +0 -8
  204. data/lib/erlang/messenger/lib/eunit/ebin/.svn/entries +0 -28
  205. data/lib/erlang/messenger/lib/eunit/ebin/.svn/format +0 -1
  206. data/lib/erlang/messenger/lib/eunit/examples/.svn/all-wcprops +0 -23
  207. data/lib/erlang/messenger/lib/eunit/examples/.svn/entries +0 -66
  208. data/lib/erlang/messenger/lib/eunit/examples/.svn/format +0 -1
  209. data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/eunit_examples.erl.svn-base +0 -5
  210. data/lib/erlang/messenger/lib/eunit/examples/.svn/prop-base/fib.erl.svn-base +0 -5
  211. data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/eunit_examples.erl.svn-base +0 -339
  212. data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/fib.erl.svn-base +0 -19
  213. data/lib/erlang/messenger/lib/eunit/examples/.svn/text-base/tests.txt.svn-base +0 -1
  214. data/lib/erlang/messenger/lib/eunit/include/.svn/all-wcprops +0 -11
  215. data/lib/erlang/messenger/lib/eunit/include/.svn/entries +0 -41
  216. data/lib/erlang/messenger/lib/eunit/include/.svn/format +0 -1
  217. data/lib/erlang/messenger/lib/eunit/include/.svn/prop-base/eunit.hrl.svn-base +0 -5
  218. data/lib/erlang/messenger/lib/eunit/include/.svn/text-base/eunit.hrl.svn-base +0 -313
  219. data/lib/erlang/messenger/lib/eunit/src/.svn/all-wcprops +0 -113
  220. data/lib/erlang/messenger/lib/eunit/src/.svn/entries +0 -259
  221. data/lib/erlang/messenger/lib/eunit/src/.svn/format +0 -1
  222. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/autoload.erl.svn-base +0 -5
  223. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/code_monitor.erl.svn-base +0 -5
  224. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit.erl.svn-base +0 -5
  225. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_autoexport.erl.svn-base +0 -5
  226. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_data.erl.svn-base +0 -5
  227. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_internal.hrl.svn-base +0 -5
  228. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_lib.erl.svn-base +0 -5
  229. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_proc.erl.svn-base +0 -5
  230. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_serial.erl.svn-base +0 -5
  231. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_server.erl.svn-base +0 -5
  232. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_striptests.erl.svn-base +0 -5
  233. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_test.erl.svn-base +0 -5
  234. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tests.erl.svn-base +0 -5
  235. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/eunit_tty.erl.svn-base +0 -5
  236. data/lib/erlang/messenger/lib/eunit/src/.svn/prop-base/file_monitor.erl.svn-base +0 -5
  237. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/autoload.erl.svn-base +0 -388
  238. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/code_monitor.erl.svn-base +0 -243
  239. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.app.src.svn-base +0 -21
  240. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.appup.src.svn-base +0 -1
  241. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit.erl.svn-base +0 -196
  242. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_autoexport.erl.svn-base +0 -102
  243. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_data.erl.svn-base +0 -798
  244. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_internal.hrl.svn-base +0 -48
  245. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_lib.erl.svn-base +0 -682
  246. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_proc.erl.svn-base +0 -552
  247. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_serial.erl.svn-base +0 -157
  248. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_server.erl.svn-base +0 -340
  249. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_striptests.erl.svn-base +0 -64
  250. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_test.erl.svn-base +0 -334
  251. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tests.erl.svn-base +0 -45
  252. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/eunit_tty.erl.svn-base +0 -272
  253. data/lib/erlang/messenger/lib/eunit/src/.svn/text-base/file_monitor.erl.svn-base +0 -409
  254. data/lib/erlang/messenger/src/pm_client_old.erl +0 -52
  255. data/lib/poolparty/helpers/provisioner_base.rb +0 -346
  256. data/lib/poolparty/helpers/provisioners/master.rb +0 -205
  257. data/lib/poolparty/helpers/provisioners/slave.rb +0 -64
  258. data/spec/poolparty/helpers/provisioner_base_spec.rb +0 -134
  259. data/spec/poolparty/helpers/provisioners/master_spec.rb +0 -54
  260. data/spec/poolparty/helpers/provisioners/slave_spec.rb +0 -28
  261. /data/lib/poolparty/{pool → poolparty}/custom_resource.rb +0 -0
  262. /data/lib/poolparty/{pool → poolparty}/loggable.rb +0 -0
  263. /data/lib/poolparty/{pool → poolparty}/plugin.rb +0 -0
  264. /data/lib/poolparty/{pool → poolparty}/resources/conditional.rb +0 -0
  265. /data/lib/poolparty/{pool → poolparty}/resources/cron.rb +0 -0
  266. /data/lib/poolparty/{pool → poolparty}/resources/custom_service.rb +0 -0
  267. /data/lib/poolparty/{pool → poolparty}/resources/gem_package.rb +0 -0
  268. /data/lib/poolparty/{pool → poolparty}/resources/host.rb +0 -0
  269. /data/lib/poolparty/{pool → poolparty}/resources/mount.rb +0 -0
  270. /data/lib/poolparty/{pool → poolparty}/resources/service.rb +0 -0
  271. /data/lib/poolparty/{pool → poolparty}/resources/symlink.rb +0 -0
  272. /data/lib/poolparty/{pool → poolparty}/resources/variable.rb +0 -0
  273. /data/log/{pool.logs → pool.log} +0 -0
  274. /data/spec/poolparty/{pool/test_plugins/virtual_host_template.erb → net/log/pool.log} +0 -0
  275. /data/spec/poolparty/{pool → poolparty}/base_spec.rb +0 -0
  276. /data/spec/poolparty/{pool → poolparty}/configurers/files/ruby_basic.rb +0 -0
  277. /data/spec/poolparty/{pool → poolparty}/configurers/files/ruby_plugins.rb +0 -0
  278. /data/spec/poolparty/{pool → poolparty}/configurers/ruby_spec.rb +0 -0
  279. /data/spec/poolparty/{pool → poolparty}/custom_resource_spec.rb +0 -0
  280. /data/spec/poolparty/{pool → poolparty}/example_spec.rb +0 -0
  281. /data/spec/poolparty/{pool → poolparty}/plugin_model_spec.rb +0 -0
  282. /data/spec/poolparty/{pool → poolparty}/resources/class_package_spec.rb +0 -0
  283. /data/spec/poolparty/{pool → poolparty}/resources/conditional_spec.rb +0 -0
  284. /data/spec/poolparty/{pool → poolparty}/resources/cron_spec.rb +0 -0
  285. /data/spec/poolparty/{pool → poolparty}/resources/directory_spec.rb +0 -0
  286. /data/spec/poolparty/{pool → poolparty}/resources/exec_spec.rb +0 -0
  287. /data/spec/poolparty/{pool → poolparty}/resources/file_spec.rb +0 -0
  288. /data/spec/poolparty/{pool → poolparty}/resources/gem_spec.rb +0 -0
  289. /data/spec/poolparty/{pool → poolparty}/resources/host_spec.rb +0 -0
  290. /data/spec/poolparty/{pool → poolparty}/resources/package_spec.rb +0 -0
  291. /data/spec/poolparty/{pool → poolparty}/resources/remote_file_spec.rb +0 -0
  292. /data/spec/poolparty/{pool → poolparty}/resources/service_spec.rb +0 -0
  293. /data/spec/poolparty/{pool → poolparty}/resources/sshkey_spec.rb +0 -0
  294. /data/spec/poolparty/{pool → poolparty}/resources/symlink_spec.rb +0 -0
  295. /data/spec/poolparty/{pool → poolparty}/resources/variable_spec.rb +0 -0
  296. /data/spec/poolparty/{pool → poolparty}/script_spec.rb +0 -0
  297. /data/spec/poolparty/{pool → poolparty}/test_plugins/sshkey_test +0 -0
  298. /data/spec/poolparty/{pool → poolparty}/test_plugins/webserver.rb +0 -0
@@ -0,0 +1,204 @@
1
+ =begin rdoc
2
+ The Provisioner is responsible for provisioning REMOTE servers
3
+ This class only comes in to play when calling the setup commands on
4
+ the development machine
5
+ =end
6
+ require 'capistrano/cli'
7
+
8
+ module PoolParty
9
+ module Provisioner
10
+
11
+ def provisioner_for(inst)
12
+ PoolParty::Provisioner::Capistrano.new(inst, self, :ubuntu)
13
+ end
14
+
15
+ class ProvisionerBase
16
+ attr_accessor :config, :loaded_tasks, :instance, :cloud, :os
17
+
18
+ include Configurable
19
+ include CloudResourcer
20
+ include FileWriter
21
+
22
+ def initialize(instance=nil, cld=self, os=:ubuntu, &block)
23
+ @instance = instance
24
+ @cloud = cld
25
+
26
+ options(cloud.options) if cloud && cloud.respond_to?(:options)
27
+ # set_vars_from_options(instance.options) unless instance.nil? || !instance.options || !instance.options.empty?
28
+ # options(instance.options) if instance.respond_to?(:options)
29
+
30
+ @os = os.to_s.downcase.to_sym
31
+ self.instance_eval &block if block
32
+
33
+ loaded
34
+ end
35
+
36
+ def provision_master?
37
+ !@instance.nil? && @instance.master?
38
+ end
39
+
40
+ # Callback after initialized
41
+ def loaded
42
+ end
43
+
44
+ def loaded_tasks
45
+ @loaded_tasks ||= []
46
+ end
47
+
48
+ ### Installation tasks
49
+
50
+ # This is the actual runner for the installation
51
+ def install(testing=false)
52
+ error unless valid?
53
+ setup_runner
54
+ unless testing
55
+ before_install(@instance)
56
+
57
+ vputs "Provisioning #{@instance.name}"
58
+ process_install!(testing)
59
+
60
+ after_install(@instance)
61
+ end
62
+ end
63
+ # The provisioner bases overwrite this method
64
+ def process_install!(testing=false)
65
+ end
66
+
67
+ # Configuration
68
+ def configure(testing=false)
69
+ error unless valid?
70
+ setup_runner
71
+ unless testing
72
+ before_configure(@instance)
73
+
74
+ vputs "Provisioning #{@instance.name}"
75
+ process_configure!(testing)
76
+
77
+ after_configure(@instance)
78
+ end
79
+ end
80
+
81
+ # Tasks that need to be performed everytime we do any
82
+ # remote ssh'ing into any instance
83
+ def setup_runner(force=false)
84
+ @cloud.prepare_for_configuration
85
+ @cloud.build_and_store_new_config_file(force)
86
+ end
87
+
88
+ # Callbacks
89
+ # Before installation callback
90
+ def before_install(instance)
91
+ end
92
+ def after_install(instance)
93
+ end
94
+ def before_configure(instance)
95
+ end
96
+ def after_configure(instance)
97
+ end
98
+
99
+ def valid?
100
+ true
101
+ end
102
+ def error
103
+ raise ProvisionerException.new("Error in installation")
104
+ end
105
+ # Custom installation tasks
106
+ # Allow the remoter bases to attach their own tasks on the
107
+ # installation process
108
+ def custom_install_tasks
109
+ @cloud.custom_install_tasks_for(@instance) || []
110
+ end
111
+ # Custom configure tasks
112
+ # Allows the remoter bases to attach their own
113
+ # custom configuration tasks to the configuration process
114
+ def custom_configure_tasks
115
+ @cloud.custom_configure_tasks_for(@instance) || []
116
+ end
117
+
118
+ # Get the packages associated with each os
119
+ def puppet_packages
120
+ case @os
121
+ when :fedora
122
+ "puppet-server puppet factor"
123
+ else
124
+ "puppet puppetmaster"
125
+ end
126
+ end
127
+ # Package installers for general *nix operating systems
128
+ def self.installers
129
+ @installers ||= {
130
+ :ubuntu => "aptitude install -y",
131
+ :fedora => "yum install",
132
+ :gentoo => "emerge"
133
+ }
134
+ end
135
+ def os_installer
136
+ "#{self.class.installers[@os]}"
137
+ end
138
+ # Convenience method to grab the installer
139
+ def installer_for(names=[])
140
+ packages = names.is_a?(Array) ? names.join(" ") : names
141
+ "#{self.class.installers[@os]} #{packages}"
142
+ end
143
+
144
+ #TODO#
145
+ # Abstract the gems out
146
+ def base_gems
147
+ {
148
+ :logging => "http://rubyforge.org/frs/download.php/44731/logging-0.9.4.gem",
149
+ :ZenTest => "http://rubyforge.org/frs/download.php/45581/ZenTest-3.11.0.gem",
150
+ :ParseTree => "http://rubyforge.org/frs/download.php/45600/ParseTree-3.0.1.gem",
151
+ :ruby2ruby => "http://rubyforge.org/frs/download.php/45587/ruby2ruby-1.2.0.gem",
152
+ :activesupport => "http://rubyforge.org/frs/download.php/45627/activesupport-2.1.2.gem",
153
+ :"xml-simple" => "http://rubyforge.org/frs/download.php/18366/xml-simple-1.0.11.gem",
154
+ :RubyInline => "http://rubyforge.org/frs/download.php/45683/RubyInline-3.8.1.gem",
155
+ :flexmock => "http://rubyforge.org/frs/download.php/42580/flexmock-0.8.3.gem",
156
+ :hoe => "http://rubyforge.org/frs/download.php/45685/hoe-1.8.2.gem",
157
+ :lockfile => "http://rubyforge.org/frs/download.php/18698/lockfile-1.4.3.gem",
158
+ :rubyforge => "http://rubyforge.org/frs/download.php/45546/rubyforge-1.0.1.gem",
159
+ :rake => "http://rubyforge.org/frs/download.php/43954/rake-0.8.3.gem",
160
+ :sexp_processor => "http://rubyforge.org/frs/download.php/45589/sexp_processor-3.0.0.gem",
161
+ :capistrano => "http://rubyforge.org/frs/download.php/48031/capistrano-2.5.3.gem",
162
+ :poolparty => "http://github.com/auser/poolparty/tree/master%2Fpkg%2Fpoolparty.gem?raw=true",
163
+ "ec2" => "http://rubyforge.org/frs/download.php/43666/amazon-ec2-0.3.1.gem"
164
+ }
165
+ end
166
+
167
+ def download_base_gems_string
168
+ returning(Array.new) do |arr|
169
+ base_gems.each do |name, url|
170
+ arr << "wget #{url} -O #{Base.remote_storage_path}/#{name}.gem 2>&1"
171
+ end
172
+ end.join(" && ")
173
+ end
174
+
175
+ def install_base_gems_string
176
+ returning(Array.new) do |arr|
177
+ base_gems.each do |name, url|
178
+ arr << "/usr/bin/gem install --ignore-dependencies --no-ri --no-rdoc #{Base.remote_storage_path}/#{name}.gem"
179
+ end
180
+ end.join(" && ")
181
+ end
182
+
183
+ # Template directory from the provisioner base
184
+ def template_directory
185
+ File.join(File.dirname(__FILE__), "..", "templates")
186
+ end
187
+
188
+ # Install from the class-level
189
+ def self.install(instance, cl=self, testing=false)
190
+ new(instance, cl).install(testing)
191
+ end
192
+
193
+ def self.configure(instance, cl=self, testing=false)
194
+ new(instance, cl).configure(testing)
195
+ end
196
+
197
+ end
198
+ end
199
+ end
200
+
201
+ ## Load the provisioners
202
+ Dir[File.dirname(__FILE__) + "/*/*.rb"].each do |file|
203
+ require file
204
+ end
@@ -0,0 +1,16 @@
1
+ class String
2
+ def grab_entry_for(type, name)
3
+ begin
4
+ allowed = /[ \$\._\-\[\]\n\t\\\/&,\(\)"',|:=\>\<0-9a-zA-Z]/
5
+ matches = self.match(/#{type}(.*)\{(.*)"#{name}":(.*)(#{allowed})*\}/)[0]
6
+ rescue
7
+ ""
8
+ end
9
+ end
10
+ def _grab_key_value_for(type, name, key)
11
+ grab_entry_for(type, name).scan(/#{key}[ =>]*(.*)[,?]?$/).flatten.first rescue ""
12
+ end
13
+ def grab_key_value_for(ty, name, key)
14
+ _grab_key_value_for(ty,name,key).gsub(/,/, '')
15
+ end
16
+ end
@@ -0,0 +1,26 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ # Mainly extensions, these methods are inherent in all of the matchers
5
+ # and are intended for helping parse the final manifest for spec'ing purposes.
6
+ class SpecExtensionsBase
7
+ def ensured_as(ensured="present")
8
+ str = "ensure => '#{ensured}'"
9
+ !grab_entry.scan(/#{str}/).empty?
10
+ end
11
+ def is_present?
12
+ !grab_entry.empty? && is_valid_resource?
13
+ end
14
+ def grab_entry
15
+ @target.grab_entry_for(type, @expected)
16
+ end
17
+ def type
18
+ "file"
19
+ end
20
+ def is_valid_resource?
21
+ grab_entry.split(/\n/).select {|l| l.match(/(.*)=>(\W+),$/) }.empty?
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HaveCron < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present?
12
+ end
13
+ def failure_message
14
+ "expected #{@target.inspect} to have cron #{@expected}"
15
+ end
16
+ def negative_failure_message
17
+ "expected #{@target.inspect} not to have cron #{@expected}"
18
+ end
19
+ def type
20
+ "cron"
21
+ end
22
+ end
23
+ end
24
+ def have_cron(name, extra="")
25
+ SpecExtensions::HaveCron.new(name, extra)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,15 @@
1
+ module PoolParty
2
+ class SpecCore
3
+ # dynamic_matcher_for(:deploydirectory) do
4
+ # it "should have the directory" do
5
+ # @manifest.should have_directory(@to)
6
+ # end
7
+ # it "should have the rsyncmirror" do
8
+ # @manifest.should have_rsyncmirror("deploydirectory-#{@to}")
9
+ # end
10
+ # it "should have the exec to unpack the archive" do
11
+ # @manifest.should have_exec("deploy-directory-#{@to}")
12
+ # end
13
+ # end
14
+ end
15
+ end
@@ -0,0 +1,31 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HaveDirectory < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present? && is_a_directory?
12
+ end
13
+ def is_a_directory?
14
+ ensured_as("directory")
15
+ end
16
+ def failure_message
17
+ "expected #{@target.inspect} to have directory #{@expected}"
18
+ end
19
+ def negative_failure_message
20
+ "expected #{@target.inspect} not to have directory #{@expected}"
21
+ end
22
+ def type
23
+ "file"
24
+ end
25
+ end
26
+ end
27
+ def have_directory(name, extra="")
28
+ SpecExtensions::HaveDirectory.new(name, extra)
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HaveExec < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present?
12
+ end
13
+ def failure_message
14
+ "expected #{@target.inspect} to have exec #{@expected}"
15
+ end
16
+ def negative_failure_message
17
+ "expected #{@target.inspect} not to have exec #{@expected}"
18
+ end
19
+ def type
20
+ "exec"
21
+ end
22
+ end
23
+ end
24
+ def have_exec(name, extra="")
25
+ SpecExtensions::HaveExec.new(name, extra)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HaveFile < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present?
12
+ end
13
+ def failure_message
14
+ "expected #{@target.inspect} to have file #{@expected}"
15
+ end
16
+ def negative_failure_message
17
+ "expected #{@target.inspect} not to have file #{@expected}"
18
+ end
19
+ def type
20
+ "file"
21
+ end
22
+ end
23
+ end
24
+ def have_file(name, extra="")
25
+ SpecExtensions::HaveFile.new(name, extra)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HaveGempackage < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present?
12
+ end
13
+ def failure_message
14
+ "expected #{@target.inspect} to have gempackage #{@expected}"
15
+ end
16
+ def negative_failure_message
17
+ "expected #{@target.inspect} not to have gempackage #{@expected}"
18
+ end
19
+ def type
20
+ "exec"
21
+ end
22
+ end
23
+ end
24
+ def have_gempackage(name, extra="")
25
+ SpecExtensions::HaveGempackage.new(name, extra)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HaveGit < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present?
12
+ end
13
+ def failure_message
14
+ "expected #{@target.inspect} to have git #{@expected}"
15
+ end
16
+ def negative_failure_message
17
+ "expected #{@target.inspect} not to have git #{@expected}"
18
+ end
19
+ def type
20
+ "git"
21
+ end
22
+ end
23
+ end
24
+ def have_git(name, extra="")
25
+ SpecExtensions::HaveGit.new(name, extra)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HaveHost < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present?
12
+ end
13
+ def failure_message
14
+ "expected #{@target.inspect} to have host #{@expected}"
15
+ end
16
+ def negative_failure_message
17
+ "expected #{@target.inspect} not to have host #{@expected}"
18
+ end
19
+ def type
20
+ "host"
21
+ end
22
+ end
23
+ end
24
+ def have_host(name, extra="")
25
+ SpecExtensions::HaveHost.new(name, extra)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HaveMount < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present?
12
+ end
13
+ def failure_message
14
+ "expected #{@target.inspect} to have mount #{@expected}"
15
+ end
16
+ def negative_failure_message
17
+ "expected #{@target.inspect} not to have mount #{@expected}"
18
+ end
19
+ def type
20
+ "mount"
21
+ end
22
+ end
23
+ end
24
+ def have_mount(name, extra="")
25
+ SpecExtensions::HaveMount.new(name, extra)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HavePackage < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present?
12
+ end
13
+ def failure_message
14
+ "expected #{@target.inspect} to have package #{@expected}"
15
+ end
16
+ def negative_failure_message
17
+ "expected #{@target.inspect} not to have package #{@expected}"
18
+ end
19
+ def type
20
+ "package"
21
+ end
22
+ end
23
+ end
24
+ def have_package(name, extra="")
25
+ SpecExtensions::HavePackage.new(name, extra)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HaveRemotefile < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present?
12
+ end
13
+ def failure_message
14
+ "expected #{@target.inspect} to have remotefile #{@expected}"
15
+ end
16
+ def negative_failure_message
17
+ "expected #{@target.inspect} not to have remotefile #{@expected}"
18
+ end
19
+ def type
20
+ "remotefile"
21
+ end
22
+ end
23
+ end
24
+ def have_remotefile(name, extra="")
25
+ SpecExtensions::HaveRemotefile.new(name, extra)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HaveRsyncmirror < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present?
12
+ end
13
+ def failure_message
14
+ "expected #{@target.inspect} to have rsyncmirror #{@expected}"
15
+ end
16
+ def negative_failure_message
17
+ "expected #{@target.inspect} not to have rsyncmirror #{@expected}"
18
+ end
19
+ def type
20
+ "rsyncmirror"
21
+ end
22
+ end
23
+ end
24
+ def have_rsyncmirror(name, extra="")
25
+ SpecExtensions::HaveRsyncmirror.new(name, extra)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HaveService < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present?
12
+ end
13
+ def failure_message
14
+ "expected #{@target.inspect} to have service #{@expected}"
15
+ end
16
+ def negative_failure_message
17
+ "expected #{@target.inspect} not to have service #{@expected}"
18
+ end
19
+ def type
20
+ "service"
21
+ end
22
+ end
23
+ end
24
+ def have_service(name, extra="")
25
+ SpecExtensions::HaveService.new(name, extra)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HaveSshkey < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present?
12
+ end
13
+ def failure_message
14
+ "expected #{@target.inspect} to have sshkey #{@expected}"
15
+ end
16
+ def negative_failure_message
17
+ "expected #{@target.inspect} not to have sshkey #{@expected}"
18
+ end
19
+ def type
20
+ "sshkey"
21
+ end
22
+ end
23
+ end
24
+ def have_sshkey(name, extra="")
25
+ SpecExtensions::HaveSshkey.new(name, extra)
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,28 @@
1
+ module Spec
2
+ module Matchers
3
+ module SpecExtensions
4
+ class HaveSymlink < SpecExtensionsBase
5
+ def initialize(expected,extra="")
6
+ @expected = expected
7
+ @extra = extra
8
+ end
9
+ def matches?(target)
10
+ @target = target
11
+ is_present?
12
+ end
13
+ def failure_message
14
+ "expected #{@target.inspect} to have symlink #{@expected}"
15
+ end
16
+ def negative_failure_message
17
+ "expected #{@target.inspect} not to have symlink #{@expected}"
18
+ end
19
+ def type
20
+ "symlink"
21
+ end
22
+ end
23
+ end
24
+ def have_symlink(name, extra="")
25
+ SpecExtensions::HaveSymlink.new(name, extra)
26
+ end
27
+ end
28
+ end