auser-poolparty 1.1.3 → 1.1.4

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 (76) hide show
  1. data/README.txt +1 -3
  2. data/VERSION.yml +1 -1
  3. data/bin/cloud-configure +0 -2
  4. data/bin/cloud-show +2 -2
  5. data/lib/poolparty/base_packages/haproxy.rb +7 -4
  6. data/lib/poolparty/base_packages/poolparty.rb +2 -0
  7. data/lib/poolparty/base_packages/tokyo_tyrant.rb +23 -0
  8. data/lib/poolparty/dependency_resolver/chef_resolver.rb +6 -5
  9. data/lib/poolparty/helpers/binary.rb +5 -2
  10. data/lib/poolparty/modules/cloud_dsl.rb +10 -0
  11. data/lib/poolparty/monitors/neighborhood_monitor.rb +3 -4
  12. data/lib/poolparty/net/remoter/interactive.rb +1 -0
  13. data/lib/poolparty/plugins/deploydirectory.rb +13 -22
  14. data/lib/poolparty/plugins/git.rb +8 -6
  15. data/lib/poolparty/plugins/svn.rb +56 -39
  16. data/lib/poolparty/poolparty/cloud.rb +23 -4
  17. data/lib/poolparty/poolparty/plugin_model.rb +1 -1
  18. data/lib/poolparty/poolparty/pool.rb +1 -1
  19. data/lib/poolparty/poolparty/poolparty_base_class.rb +2 -0
  20. data/lib/poolparty/provision/dr_configure.rb +6 -5
  21. data/test/poolparty/modules/cloud_dsl_test.rb +33 -0
  22. data/test/test_helper.rb +1 -1
  23. data/vendor/chef/apache2/README.rdoc +59 -0
  24. data/vendor/chef/apache2/attributes/apache.rb +72 -0
  25. data/vendor/chef/apache2/definitions/apache_module.rb +36 -0
  26. data/vendor/chef/apache2/definitions/apache_site.rb +36 -0
  27. data/vendor/chef/apache2/definitions/web_app.rb +45 -0
  28. data/vendor/chef/apache2/files/default/apache2_module_conf_generate.pl +41 -0
  29. data/vendor/chef/apache2/recipes/default.rb +132 -0
  30. data/vendor/chef/apache2/recipes/mod_alias.rb +20 -0
  31. data/vendor/chef/apache2/recipes/mod_auth_basic.rb +20 -0
  32. data/vendor/chef/apache2/recipes/mod_auth_digest.rb +20 -0
  33. data/vendor/chef/apache2/recipes/mod_authn_file.rb +20 -0
  34. data/vendor/chef/apache2/recipes/mod_authnz_ldap.rb +20 -0
  35. data/vendor/chef/apache2/recipes/mod_authz_default.rb +20 -0
  36. data/vendor/chef/apache2/recipes/mod_authz_groupfile.rb +20 -0
  37. data/vendor/chef/apache2/recipes/mod_authz_host.rb +20 -0
  38. data/vendor/chef/apache2/recipes/mod_authz_user.rb +20 -0
  39. data/vendor/chef/apache2/recipes/mod_autoindex.rb +20 -0
  40. data/vendor/chef/apache2/recipes/mod_cgi.rb +20 -0
  41. data/vendor/chef/apache2/recipes/mod_dav.rb +20 -0
  42. data/vendor/chef/apache2/recipes/mod_dav_svn.rb +20 -0
  43. data/vendor/chef/apache2/recipes/mod_deflate.rb +20 -0
  44. data/vendor/chef/apache2/recipes/mod_dir.rb +20 -0
  45. data/vendor/chef/apache2/recipes/mod_env.rb +20 -0
  46. data/vendor/chef/apache2/recipes/mod_expires.rb +20 -0
  47. data/vendor/chef/apache2/recipes/mod_fcgid.rb +35 -0
  48. data/vendor/chef/apache2/recipes/mod_headers.rb +20 -0
  49. data/vendor/chef/apache2/recipes/mod_ldap.rb +20 -0
  50. data/vendor/chef/apache2/recipes/mod_log_config.rb +20 -0
  51. data/vendor/chef/apache2/recipes/mod_mime.rb +20 -0
  52. data/vendor/chef/apache2/recipes/mod_negotiation.rb +20 -0
  53. data/vendor/chef/apache2/recipes/mod_php5.rb +27 -0
  54. data/vendor/chef/apache2/recipes/mod_proxy.rb +20 -0
  55. data/vendor/chef/apache2/recipes/mod_proxy_http.rb +20 -0
  56. data/vendor/chef/apache2/recipes/mod_python.rb +22 -0
  57. data/vendor/chef/apache2/recipes/mod_rewrite.rb +20 -0
  58. data/vendor/chef/apache2/recipes/mod_setenvif.rb +20 -0
  59. data/vendor/chef/apache2/recipes/mod_ssl.rb +20 -0
  60. data/vendor/chef/apache2/recipes/mod_status.rb +20 -0
  61. data/vendor/chef/apache2/templates/default/a2dismod.erb +22 -0
  62. data/vendor/chef/apache2/templates/default/a2dissite.erb +29 -0
  63. data/vendor/chef/apache2/templates/default/a2enmod.erb +37 -0
  64. data/vendor/chef/apache2/templates/default/a2ensite.erb +38 -0
  65. data/vendor/chef/apache2/templates/default/apache2.conf.erb +630 -0
  66. data/vendor/chef/apache2/templates/default/default-site.erb +45 -0
  67. data/vendor/chef/apache2/templates/default/port_apache.erb +2 -0
  68. data/vendor/chef/apache2/templates/default/ports.conf.erb +6 -0
  69. data/vendor/chef/apache2/templates/default/web_app.conf.erb +43 -0
  70. data/vendor/gems/dslify/dslify.gemspec +2 -2
  71. data/vendor/gems/dslify/lib/dslify/version.rb +1 -1
  72. data/vendor/gems/suitcase/VERSION.yml +1 -1
  73. data/vendor/gems/suitcase/lib/suitcase/zipper.rb +23 -7
  74. data/vendor/gems/suitcase/suitcase.gemspec +5 -25
  75. data/vendor/gems/suitcase/test/suitcase_test.rb +13 -0
  76. metadata +61 -2
