auser-poolparty 1.2.2 → 1.2.3

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 (247) hide show
  1. data/VERSION.yml +1 -1
  2. data/bin/cloud +37 -48
  3. data/bin/cloud-bootstrap +33 -23
  4. data/bin/cloud-configure +33 -34
  5. data/bin/cloud-console +31 -9
  6. data/bin/cloud-contract +27 -11
  7. data/bin/cloud-expand +32 -19
  8. data/bin/cloud-list +31 -15
  9. data/bin/cloud-osxcopy +22 -12
  10. data/bin/cloud-provision +35 -24
  11. data/bin/cloud-setup-dev +31 -20
  12. data/bin/cloud-show +40 -21
  13. data/bin/cloud-ssh +24 -15
  14. data/bin/cloud-start +33 -19
  15. data/bin/cloud-terminate +33 -20
  16. data/bin/cloud-verify +38 -29
  17. data/bin/install-poolparty +4 -198
  18. data/bin/server-cloud-elections +1 -1
  19. data/examples/basic.rb +9 -9
  20. data/examples/fairchild.rb +1 -1
  21. data/examples/metavirt_cloud.rb +21 -0
  22. data/lib/poolparty/aska.rb +3 -0
  23. data/lib/poolparty/base_packages/haproxy.rb +19 -18
  24. data/lib/poolparty/base_packages/poolparty.rb +1 -1
  25. data/lib/poolparty/core/hash.rb +46 -0
  26. data/lib/poolparty/core/object.rb +21 -15
  27. data/lib/poolparty/core/string.rb +16 -0
  28. data/lib/poolparty/dependency_resolver/chef_resolver.rb +23 -6
  29. data/lib/poolparty/dependency_resolver/dependency_resolver.rb +1 -1
  30. data/lib/poolparty/dependency_resolver/dependency_resolver_cloud_extensions.rb +2 -2
  31. data/lib/poolparty/dependency_resolver/puppet_resolver.rb +10 -32
  32. data/lib/poolparty/helpers/optioner.rb +19 -14
  33. data/lib/poolparty/installers/base_installer.rb +113 -0
  34. data/lib/poolparty/installers/ec2.rb +141 -0
  35. data/lib/poolparty/installers/vmrun.rb +144 -0
  36. data/lib/poolparty/modules/callbacks.rb +6 -2
  37. data/lib/poolparty/modules/cloud_dsl.rb +2 -2
  38. data/lib/poolparty/modules/cloud_resourcer.rb +10 -50
  39. data/lib/poolparty/modules/file_writer.rb +2 -2
  40. data/lib/poolparty/modules/pinger.rb +4 -1
  41. data/lib/poolparty/modules/resourcing_dsl.rb +1 -29
  42. data/lib/poolparty/modules/searchable_paths.rb +3 -3
  43. data/lib/poolparty/monitors/monitor_rack.rb +1 -1
  44. data/lib/poolparty/net/remote_bases.rb +2 -0
  45. data/lib/poolparty/net/remote_instance.rb +6 -4
  46. data/lib/poolparty/net/remoter/interactive.rb +2 -3
  47. data/lib/poolparty/net/remoter_base.rb +54 -31
  48. data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +49 -26
  49. data/lib/poolparty/net/remoter_bases/ec2/ec2_remote_instance.rb +6 -19
  50. data/lib/poolparty/net/remoter_bases/ec2/ec2_response_object.rb +4 -3
  51. data/lib/poolparty/net/remoter_bases/metavirt/metavirt.rb +99 -0
  52. data/lib/poolparty/net/remoter_bases/metavirt/metavirt_instance.rb +52 -0
  53. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vm_disk.rb +1 -1
  54. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx.rb +1 -1
  55. data/lib/poolparty/net/remoter_bases/vmrun/utilities/vmx_file.rb +117 -117
  56. data/lib/poolparty/net/remoter_bases/vmrun/vmrun.rb +36 -31
  57. data/lib/poolparty/net/remoter_bases/vmrun/vmrun_instance.rb +9 -5
  58. data/lib/poolparty/plugins/apache2/apache.rb +118 -73
  59. data/lib/poolparty/plugins/chef.rb +15 -17
  60. data/lib/poolparty/plugins/chef_deploy.rb +18 -4
  61. data/lib/poolparty/plugins/deploy_directory.rb +25 -16
  62. data/lib/poolparty/plugins/gem_package.rb +15 -5
  63. data/lib/poolparty/plugins/git.rb +44 -30
  64. data/lib/poolparty/plugins/line_in_file.rb +5 -1
  65. data/lib/poolparty/plugins/rails_deploy.rb +79 -26
  66. data/lib/poolparty/plugins/svn.rb +2 -2
  67. data/lib/poolparty/poolparty/cloud.rb +101 -47
  68. data/lib/poolparty/poolparty/default.rb +25 -23
  69. data/lib/poolparty/poolparty/key.rb +18 -27
  70. data/lib/poolparty/poolparty/neighborhoods.rb +1 -1
  71. data/lib/poolparty/poolparty/plugin.rb +17 -7
  72. data/lib/poolparty/poolparty/pool.rb +3 -3
  73. data/lib/poolparty/poolparty/poolparty_base_class.rb +41 -35
  74. data/lib/poolparty/poolparty/resource.rb +18 -44
  75. data/lib/poolparty/poolparty/service.rb +1 -5
  76. data/lib/poolparty/provision/boot_strapper.rb +24 -19
  77. data/lib/poolparty/provision/configurations/chef.rb +4 -4
  78. data/lib/poolparty/provision/dr_configure.rb +11 -10
  79. data/lib/poolparty/resources/cron.rb +7 -3
  80. data/lib/poolparty/resources/directory.rb +7 -0
  81. data/lib/poolparty/resources/exec.rb +2 -1
  82. data/lib/poolparty/resources/file.rb +23 -9
  83. data/lib/poolparty/resources/group.rb +21 -0
  84. data/lib/poolparty/resources/host.rb +2 -1
  85. data/lib/poolparty/resources/mount.rb +0 -4
  86. data/lib/poolparty/resources/remote_file.rb +1 -1
  87. data/lib/poolparty/resources/service.rb +2 -1
  88. data/lib/poolparty/resources/sshkey.rb +10 -12
  89. data/lib/poolparty/resources/symlink.rb +3 -5
  90. data/lib/poolparty/resources/user.rb +5 -0
  91. data/lib/poolparty/resources/variable.rb +1 -1
  92. data/lib/poolparty/templates/haproxy.conf +1 -1
  93. data/lib/poolparty/verification/verify.rb +4 -0
  94. data/lib/poolparty.rb +9 -4
  95. data/lib/poolpartycl.rb +1 -52
  96. data/spec/bin/bin_spec_helper.rb +1 -0
  97. data/spec/bin/server-list-active_spec.rb +3 -3
  98. data/spec/poolparty/core/object_spec.rb +9 -46
  99. data/spec/poolparty/dependency_resolver/dependency_resolver_cloud_extensions_spec.rb +18 -12
  100. data/spec/poolparty/fixtures/clouds.json +1 -1
  101. data/spec/poolparty/helpers/optioner_spec.rb +4 -11
  102. data/spec/poolparty/modules/cloud_resourcer_spec.rb +1 -1
  103. data/spec/poolparty/net/remote_instance_spec.rb +0 -1
  104. data/spec/poolparty/net/remoter_base_spec.rb +7 -11
  105. data/spec/poolparty/net/remoter_bases/ec2_mocks_and_stubs.rb +9 -11
  106. data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +6 -44
  107. data/spec/poolparty/net/remoter_bases/ec2_spec.rb +2 -3
  108. data/spec/poolparty/net/remoter_spec.rb +2 -3
  109. data/spec/poolparty/plugins/git_spec.rb +5 -8
  110. data/spec/poolparty/poolparty/cloud_spec.rb +17 -24
  111. data/spec/poolparty/poolparty/configurers/files/ruby_basic.rb +1 -3
  112. data/spec/poolparty/poolparty/configurers/ruby_spec.rb +1 -6
  113. data/spec/poolparty/poolparty/default_spec.rb +23 -22
  114. data/spec/poolparty/poolparty/example_spec.rb +6 -5
  115. data/spec/poolparty/poolparty/plugin_model_spec.rb +7 -4
  116. data/spec/poolparty/poolparty/pool_spec.rb +2 -9
  117. data/spec/poolparty/poolparty/resource_spec.rb +10 -24
  118. data/spec/poolparty/poolparty/script_spec.rb +1 -4
  119. data/spec/poolparty/poolparty/test_plugins/webserver.rb +0 -2
  120. data/spec/poolparty/resources/file_spec.rb +4 -4
  121. data/spec/poolparty/resources/service_spec.rb +1 -1
  122. data/spec/poolparty/spec_helper.rb +9 -38
  123. data/tasks/spec.rake +6 -2
  124. data/test/fixtures/test_key +1 -0
  125. data/test/poolparty/core/object_test.rb +29 -0
  126. data/test/poolparty/dependency_resolver/puppet_resolver_test.rb +1 -1
  127. data/test/poolparty/modules/cloud_dsl_test.rb +4 -4
  128. data/test/poolparty/net/remoter_bases/metavirt/metavirt_test.rb +55 -0
  129. data/test/poolparty/net/remoter_bases/vmrun/vmrun_test.rb +41 -14
  130. data/test/poolparty/plugins/chef_deploy_test.rb +37 -0
  131. data/test/poolparty/plugins/rails_deploy_test.rb +50 -0
  132. data/test/poolparty/poolparty/plugin_test.rb +18 -0
  133. data/test/poolparty/poolparty/poolparty_base_class_test.rb +41 -3
  134. data/test/test_helper.rb +5 -1
  135. data/vendor/gems/dslify/LICENSE +20 -0
  136. data/vendor/gems/dslify/README.rdoc +33 -0
  137. data/vendor/gems/dslify/Rakefile +56 -56
  138. data/vendor/gems/dslify/lib/dslify.rb +76 -5
  139. data/vendor/gems/dslify/test/dslify_test.rb +197 -0
  140. data/vendor/gems/dslify/test/test_helper.rb +7 -0
  141. data/vendor/gems/git-style-binaries/README.markdown +274 -0
  142. data/vendor/gems/{butterfly → git-style-binaries}/Rakefile +64 -62
  143. data/vendor/gems/git-style-binaries/VERSION.yml +4 -0
  144. data/vendor/gems/git-style-binaries/doc/EXAMPLES +1 -0
  145. data/vendor/gems/git-style-binaries/doc/poolparty-binaries.screenplay +45 -0
  146. data/vendor/gems/git-style-binaries/git-style-binaries.gemspec +69 -0
  147. data/vendor/gems/git-style-binaries/lib/ext/colorize.rb +198 -0
  148. data/vendor/gems/git-style-binaries/lib/ext/core.rb +16 -0
  149. data/vendor/gems/git-style-binaries/lib/git-style-binary/autorunner.rb +21 -0
  150. data/vendor/gems/git-style-binaries/lib/git-style-binary/command.rb +204 -0
  151. data/vendor/gems/git-style-binaries/lib/git-style-binary/commands/help.rb +32 -0
  152. data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/name_resolver.rb +78 -0
  153. data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/pager.rb +37 -0
  154. data/vendor/gems/git-style-binaries/lib/git-style-binary/parser.rb +223 -0
  155. data/vendor/gems/git-style-binaries/lib/git-style-binary.rb +74 -0
  156. data/vendor/gems/git-style-binaries/test/fixtures/flickr +4 -0
  157. data/vendor/gems/git-style-binaries/test/fixtures/flickr-download +17 -0
  158. data/vendor/gems/git-style-binaries/test/fixtures/wordpress +42 -0
  159. data/vendor/gems/git-style-binaries/test/fixtures/wordpress-categories +18 -0
  160. data/vendor/gems/git-style-binaries/test/fixtures/wordpress-list +18 -0
  161. data/vendor/gems/git-style-binaries/test/fixtures/wordpress-post +26 -0
  162. data/vendor/gems/git-style-binaries/test/git-style-binary/command_test.rb +17 -0
  163. data/vendor/gems/git-style-binaries/test/git_style_binary_test.rb +21 -0
  164. data/vendor/gems/git-style-binaries/test/running_binaries_test.rb +224 -0
  165. data/vendor/gems/git-style-binaries/test/shoulda_macros/matching_stdio.rb +13 -0
  166. data/vendor/gems/git-style-binaries/test/test_helper.rb +28 -0
  167. data/vendor/gems/parenting/lib/parenting/parenting.rb +13 -4
  168. data/vendor/gems/rest-client/README.rdoc +151 -0
  169. data/vendor/gems/rest-client/Rakefile +85 -0
  170. data/vendor/gems/rest-client/bin/restclient +87 -0
  171. data/vendor/gems/rest-client/lib/rest_client.rb +2 -0
  172. data/vendor/gems/rest-client/lib/restclient/exceptions.rb +84 -0
  173. data/vendor/gems/rest-client/lib/restclient/mixin/response.rb +43 -0
  174. data/vendor/gems/rest-client/lib/restclient/raw_response.rb +30 -0
  175. data/vendor/gems/rest-client/lib/restclient/request.rb +232 -0
  176. data/vendor/gems/rest-client/lib/restclient/resource.rb +146 -0
  177. data/vendor/gems/rest-client/lib/restclient/response.rb +20 -0
  178. data/vendor/gems/rest-client/lib/restclient.rb +93 -0
  179. data/vendor/gems/rest-client/rest-client.gemspec +21 -0
  180. data/vendor/gems/rest-client/spec/base.rb +4 -0
  181. data/vendor/gems/rest-client/spec/exceptions_spec.rb +54 -0
  182. data/vendor/gems/rest-client/spec/mixin/response_spec.rb +46 -0
  183. data/vendor/gems/rest-client/spec/raw_response_spec.rb +17 -0
  184. data/vendor/gems/rest-client/spec/request_spec.rb +442 -0
  185. data/vendor/gems/rest-client/spec/resource_spec.rb +75 -0
  186. data/vendor/gems/rest-client/spec/response_spec.rb +16 -0
  187. data/vendor/gems/rest-client/spec/restclient_spec.rb +53 -0
  188. data/vendor/gems/trollop/FAQ.txt +35 -0
  189. data/vendor/gems/trollop/History.txt +97 -0
  190. data/vendor/gems/trollop/Manifest.txt +7 -0
  191. data/vendor/gems/trollop/README.txt +40 -0
  192. data/vendor/gems/trollop/Rakefile +36 -0
  193. data/vendor/gems/trollop/lib/trollop.rb +735 -0
  194. data/vendor/gems/trollop/release-script.txt +13 -0
  195. data/vendor/gems/trollop/test/test_trollop.rb +1042 -0
  196. data/vendor/gems/trollop/www/index.html +167 -0
  197. metadata +100 -70
  198. data/bin/cloud-describe +0 -28
  199. data/bin/cloud-handle-load +0 -27
  200. data/bin/cloud-rsync +0 -28
  201. data/bin/cloud-spec +0 -40
  202. data/lib/poolparty/plugins/nanite.rb +0 -41
  203. data/lib/poolparty/plugins/runit.rb +0 -96
  204. data/vendor/gems/butterfly/History.txt +0 -4
  205. data/vendor/gems/butterfly/PostInstall.txt +0 -2
  206. data/vendor/gems/butterfly/README.rdoc +0 -48
  207. data/vendor/gems/butterfly/VERSION.yml +0 -4
  208. data/vendor/gems/butterfly/bin/flutter +0 -4
  209. data/vendor/gems/butterfly/butterfly.gemspec +0 -37
  210. data/vendor/gems/butterfly/examples/config.ru +0 -15
  211. data/vendor/gems/butterfly/examples/my_app.rb +0 -12
  212. data/vendor/gems/butterfly/lib/butterfly.rb +0 -14
  213. data/vendor/gems/butterfly/lib/handler.rb +0 -48
  214. data/vendor/gems/butterfly/lib/request.rb +0 -29
  215. data/vendor/gems/butterfly/lib/response.rb +0 -49
  216. data/vendor/gems/butterfly/script/console +0 -10
  217. data/vendor/gems/butterfly/script/destroy +0 -14
  218. data/vendor/gems/butterfly/script/generate +0 -14
  219. data/vendor/gems/butterfly/test/test_adapter_base.rb +0 -23
  220. data/vendor/gems/butterfly/test/test_butterfly_request.rb +0 -46
  221. data/vendor/gems/butterfly/test/test_butterfly_response.rb +0 -43
  222. data/vendor/gems/butterfly/test/test_butterfly_server.rb +0 -16
  223. data/vendor/gems/butterfly/test/test_default.rb +0 -12
  224. data/vendor/gems/butterfly/test/test_helper.rb +0 -6
  225. data/vendor/gems/dslify/History.txt +0 -4
  226. data/vendor/gems/dslify/Manifest.txt +0 -25
  227. data/vendor/gems/dslify/PostInstall.txt +0 -5
  228. data/vendor/gems/dslify/README.txt +0 -60
  229. data/vendor/gems/dslify/config/hoe.rb +0 -73
  230. data/vendor/gems/dslify/config/requirements.rb +0 -15
  231. data/vendor/gems/dslify/dslify.gemspec +0 -40
  232. data/vendor/gems/dslify/lib/dslify/dslify.rb +0 -76
  233. data/vendor/gems/dslify/lib/dslify/version.rb +0 -10
  234. data/vendor/gems/dslify/script/console +0 -10
  235. data/vendor/gems/dslify/script/destroy +0 -14
  236. data/vendor/gems/dslify/script/generate +0 -14
  237. data/vendor/gems/dslify/script/txt2html +0 -82
  238. data/vendor/gems/dslify/setup.rb +0 -1585
  239. data/vendor/gems/dslify/tasks/deployment.rake +0 -34
  240. data/vendor/gems/dslify/tasks/environment.rake +0 -7
  241. data/vendor/gems/dslify/tasks/website.rake +0 -17
  242. data/vendor/gems/dslify/test/test_dslify.rb +0 -138
  243. data/vendor/gems/dslify/website/index.html +0 -86
  244. data/vendor/gems/dslify/website/index.txt +0 -83
  245. data/vendor/gems/dslify/website/javascripts/rounded_corners_lite.inc.js +0 -285
  246. data/vendor/gems/dslify/website/stylesheets/screen.css +0 -138
  247. data/vendor/gems/dslify/website/template.html.erb +0 -48
