poolparty 0.2.69 → 0.2.84

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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