data/README.txt CHANGED
@@ -9,9 +9,7 @@ with language such as:
9
9
 
10
10
  pool :cloud do
11
11
  cloud :app do
12
- apache do
13
- has_virtualhost(:name => "/var/www/sites/poolpartyrb.com")
14
- end
12
+ instances 2..10
15
13
  end
16
14
  end
17
15
 
data/VERSION.yml CHANGED
@@ -1,4 +1,4 @@
1
1
  ---
2
- :patch: 3
2
+ :patch: 4
3
3
  :major: 1
4
4
  :minor: 1
data/bin/cloud-configure CHANGED
@@ -1,8 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
2
  $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
3
  require "poolparty"
4
- # require "poolpartycl"
5
-
6
4
 
7
5
  o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
8
6
  opts.on('-n cloudname', '--name name', 'Start cloud by this name') { |c| optioner.cloudname c }
data/bin/cloud-show CHANGED
@@ -7,11 +7,11 @@ o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
7
  end
8
8
 
9
9
  o.loaded_clouds.each do |cld|
10
-
10
+ puts "\nFrom #{$pool_specfile}\n"
11
11
  print_with_nice_printer "Cloud: #{cld.name}", [
12
12
  "instances #{cld.minimum_instances}..#{cld.maximum_instances}",
13
13
  "keypair #{cld.keypair}"
14
- ] do |printer|
14
+ ] do |printer|
15
15
  if cld.list_of_running_instances.size > 0
16
16
  printer.empty
17
17
  printer.center("Active instances")
@@ -4,13 +4,15 @@ module PoolParty
4
4
 
5
5
  def enable
6
6
  # We need the haproxy package
7
- has_package "apache2"
7
+ ::Suitcase::Zipper.add("#{::File.dirname(__FILE__)}/../../../vendor/chef/apache2", "chef/recipes")
8
8
  has_service "apache2"
9
- has_package({:name => "haproxy"})
9
+
10
+ has_package({:name => "haproxy"}) do
11
+ stops get_service("apache2")
12
+ end
10
13
 
11
14
  # Restart sysklogd after we update the haproxy.log
12
- has_service(:name => "sysklogd")
13
-
15
+ has_service(:name => "sysklogd")
14
16
  # Template variables
15
17
  has_variable("haproxy_name", :value => "#{cloud.name}")
16
18
  has_variable("listen_ports", :value => [ "8080" ], :namespace => "apache")
@@ -40,6 +42,7 @@ module PoolParty
40
42
  template "#{::File.dirname(__FILE__)}/../templates/haproxy.conf"