@@ -25,25 +25,23 @@ The sshkey resource specifies an ssh key that should be distributed on all the n
25
25
 
26
26
  class Sshkey < Resource
27
27
 
28
+ dsl_methods(:key,
29
+ :keypath,
30
+ :name)
31
+
32
+ default_options(:type => 'rsa')
33
+
28
34
  def initialize(opts={}, extra_opts={}, &block)
29
35
  super(opts, extra_opts, &block)
30
- @key = Key.new(keypath? ? keypath : nil)
31
- options[:key] = @key.content
32
- end
33
-
34
- def name(i=nil)
35
- if i
36
- options[:name] = i
37
- else
38
- options[:name] ? options[:name] : ::File.basename(@key.full_filepath)
39
- end
36
+ @key = Key.new(keypath ? keypath : nil)
37
+ self.key = @key.content
40
38
  end
41
39
 
42
40
  def enctype(i=nil)
43
- i ? options[:type] = i : options[:type]
41
+ i ? self.type = i : type
44
42
  end
45
43
 
46
44
  end
47
45
 
48
46
  end
49
- end
47
+ end
@@ -16,8 +16,8 @@ The symlink resource sets a symlink
16
16
 
17
17
  == Options
18
18
 
19
- * <tt>name</tt> The location of the symlink
20
- * <tt>target</tt> The source of the symlink, the existing file or directory
19
+ * <tt>name</tt> The location of the symlink (target)
20
+ * <tt>source</tt> The source of the symlink, the existing file or directory
21
21
 
22
22
  == Examples
23
23
 
@@ -25,9 +25,7 @@ The symlink resource sets a symlink
25
25
  =end
26
26
  class Symlink < Resource
27
27
 
28
- def initialize *args, &block
29
- super
30
- end
28
+ dsl_methods :source
31
29
 
32
30
  def present
33
31
  :create
@@ -3,6 +3,11 @@ module PoolParty
3
3
 
4
4
  class User < Resource
5
5
 
6
+ dsl_methods :name, # Name of the user
7
+ :password, # Password for the user
8
+ :home # Home directory
9
+
10
+
6
11
  default_options({
7
12
  :shell => "/bin/sh"
8
13
  })
@@ -27,7 +27,7 @@ To use these variables, in your Erb template, reference them like so
27
27
  has_variable(:name => "name", :value => "#{cloud.name}")
28
28
  =end
29
29
  class Variable < Resource
30
-
30
+ dsl_methods :name, :value
31
31
  end
32
32
 
33
33
  end
@@ -29,7 +29,7 @@ defaults
29
29
  stats uri /poolparty
30
30
  stats realm Statistics\ for\ PoolParty
31
31
 
32
- listen <%= @node[:poolparty][:haproxy_name] %>
32
+ listen PoolParty-site-<%= @node[:poolparty][:haproxy_name] %>
33
33
  mode <%= @node[:poolparty][:proxy_mode] %>