41
43
  calls get_exec("reloadhaproxy")
42
44
  end
45
+
43
46
  end
44
47
  end
45
48
  end
@@ -3,6 +3,8 @@ module PoolParty
3
3
  plugin :poolparty_base_packages do
4
4
 
5
5
  def enable
6
+ has_package "git"
7
+
6
8
  has_cron "/usr/bin/server-manage-election" do
7
9
  minute "0,5,10,15,20,25,30,35,40,45,50,55"
8
10
  command "/usr/bin/server-manage-election"
@@ -0,0 +1,23 @@
1
+ module PoolParty
2
+ class Base
3
+ plugin :poolparty_base_tokyo_tyrant do
4
+
5
+ def enable
6
+ has_package "build-essential"
7
+ has_package "zlib1g-dev"
8
+ has_package "libbz2-dev"
9
+ has_gem_package "rufus-tokyo"
10
+
11
+ has_exec "install tokyo-cabinet" do
12
+ command "cd ~ && git clone git://github.com/etrepum/tokyo-cabinet.git && cd tokyo-cabinet/ && ./configure && make && make install && cd ~"
13
+ not_if "which tcrtest"
14
+ end
15
+ has_exec "install tokyo-tyrant" do
16
+ command "cd ~ && git clone git://github.com/etrepum/tokyo-tyrant.git && cd tokyo-tyrant/ && ./configure && make && make install && cd ~"
17
+ not_if "which ttserver"
18
+ end
19
+ end
20
+
21
+ end
22
+ end
23
+ end
@@ -33,12 +33,7 @@ module PoolParty
33
33
  end
34
34
 
35
35
  def options_to_string(opts,tabs=0)
36
- # opts.map do |k,v|
37
- # res = to_option_string(v)
38
- # next unless res && !res.empty?
39
- # # "#{tf(tabs)}$#{k} = #{res}"
40
36
  handle_print_variables(opts) if opts
41
- # end.join("\n") if opts
42
37
  end
43
38
 
44
39
  def resources_to_string(opts,tabs=0)
@@ -115,6 +110,8 @@ module PoolParty
115
110
  end
116
111
  end
117
112
 
113
+ # TODO: This is brittle, need to find a way to make them reactive, rather than
114
+ # separate (the key/value pairs)
118
115
  def hash_flush_out(hash, pre="", post="")
119
116
  hash.map do |k,v|
120
117
  key = to_chef_key(k)
@@ -184,6 +181,10 @@ module PoolParty
184
181
  "notifies :start,"
185
182
  when :enable
186
183
  nil
184
+ when :if_not
185
+ "not_if"
186
+ when :notif
187
+ "not_if"
187
188
  when :onlyif
188
189
  "only_if"
189
190
  else
@@ -15,6 +15,7 @@ module PoolParty
15
15
  end
16
16
  end
17
17
 
18
+ # Helper to print with the nice printer
18
19
  def print_with_nice_printer(header=nil, strs=[], &block)
19
20
  printer = NicePrinter.new
20
21
  printer.header
@@ -25,6 +26,7 @@ module PoolParty
25
26
  printer.print
26
27
  end
27
28
 
29
+ # Keep the pool_specfile
28
30
  def pool_specfile
29
31
  $pool_specfile
30
32
  end
@@ -45,8 +47,9 @@ module PoolParty
45
47
  # These are the locations the spec file can be before the cloud
46
48
  # aborts because it cannot load the cloud
47
49
  def get_existing_spec_location