34
34
  bind 0.0.0.0:<%= @node[:poolparty][:ports_haproxy].join(",0.0.0.0:") %>
35
35
  cookie POOLPARTY
@@ -16,6 +16,9 @@ module PoolParty
16
16
  end
17
17
  def verify(&block)
18
18
  v = Verify.new(&block)
19
+ # ugly, todo fix
20
+ ip = nodes(:status => "running").first.ip rescue "127.0.0.1"
21
+ v.host = ip
19
22
  v.verifiers.each {|v| verifiers << v}
20
23
  end
21
24
  def passing?
@@ -41,6 +44,7 @@ module PoolParty
41
44
  Dir[::File.dirname(__FILE__)+"/verifiers/*"].each {|m| require m }
42
45
 
43
46
  class Verify
47
+ attr_accessor :host
44
48
  def initialize(&block)
45
49
  ::PoolParty.require_user_directory "verifiers"
46
50
 
data/lib/poolparty.rb CHANGED
@@ -32,10 +32,14 @@ unless @required_software.empty?
32
32
  exit(0)
33
33
  end
34
34
 
35
- Dir.glob(File.join(File.dirname(__FILE__),'..', 'vendor/gems/*/lib/*.rb')).each do |d|
36
- require d
35
+ Dir.glob(File.join(File.dirname(__FILE__),'..', 'vendor/gems/*/lib')).each do |d|
36
+ $LOAD_PATH.unshift(d)
37
37
  end