48
- [
49
- Dir["#{Dir.pwd}/*/clouds.rb"],
50
+ [
51
+ "#{Dir.pwd}/#{Default.default_specfile_name}",
52
+ Dir["#{Dir.pwd}/*/#{Default.default_specfile_name}"],
50
53
  "#{Default.remote_storage_path}/#{Default.default_specfile_name}",
51
54
  "#{Default.default_specfile_name}",
52
55
  "#{Default.base_config_directory}/#{Default.default_specfile_name}",
@@ -16,5 +16,15 @@ module PoolParty
16
16
  dsl_options[:dependency_resolver] = klass unless dsl_options[:dependency_resolver]
17
17
  end
18
18
 
19
+ # Enable a service package
20
+ def enable(service);dsl_options[service] = :enabled;end
21
+ # Disable a service package
22
+ def disable(service);dsl_options[service] = :disabled;end
23
+
24
+ # Check to see if the package has been enabled
25
+ def enabled?(srv)
26
+ dsl_options.has_key?(srv) && dsl_options[srv] == :enabled
27
+ end
28
+
19
29
  end
20
30
  end
@@ -1,6 +1,7 @@
1
1
  require ::File.dirname(__FILE__)+"/monitor_rack.rb"
2
2
  require ::File.dirname(__FILE__)+"/../lite.rb"
3
3
  require ::File.dirname(__FILE__)+"/../core/hash.rb"
4
+ require "#{::File.dirname(__FILE__)}/../poolparty/neighborhoods"
4
5
 
5
6
  module Monitors
6
7
 
@@ -12,13 +13,11 @@ module Monitors
12
13
  @env = env
13
14
  @request = Rack::Request.new env
14
15
  @response = Rack::Response.new
15
- @cloud = JSON.parse( open( "/etc/poolparty/clouds.json" ).read )
16
- @opts = @cloud["options"]
17
- @remoter_base = PoolParty::Remote.const_get(@opts.remote_base.split("::")[-1].camelcase)
16
+ @neighboorhoods = ::PoolParty::Neighborhoods.load_default
18
17
  end
19
18
 
20
19
  def default
21
- @remoter_base.send :describe_instances, @opts
20
+ @neighboorhoods.to_json
22
21
  end
23
22
 
24
23
  end
@@ -42,6 +42,7 @@ module PoolParty
42
42
  # A callback before the configuration task takes place
43
43
  def before_configuration_tasks
44
44
  end
45
+
45
46
  def remote_instances_list
46
47
  @containing_cloud = self
47
48
  n = Neighborhoods.load_default
@@ -1,9 +1,13 @@
1
1
  =begin rdoc
2
2
  DeployDirectory
3
+
4
+ Deploy directory will rsync a local directory to
5
+ each instance of your cloud.
3
6
 
4
- Deploy directory will tar.gz a local directory and sync it up to
5
- the master instance of the cloud. This enables you to send a directory
6
- up to the cloud and let the master host it for the remote slaves
7
+ example:
8
+ has_directory 'name', :from => '/local/path', :to => '/path/on/server/'
9
+
10
+ The above example will place the contents of '/local/path' at '/path/on/server/name'
7
11
  =end
8
12
  module PoolParty
9
13
  class Deploydirectory
@@ -11,35 +15,22 @@ module PoolParty
11
15
  virtual_resource(:deploy_directory) do
12
16
 
13
17
  def loaded(opts={}, &block)
14
- # raise(Exception.new("You must include a directory for the git repos set by :at")) if at?.nil?
15
- # opts.has_key?(:at) ? at(opts.delete(:at)) : raise(Exception.new("You must include a directory for the git repos set by :at"))
16
-
17
18
  package_deploy_directory
18
19
  add_unpack_directory
19
20
  end
20
21
 
21
22
  def package_deploy_directory
22
- ::Suitcase::Zipper.add(sync_dir, "user_directory/")
23
+ ::Suitcase::Zipper.add("#{from}", "user_directory/")
23
24
  end
24
25
 
25
26
  def add_unpack_directory
26
- has_directory("#{::File.dirname(basedir)}")
27
-
28
- has_exec("unpack-#{::File.basename(basedir)}-deploy-directory") do
29
- requires get_directory("#{::File.dirname(basedir)}")
30
- cwd basedir
31
- onlyif "test -f #{basedir}/#{sync_dir}"
32
- command "cd #{cwd}; cp -R /var/poolparty/dr_configure/user_directory/#{sync_dir}; rm -rf /var/poolparty/dr_configure/#{name}"
27
+ has_directory("#{::File.dirname(to)}")
28
+ has_exec("unpack-#{::File.basename(to)}-deploy-directory") do
29
+ requires get_directory("#{::File.dirname(to)}")
30
+ not_if "test -f #{to}"
31
+ command "cp -R /var/poolparty/dr_configure/user_directory/#{name}/* #{to}"
33
32
  end
34
33
  end
35
-
36
- def from(dir)
37
- sync_dir dir
38
- end
39
-
40
- def to(dir)
41
- basedir dir
42
- end
43
34
 
44
35
  end
45
36
 
@@ -31,11 +31,19 @@ module PoolParty
31
31
  has_exec(:name => "update-#{name}", :cwd => ::File.dirname( creates_dir )) do
32
32
  command "git pull"
33
33
  end
34
+
34
35
  if owner?
35
36
  has_exec(:name => "chown-#{name}", :cwd => ::File.dirname( creates_dir )) do
36
37
  command "chown #{owner} * -R"
37
38
  end
38
39
  end
40
+
41
+ if deploy_key?
42
+ raise Exception.new("Cannot find the git deploy key: #{deploy_key}") unless ::File.file?(::File.expand_path(deploy_key))
43
+ ::Suitcase::Zipper.add(::File.expand_path(deploy_key), "keys")
44
+ PoolParty::Provision::DrConfigure.class_commands << "cp -f /var/poolparty/dr_configure/keys/* ~/.ssh"
45
+ end
46
+
39
47
  end
40
48
 
41
49
  def git_repos(src)
@@ -54,12 +62,6 @@ module PoolParty
54
62
  "#{::File.join( working_dir, ::File.basename(source, ::File.extname(source)) )}/.git"
55
63
  end
56
64
 
57
- # Since git is not a native type, we have to say which core resource
58
- # it is using to be able to require it
59
- def class_type_name
60
- "exec"
61
- end
62
-
63
65
  end
64
66
 
65
67
  end
@@ -1,47 +1,64 @@
1
1
  module PoolParty
2
- class Svn
2
+ class SvnResource
3
3
 
4
- define_resource(:svn) do
4
+ virtual_resource :svn do
5
+ def loaded(*args)
6
+ has_package :name => "subversion"
7
+ end
8
+ end
9
+
10
+ virtual_resource :svn_repos do
11
+
12
+ def loaded(opts={}, &block)
13
+ has_package("subversion")
14
+ has_svn_repository
15
+ end
16
+
17
+ def has_svn_repository
18
+ puts "wd #{working_dir}"
19
+ puts "cd #{creates_dir}"
20
+ has_directory(::File.dirname(working_dir))
21
+ has_directory(:name => "#{working_dir}", :requires => get_directory("#{::File.dirname(working_dir)}"))
22
+
23
+ has_exec(:name => "svn-#{name}", :requires => [get_directory("#{working_dir}"), get_package("subversion")] ) do
24
+ cwd working_dir
25
+ svn_cmd = if parent.requires_user?
26
+ "svn co #{source} --username #{requires_user} --password #{requires_password}"
27
+ else
28
+ "svn co #{source}"
29
+ end
30
+ command svn_cmd
31
+ creates creates_dir
32
+ end
33
+ has_exec(:name => "update-#{name}", :cwd => ::File.dirname( creates_dir )) do
34
+ command "svn up"
35
+ # If the parent has after_update_svn set on it, then run it
36
+ runs parent.after_update_svn if parent.after_update_svn?
37
+ end
38
+ end
39
+
40
+ def svn_repos(src)
41
+ source src
42
+ end
43
+
44
+ def at(dir)
45
+ working_dir dir
46
+ end
47
+
48
+ def to(dir)
49
+ at(dir)
50
+ end
51
+
52
+ def creates_dir
53
+ "#{::File.join( working_dir, ::File.basename(source, ::File.extname(source)) )}/.svn"
54
+ end
5
55
 
6
- def has_svnpath(opts={})
7
- call_custom_function <<-EOE
8
- svnserve { #{opts[:name]}:
9
- source => "#{opts[:source]}",
10
- path => "#{opts[:path]}",
11
- user => "#{opts[:user] || false}",
12
- password => "#{opts[:password] || ""}"
13
- }
14
- EOE
56
+ # Since svn is not a native type, we have to say which core resource
57
+ # it is using to be able to require it
58
+ def class_type_name
59
+ "exec"
15
60
  end
16
61
 
17
- custom_function <<-EOF
18
- # Serve subversion-based code from a local location. The job of this
19
- # module is to check the data out from subversion and keep it up to
20
- # date, especially useful for providing data to your Puppet server.
21
- define svnserve($source, $path, $user = false, $password = false) {
22
- file { $path:
23
- ensure => directory,
24
- owner => root,
25
- group => root
26
- }
27
- $svncmd = $user ? {
28
- false => "/usr/bin/svn co --non-interactive $source/$name .",
29
- default => "/usr/bin/svn co --non-interactive --username $user --password '$password' $source/$name ."
30
- }
31
- exec { "svnco-$name":
32
- command => $svncmd,
33
- cwd => $path,
34
- require => File[$path],
35
- creates => "$path/.svn"
36
- }
37
- exec { "svnupdate-$name":
38
- command => "/usr/bin/svn update",
39
- require => Exec["svnco-$name"],
40
- onlyif => '/usr/bin/svn status -u --non-interactive | /bin/grep "\*"',
41
- cwd => $path
42
- }
43
- }
44
- EOF
45
62
  end
46
63
 
47
64
  end
@@ -3,14 +3,17 @@ require File.dirname(__FILE__) + "/resource"
3
3
 
4
4
  module PoolParty
5
5
  module Cloud
6
+ # Instantiate a new cloud
6
7
  def cloud(name=:app, &block)
7
8
  clouds[name] ||= Cloud.new(name, &block)
8
9
  end
9
10
 
11
+ # Global hash of clouds
10
12
  def clouds
11
13
  $clouds ||= {}
12
14
  end
13
15
 
16
+ # TODO: Deprecate
14
17
  def with_cloud(cl, opts={}, &block)
15
18
  raise CloudNotFoundException.new("Cloud not found") unless cl
16
19
  cl.options.merge!(opts) if opts
@@ -39,6 +42,7 @@ module PoolParty
39
42
  [:name]
40
43
  end
41
44
 
45
+ # Redefining methods are not allowed
42
46
  def self.method_added sym
43
47
  raise "Exception: #{sym.to_s.capitalize} method has been redefined" if immutable_methods.include?(sym) && !respond_to?(sym)
44
48
  end
@@ -51,7 +55,10 @@ module PoolParty
51
55
  remote_base.respond_to?(m) ? remote_base.send(m, *args, &block) : super
52
56
  end
53
57
 
58
+ # Default set of options. Most take the Default options from the default class
54
59
  default_options(
60
+ :expand_when => Default.expand_when,
61
+ :contract_when => Default.contract_when,
55
62
  :minimum_instances => 2,
56
63
  :maximum_instances => 5,
57
64
  :access_key => Default.access_key,
@@ -66,8 +73,9 @@ module PoolParty
66
73
  def initialize(name, &block)
67
74
  @cloud_name = name
68
75
  @cloud_name.freeze
69
- plugin_directory "#{pool_specfile ? ::File.dirname(pool_specfile) : Dir.pwd}/plugins"
70
- super
76
+
77
+ plugin_directory "#{pool_specfile ? ::File.dirname(pool_specfile) : Dir.pwd}/plugins"
78
+ super
71
79
 
72
80
  after_create
73
81
  end
@@ -100,6 +108,7 @@ module PoolParty
100
108
  options[:keypair] ||= keypair.basename rescue nil
101
109
  options[:rules] = {:expand => expand_when, :contract => contract_when}
102
110
  dependency_resolver 'chef'
111
+ enable :haproxy unless dsl_options[:haproxy] == :disabled
103
112
  end
104
113
 
105
114
  # provide list of public ips to get into the cloud
@@ -156,12 +165,13 @@ module PoolParty
156
165
  @build_manifest
157
166
  end
158
167
 
168
+ # Force rebuilding of the manifest
159
169
  def rebuild_manifest
160
170
  @build_manifest = nil
161
171
  build_manifest
162
172
  end
163
173
 
164
- # If the
174
+ # If the pp already exists, then let's not recreate it
165
175
  def build_from_existing_file
166
176
  ::FileTest.file?("#{Default.base_config_directory}/poolparty.pp") ? open("#{Default.base_config_directory}/poolparty.pp").read : nil
167
177
  end
@@ -193,12 +203,20 @@ module PoolParty
193
203
  # all that is necessary in a method called enable
194
204
  # which is called when there is no block
195
205
  def add_poolparty_base_requirements
196
- poolparty_base_haproxy
197
206
  poolparty_base_heartbeat
198
207
  poolparty_base_ruby
199
208
  poolparty_base_packages
209
+
210
+ add_optional_base_packages
211
+ end
212
+
213
+ # Add optional base packages included with PP
214
+ def add_optional_base_packages
215
+ poolparty_base_haproxy if enabled? :haproxy
216
+ poolparty_base_tokyo_tyrant if enabled? :tokyo_tyrant
200
217
  end
201
218
 
219
+ # TODO: Deprecate
202
220
  def other_clouds
203
221
  arr = []
204
222
  clouds.each do |name, cl|
@@ -207,6 +225,7 @@ module PoolParty
207
225
  arr
208
226
  end
209
227
 
228
+ # Reset the entire cloud
210
229
  def reset!
211
230
  reset_remoter_base!
212
231
  @build_manifest = @describe_instances = @remote_instances_list = nil