38
38
 
39
+ require "dslify"
40
+ require "parenting"
41
+ require "suitcase"
42
+
39
43
  t=Time.now
40
44
  ## Load PoolParty
41
45
  module PoolParty
@@ -43,11 +47,9 @@ end
43
47
 
44
48
  def PoolParty.require_directory(dir)
45
49
  if ::File.file?(dir)
46
- puts "#{::File.expand_path(dir)}" if $DEBUGGING || $GENERATING_MANIFEST
47
50
  require dir
48
51
  else
49
52
  Dir["#{dir}/*.rb"].sort.each do |file|
50
- puts "#{::File.expand_path(file)}" if $DEBUGGING || $GENERATING_MANIFEST
51
53
  require "#{file}" if ::File.file?(file)
52
54
  end
53
55
  Dir["#{dir}/*"].sort.each do |dir|
@@ -60,6 +62,9 @@ end
60
62
  $_poolparty_load_directories = [
61
63
  "core",
62
64
  "dependencies.rb",
65
+ "modules/searchable_paths.rb",
66
+ "modules/pinger.rb",
67
+ "poolparty/key.rb",
63
68
  "dependency_resolver/dependency_resolver_cloud_extensions.rb",
64
69
  "dependency_resolver/dependency_resolver.rb",
65
70
  "poolparty/poolparty_base_class.rb",
data/lib/poolpartycl.rb CHANGED
@@ -6,60 +6,9 @@ def help_array
6
6
  ["-h", "--help", "-V", "--version", "--debug", "-d"]
7
7
  end
8
8
 
9
- def ask_with_help(opts={}, &block)
10
- help_str = opts[:help]
11
- message = opts[:message]
12
-
13
- o = ask("#{message} (h for help)") do |q|
14
- q.validate = opts[:validate] if opts.has_key?(:validate)
15
- end
16
-
17
- if %w(h H).include?(o)
18
- colored_say help_str, :help
19
- ask_with_help(opts, &block)
20
- else
21
- block.call(o)
22
- end
23
- o
24
- end
25
-
26
- def rescued_ask(m, r)
27
- begin
28
- t = colored_ask m
29
- rescue Exception => e
30
- say r
31
- end
32
- end
33
-
34
- def colored_ask(str, color = :notice)
35
- setup_colors
36
- ask("<%= color(\"#{str}\", :#{color}) %>")
37
- end
38
-
39
- def colored_say(str, color = :headline)
40
- setup_colors
41
- say("<%= color(\"#{str}\", :#{color}) %>")
42
- end
43
-
44
- def setup_colors
45
- unless @setup_colors
46
- ft = HighLine::ColorScheme.new do |cs|
47
- cs[:headline] = [ :bold, :yellow, :on_black ]
48
- cs[:horizontal_line] = [ :bold, :white, :on_blue]
49
- cs[:critical] = [ :yellow, :on_red ]
50
- cs[:error] = [ :bold, :red ]
51
- cs[:help] = [ :bold, :white, :on_blue]
52
- cs[:notice] = [ :blue, :on_white]
53
- end
54
-
55
- HighLine.color_scheme = ft
56
- @setup_colors = true
57
- end
58
- end
59
-
60
9
  def are_you_sure?(msg)
61
10
  puts msg
62
- resp = gets.strip!
11
+ resp = STDIN.gets.chomp
63
12
 
64
13
  case resp
65
14
  when "Y"
@@ -1,3 +1,4 @@
1
+ require "rubygems"
1
2
  require "spec"
2
3
 
3
4
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
@@ -15,10 +15,10 @@ describe "Server list active binary" do
15
15
  @pool_hash = @p.to_properties_hash
16
16
  end
17
17
  it "should have the name on the schema" do
18
- @pool_hash.options.name.should == :binary_testing_cloud
18
+ @pool_hash[:options][:name].should == :binary_testing_cloud
19
19
  end
20
20
  it "should have the remoter base available" do
21
- @pool_hash.options.remote_base.nil?.should == false
21
+ @pool_hash[:options][:remoter_base].should_not be_nil
22
22
  end
23
23
  end
24
- end
24
+ end
@@ -4,57 +4,20 @@ describe "Object" do
4
4
  it "should respond to to_os" do
5
5
  Object.new.respond_to?(:to_os).should == true
6
6
  end
7
- describe "methodable object" do
8
- before(:each) do
9
- @obj.stub!(:run).and_return "true"
10
- end
11
- it "should run the method :run because it exists" do
12
- @obj.send_if_method(:run).should == "true"
13
- end
14
- it "should not run the method :bah because it doesn't exist" do
15
- @obj.send_if_method("bah").should == "bah"
16
- end
17
- it "should not run the method if it is sent nil" do
18
- @obj.send_if_method(nil).should == nil
19
- end
20
- it "should not run an empty string method" do
21
- @obj.send_if_method("").should == ""
22
- end
23
- it "should not run a method that is an integer" do
24
- @obj.send_if_method(2).should == 2
25
- end
26
- end
7
+
27
8
  describe "with_options" do
28
9
  before(:each) do
29
- @obj = Class.new
30
- end
31
- it "should respond to with_options" do
32
- @obj.respond_to?(:with_options).should == true
33
- end
34
- it "should set the options on the parent" do
35
- allow_message_expectations_on_nil
36
- @a.should_receive(:clone).and_return @a
37
- @a.stub!(:options).and_return({})
38
- with_options({:nick => "name"}, @a) do
39
- end
40
- end
41
-
42
- describe "running" do
43
- before(:each) do
44
- Class.stub!(:default_options).and_return({})
45
- Class.send :include, Dslify
46
- @a = Class.new
47
- @b = Class.new
10
+ class TestObjClass
11
+ include Dslify
12
+ dsl_methods :b
48
13
 
49
- with_options({:nick => "name", :b => @b}, @a) do
50
- b.dude "totally"
14
+ def initialize(o={})
15
+ set_vars_from_options o
51
16
  end
52
-
53
- end
54
- it "should set the options on the child in the instance eval" do
55
- @b.dude.should == "totally"
56
17
  end
18
+ @obj = TestObjClass.new
57
19
  end
20
+
58
21
  describe "contextual running" do
59
22
  before(:each) do
60
23
  @obj.stub!(:default_options).and_return {}
@@ -65,4 +28,4 @@ describe "Object" do
65
28
  end
66
29
  end
67
30
  end
68
- end
31
+ end
@@ -8,19 +8,25 @@ end
8
8
  class DependencyResolverSpecTestResource
9
9
  include Dslify
10
10
  include PoolParty::DependencyResolverResourceExtensions
11
+
12
+ dsl_methods :name, :template, :content
11
13
  end
12
14
 
13
15
  # plugins, base_packages
14
16
  class DependencyResolverSpecTestService < DependencyResolverCloudExtensionsSpecBase
15
-
17
+ dsl_methods :listen
16
18
  end
17
19
 
18
20
  # clouds, duh
19
21
  class DependencyResolverSpecTestCloud < DependencyResolverCloudExtensionsSpecBase
22
+ dsl_methods :keypair, :name
20
23
  end
21
24
 
22
25
  class JunkClassForDefiningPlugin
23
26
  plugin :apache_plugin do
27
+ default_options(
28
+ :listen => 80
29
+ )
24
30
  def loaded(o={},&block)
25
31
  end
26
32
  end
@@ -29,35 +35,35 @@ end
29
35
  describe "Resolution spec" do
30
36
  before(:each) do
31
37
  @apache_file = DependencyResolverSpecTestResource.new
32
- @apache_file.name "/etc/apache2/apache2.conf"
33
- @apache_file.template "/absolute/path/to/template"
34
- @apache_file.content "rendered template string"
38
+ @apache_file.name = "/etc/apache2/apache2.conf"
39
+ @apache_file.template = "/absolute/path/to/template"
40
+ @apache_file.content = "rendered template string"
35
41
 
36
42
  @apache = DependencyResolverSpecTestService.new :apache_file
37
- @apache.listen "8080"
43
+ @apache.listen = "8080"
38
44
  @apache.resources[:file] = []
39
45
  @apache.resources[:file] << @apache_file
40
46
 
41
47
  @cloud = DependencyResolverSpecTestCloud.new :cloud
42
- @cloud.keypair "bob"
43
- @cloud.name "dog"
48
+ @cloud.keypair = "bob"
49
+ @cloud.name = "dog"
44
50
 
45
51
  (@cloud.resources[:apache] ||= []) << @apache
46
52
 
47
53
  @cloud_file_motd = DependencyResolverSpecTestResource.new
48
- @cloud_file_motd.name "/etc/motd"
49
- @cloud_file_motd.content "Welcome to the cloud"
54
+ @cloud_file_motd.name = "/etc/motd"
55
+ @cloud_file_motd.content = "Welcome to the cloud"
50
56
 
51
57
  @cloud_file_profile = DependencyResolverSpecTestResource.new
52
- @cloud_file_profile.name "/etc/profile"
53
- @cloud_file_profile.content "profile info"
58
+ @cloud_file_profile.name = "/etc/profile"
59
+ @cloud_file_profile.content = "profile info"
54
60
 
55
61
  @cloud.resources[:file] = []
56
62
  @cloud.resources[:file] << @cloud_file_motd
57
63
  @cloud.resources[:file] << @cloud_file_profile
58
64
 
59
65
  @cloud_directory_var_www = DependencyResolverSpecTestResource.new
60
- @cloud_directory_var_www.name "/var/www"
66
+ @cloud_directory_var_www.name = "/var/www"
61
67
 
62
68
  @cloud.resources[:directory] = []
63
69
  @cloud.resources[:directory] << @cloud_directory_var_www
@@ -34,7 +34,7 @@
34
34
  "default_properties_hash_filename": "cloud.json",
35
35
  "poolparty_home_path": "/Users/mfairchild/.poolparty",
36
36
  "keypairs": ["/Users/mfairchild/.ec2oncourse/r_and_d.pem", "/Users/mfairchild/.ssh/id_rsa"],
37
- "availabilty_zone": "us-east-1a",
37
+ "availability_zone": "us-east-1a",
38
38
  "fileserver_base": "puppet://master/files",
39
39
  "debugging": false,
40
40
  "minimum_instances": 1,
@@ -7,11 +7,11 @@ describe "Option Parser" do
7
7
  @op = PoolParty::Optioner.new([], {:abstract => true})
8
8
  @op.parse_options
9
9
  end
10
- it "should set the options as an Hash" do
11
- @op.options.class.should == Hash
10
+ it "should set the dsl_options as an Hash" do
11
+ @op.dsl_options.class.should == Hash
12
12
  end
13
13
  it "should have the verbose option set to false by default" do
14
- @op.verbose.should == false
14
+ @op.verbose?.should == false
15
15
  end
16
16
  it "should call a method called on it that is not defined on the options if they exist" do
17
17
  @op.dsl_options.should_receive(:[]).with(:verbose).at_least(1).and_return true
@@ -40,11 +40,4 @@ describe "Option Parser" do
40
40
  @op.flagged_args.should == ["-v", "-i", "1", "-x"]
41
41
  end
42
42
  end
43
-
44
- it "should be able to take a block and set some options on the block" do
45
- PoolParty::Optioner.new(["-w"], {:abstract => false, :load_pools => false}) do |opts, optioner|
46
- opts.on('-w', '--wee') { optioner.wee "wee" }
47
- opts.on('-t t', '--teatime tea') { optioner.tea "time" }
48
- end.wee.should == "wee"
49
- end
50
- end
43
+ end
@@ -15,7 +15,7 @@ class TestParentClass < PoolParty::Cloud::Cloud
15
15
  end
16
16
  describe "CloudResourcer" do
17
17
  before(:each) do
18
- @tc = ResourcerTestClass.new :bank do
18
+ @tc = Cloud.new :bank do
19
19
  end
20
20
  end
21
21
  it "should have the method instances" do
@@ -5,7 +5,6 @@ include PoolParty::Remote
5
5
 
6
6
  describe "Remote Instance" do
7
7
  before(:each) do
8
- setup
9
8
  @valid_hash = {:ip => "127.0.0.1", :name => "master", :responding => "true"}
10
9
  end
11
10
 
@@ -7,14 +7,10 @@ end
7
7
 
8
8
  describe "RemoterBase" do
9
9
  before(:each) do
10
- setup
10
+ @tr = TestRemoteClass.new
11
11
  end
12
- describe "methods" do
13
- before(:each) do
14
- @tr = TestRemoteClass.new
15
- end
16
- %w(launch_new_instance! terminate_instance describe_instance instances_list).each do |method|
17
- eval <<-EOE
12
+ %w(launch_new_instance! terminate_instance describe_instance instances_list).each do |method|
13
+ eval <<-EOE
18
14
  it "should raise an exception if #{method} is not defined as a method" do
19
15
  # pending # Weird .should raise_error
20
16
  lambda { @tr.class.#{method} }.should raise_error
@@ -28,8 +24,8 @@ describe "RemoterBase" do
28
24
  @tr.#{method}
29
25
  }.should_not raise_error
30
26
  end
31
- EOE
32
- end
33
-
27
+ EOE
28
+
34
29
  end
35
- end
30
+ end
31
+
@@ -3,22 +3,20 @@ class TestEC2Class < Ec2
3
3
  include CloudDsl
4
4
  include Dslify
5
5
 
6
- default_options PoolParty::Default.default_options.merge({:access_key => "Not an access key",
7
- :secret_access_key => "not a secret access key", :keypair => 'id_rsa'})
6
+ default_options :access_key => "Not an access key",
7
+ :secret_access_key => "not a secret access key",
8
+ :keypair => 'id_rsa'
8
9
 
9
- def ami;"ami-abc123";end
10
- def size; "small";end
11
- def security_group; "default";end
12
- def ebs_volume_id; "ebs_volume_id";end
13
- def availabilty_zone; "us-east-1a";end
14
- def verbose; false; end
10
+ # def ami;"ami-abc123";end
11
+ # def size; "small";end
12
+ # def security_group; "default";end
13
+ # def ebs_volume_id; "ebs_volume_id";end
14
+ # def availability_zone; "us-east-1a";end
15
+ # def verbose; false; end
15
16
  def describe_instances(o={})
16
17
  response_list_of_instances
17
18
  end
18
19
  end
19
20
 
20
21
  class TestEc2RemoteInstance < PoolParty::Remote::Ec2RemoteInstance
21
- def initialize(opts, p=nil)
22
- super
23
- end
24
22
  end
@@ -2,30 +2,21 @@ require File.join(File.dirname(__FILE__), '../../spec_helper')
2
2
  require File.dirname(__FILE__) + '/ec2_mocks_and_stubs.rb'
3
3
 
4
4
  include PoolParty::Remote
5
- # include Aska
6
-
7
- # require File.dirname(__FILE__) + '/ec2_mocks_and_stubs.rb'
8
5
 
9
6
 
10
7
  describe "Ec2RemoteInstance" do
11
8
  before(:each) do
12
9
  @cloud = TestCloud.new :test_remoter_base_cloud
13
- @ec2 = TestEc2RemoteInstance.new( {:name => "node3"}, TestEC2Class.new(@cloud) )
14
- # node3 stubbed as {:ip=>"192.168.0.3", :keypair=>"fake_keypair", :status=>"pending", :name=>"node3", :launching_time=>Time.now
15
- @ec2.my_cloud.stub!(:describe_instances).and_return response_list_of_instances
16
- end
17
- it "should require options" do
18
- lambda {TestEc2RemoteInstance.new()}.should raise_error
10
+ @tec2 = TestEC2Class.new(@cloud.dsl_options)
11
+ @ec2 = TestEc2RemoteInstance.new( @tec2.dsl_options.merge(:name => "node3", :status => "pending", :ip => "192.168.0.3"))
19
12
  end
20
13
  it "should have the name set in the options" do
21
- @ec2.respond_to?(:name).should == false
22
- @ec2.options.keys.include?(:name).should == true
14
+ @ec2.respond_to?(:name).should == true
15
+ @ec2.dsl_options.keys.include?(:name).should == true
23
16
  @ec2.name.should == 'node3'
24
17
  end
25
18
  it "should have access to parent cloud options" do
26
- @ec2.my_cloud.class.should == TestEC2Class
27
- @ec2.my_cloud.should respond_to(:describe_instances)
28
- @ec2.my_cloud.size.should == 'small'
19
+ @ec2.instance_type.should == 'm1.small'
29
20
  end
30
21
  it "should have instance description hash mapped to methods" do
31
22
  # puts "<ol>"
@@ -34,43 +25,14 @@ describe "Ec2RemoteInstance" do
34
25
  @ec2.status.should == 'pending'
35
26
  @ec2.name.should == 'node3'
36
27
  @ec2.ip.should == '192.168.0.3'
37
- @ec2.launching_time.should_not be_nil
38
- @ec2.valid?.should be_true
39
- end
40
- it "should not be the master" do
41
- @ec2.master?.should_not be_true
42
28
  end
43
29
  end
44
30
 
45
-
46
-
47
-
48
-
49
-
50
31
  describe "Remote Instance" do
51
32
  before(:each) do
52
- setup
53
33
  @valid_hash = {:ip => "127.0.0.1", :name => "master"}
54
34
  end
55
35
 
56
- describe "configurable" do
57
- it "should set the options sent in the options, overiding passed option with found instance values" do
58
- @ec2 = TestEc2RemoteInstance.new(@valid_hash)
59
- @ec2.ip.should == "127.0.0.1"
60
- end
61
- it "should set the options sent by the parent" do
62
- @obj = Object.new
63
- @obj.stub!(:options).and_return({:dude => "tte"})
64
- @ec2 = @ec2 = TestEc2RemoteInstance.new(@valid_hash, @obj)
65
- @ec2.dude.should == "tte"
66
- end
67
- it "should not overwrite the options that are already set" do
68
- @obj = Object.new
69
- @obj.stub!(:options).and_return({:ip => "172.176.0.1"})
70
- @ec2 = TestEc2RemoteInstance.new(@valid_hash, @obj)
71
- @ec2.ip.should == "127.0.0.1"
72
- end
73
- end
74
36
  it "should create a remote instance with a Hash" do
75
37
  @ec2 = TestEc2RemoteInstance.new(@valid_hash)
76
38
  @ec2.valid?.should == true
@@ -111,4 +73,4 @@ describe "Remote Instance" do
111
73
  # @ec2.responding.should_not be_nil
112
74
  end
113
75
  end
114
- end
76
+ end
@@ -5,7 +5,7 @@ require File.dirname(__FILE__) + '/ec2_mocks_and_stubs.rb'
5
5
  describe "ec2 remote base" do
6
6
  before(:each) do
7
7
  @cloud = TestCloud.new :test_remoter_base_cloud
8
- @tr = TestEC2Class.new(@cloud)
8
+ @tr = TestEC2Class.new(@cloud.dsl_options)
9
9
  stub_remoter_for(@tr)
10
10
  # @tr.stub!(:get_instances_description).and_return response_list_of_instances
11
11
  end
@@ -91,8 +91,7 @@ describe "ec2 remote base" do
91
91
  @tr.next_unused_elastic_ip.should == "174.129.212.93"
92
92
  end
93
93
  it "should use only the elastic ips set on the cloud" do
94
- @cloud.stub!(:elastic_ips?).and_return true
95
- @cloud.stub!(:elastic_ips).and_return ["182.199.200.201"]
94
+ @tr.stub!(:elastic_ips).and_return ["182.199.200.201"]
96
95
  @tr.stub!(:cloud).and_return @cloud
97
96
  @tr.next_unused_elastic_ip.should == "182.199.200.201"
98
97
  end
@@ -2,10 +2,9 @@ require File.dirname(__FILE__) + '/../spec_helper'
2
2
 
3
3
  describe "Remoter" do
4
4
  before(:each) do
5
- setup
6
5
  @cloud = cloud :app do;end
7
6
  @tc = TestClass.new
8
- @tc.parent = @cloud
7
+ # @tc.parent = @cloud
9
8
  @sample_instances_list = [{:ip => "192.168.0.1", :name => "master"}, {:ip => "192.168.0.2", :name => "node1"}]
10
9
  end
11
10
  describe "ssh_string" do
@@ -130,4 +129,4 @@ describe "Remoter" do
130
129
  # end
131
130
  # end
132
131
 
133
- end
132
+ end
@@ -9,7 +9,7 @@ describe "Remote Instance" do
9
9
  reset!
10
10
  @tc = cloud :test_git_class_cloud do
11
11
  has_file "/var/www/bino"
12
- has_git_repos :at => "/var/www/", :name => "gitrepos.git", :source => "git://git/repos/source.git", :requires_user => "finger"
12
+ has_git_repo "git://git/repos/source.git", :to => "/var/www/source", :requires_user => "finger"
13
13
  end
14
14
  @compiled = ChefResolver.new(@tc.to_properties_hash).compile
15
15
  end
@@ -25,17 +25,14 @@ describe "Remote Instance" do
25
25
  describe "in resource" do
26
26
  before(:each) do
27
27
  @tc = cloud :test_git_class_cloud_two do
28
- has_git_repos(:name => "gittr") do
29
- symlink "/var/www/xnot.org/public"
30
- source "git://source.git"
31
- path "/var/www/xnot.org"
32
- at "/var/www"
28
+ has_git_repo("git://source.git") do
29
+ to "/var/www/xnot.org"
33
30
  end
34
31
  end
35
32
  end
36
33
  it "should have the path set within the resource" do
37
- ChefResolver.new(@tc.to_properties_hash).compile.should =~ /execute \"git-gittr/
34
+ ChefResolver.new(@tc.to_properties_hash).compile.should =~ /execute \"git-git:\/\/source\.git/
38
35
  end
39
36
  end
40
37
  end
41
- end
38
+ end