auser-poolparty 0.2.79 → 0.2.80

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 (66) hide show
  1. data/Manifest.txt +38 -33
  2. data/PostInstall.txt +1 -1
  3. data/bin/cloud-provision +1 -1
  4. data/bin/cloud-spec +40 -0
  5. data/lib/poolparty.rb +2 -2
  6. data/lib/poolparty/base_packages/poolparty.rb +1 -1
  7. data/lib/poolparty/extra/deployments.rb +31 -0
  8. data/lib/poolparty/helpers/binary.rb +9 -0
  9. data/lib/poolparty/modules/cloud_dsl.rb +1 -1
  10. data/lib/poolparty/modules/cloud_resourcer.rb +2 -0
  11. data/lib/poolparty/modules/file_writer.rb +2 -2
  12. data/lib/poolparty/net/messenger.rb +1 -1
  13. data/lib/poolparty/net/remote_bases/ec2.rb +5 -2
  14. data/lib/poolparty/net/remoter.rb +2 -4
  15. data/lib/poolparty/net/remoter_base.rb +7 -0
  16. data/lib/poolparty/poolparty/cloud.rb +22 -7
  17. data/lib/poolparty/poolparty/plugin_model.rb +4 -4
  18. data/lib/poolparty/poolparty/pool.rb +1 -0
  19. data/lib/poolparty/poolparty/resource.rb +1 -1
  20. data/lib/poolparty/poolparty/resources/directory.rb +2 -2
  21. data/lib/poolparty/poolparty/resources/file.rb +2 -2
  22. data/lib/poolparty/poolparty/resources/remote_file.rb +1 -1
  23. data/lib/poolparty/poolparty/resources/remote_user.rb +17 -0
  24. data/lib/poolparty/{helpers → provisioners}/provisioner_base.rb +10 -4
  25. data/lib/poolparty/{helpers → provisioners}/provisioners/master.rb +11 -7
  26. data/lib/poolparty/{helpers → provisioners}/provisioners/slave.rb +0 -0
  27. data/lib/poolparty/templates/puppetrerun +2 -1
  28. data/lib/poolparty/version.rb +1 -1
  29. data/poolparty.gemspec +42 -36
  30. data/spec/poolparty/extra/deployments_spec.rb +64 -0
  31. data/spec/poolparty/helpers/provisioner_base_spec.rb +0 -1
  32. data/spec/poolparty/helpers/provisioners/master_spec.rb +0 -1
  33. data/spec/poolparty/helpers/provisioners/slave_spec.rb +0 -1
  34. data/spec/poolparty/{pool → poolparty}/base_spec.rb +0 -0
  35. data/spec/poolparty/{pool → poolparty}/cloud_spec.rb +37 -0
  36. data/spec/poolparty/{pool → poolparty}/configurers/files/ruby_basic.rb +0 -0
  37. data/spec/poolparty/{pool → poolparty}/configurers/files/ruby_plugins.rb +0 -0
  38. data/spec/poolparty/{pool → poolparty}/configurers/ruby_spec.rb +0 -0
  39. data/spec/poolparty/{pool → poolparty}/custom_resource_spec.rb +0 -0
  40. data/spec/poolparty/{pool → poolparty}/example_spec.rb +0 -0
  41. data/spec/poolparty/{pool → poolparty}/plugin_model_spec.rb +0 -0
  42. data/spec/poolparty/{pool → poolparty}/plugin_spec.rb +0 -0
  43. data/spec/poolparty/{pool → poolparty}/pool_spec.rb +0 -0
  44. data/spec/poolparty/{pool → poolparty}/resource_spec.rb +0 -0
  45. data/spec/poolparty/{pool → poolparty}/resources/class_package_spec.rb +0 -0
  46. data/spec/poolparty/{pool → poolparty}/resources/conditional_spec.rb +0 -0
  47. data/spec/poolparty/{pool → poolparty}/resources/cron_spec.rb +0 -0
  48. data/spec/poolparty/{pool → poolparty}/resources/directory_spec.rb +0 -0
  49. data/spec/poolparty/{pool → poolparty}/resources/exec_spec.rb +0 -0
  50. data/spec/poolparty/{pool → poolparty}/resources/file_spec.rb +0 -0
  51. data/spec/poolparty/{pool → poolparty}/resources/gem_spec.rb +0 -0
  52. data/spec/poolparty/{pool → poolparty}/resources/host_spec.rb +0 -0
  53. data/spec/poolparty/{pool → poolparty}/resources/package_spec.rb +0 -0
  54. data/spec/poolparty/{pool → poolparty}/resources/remote_file_spec.rb +0 -0
  55. data/spec/poolparty/{pool → poolparty}/resources/service_spec.rb +0 -0
  56. data/spec/poolparty/{pool → poolparty}/resources/sshkey_spec.rb +0 -0
  57. data/spec/poolparty/{pool → poolparty}/resources/symlink_spec.rb +0 -0
  58. data/spec/poolparty/poolparty/resources/user_spec.rb +38 -0
  59. data/spec/poolparty/{pool → poolparty}/resources/variable_spec.rb +0 -0
  60. data/spec/poolparty/{pool → poolparty}/script_spec.rb +0 -0
  61. data/spec/poolparty/{pool → poolparty}/test_plugins/sshkey_test +0 -0
  62. data/spec/poolparty/{pool → poolparty}/test_plugins/virtual_host_template.erb +0 -0
  63. data/spec/poolparty/{pool → poolparty}/test_plugins/webserver.rb +0 -0
  64. data/website/index.html +107 -0
  65. metadata +42 -36
  66. data/lib/erlang/messenger/src/pm_client_old.erl +0 -52
data/Manifest.txt CHANGED
@@ -18,6 +18,7 @@ bin/cloud-provision
18
18
  bin/cloud-refresh
19
19
  bin/cloud-rsync
20
20
  bin/cloud-run
21
+ bin/cloud-spec
21
22
  bin/cloud-ssh
22
23
  bin/cloud-start
23
24
  bin/cloud-stats
@@ -152,7 +153,6 @@ lib/erlang/messenger/src/client_server.erl
152
153
  lib/erlang/messenger/src/master_app.erl
153
154
  lib/erlang/messenger/src/node_app.erl
154
155
  lib/erlang/messenger/src/pm_client.erl
155
- lib/erlang/messenger/src/pm_client_old.erl
156
156
  lib/erlang/messenger/src/pm_client_supervisor.erl
157
157
  lib/erlang/messenger/src/pm_cluster.erl
158
158
  lib/erlang/messenger/src/pm_event_manager.erl
@@ -199,14 +199,12 @@ lib/poolparty/exceptions/RuntimeException.rb
199
199
  lib/poolparty/exceptions/SpecException.rb
200
200
  lib/poolparty/exceptions/TemplateNotFound.rb
201
201
  lib/poolparty/exceptions/UnacceptableCommand.rb
202
+ lib/poolparty/extra/deployments.rb
202
203
  lib/poolparty/helpers/binary.rb
203
204
  lib/poolparty/helpers/console.rb
204
205
  lib/poolparty/helpers/display.rb
205
206
  lib/poolparty/helpers/nice_printer.rb
206
207
  lib/poolparty/helpers/optioner.rb
207
- lib/poolparty/helpers/provisioner_base.rb
208
- lib/poolparty/helpers/provisioners/master.rb
209
- lib/poolparty/helpers/provisioners/slave.rb
210
208
  lib/poolparty/helpers/ruberl.rb
211
209
  lib/poolparty/modules/cloud_dsl.rb
212
210
  lib/poolparty/modules/cloud_resourcer.rb
@@ -257,11 +255,15 @@ lib/poolparty/poolparty/resources/host.rb
257
255
  lib/poolparty/poolparty/resources/mount.rb
258
256
  lib/poolparty/poolparty/resources/package.rb
259
257
  lib/poolparty/poolparty/resources/remote_file.rb
258
+ lib/poolparty/poolparty/resources/remote_user.rb
260
259
  lib/poolparty/poolparty/resources/service.rb
261
260
  lib/poolparty/poolparty/resources/sshkey.rb
262
261
  lib/poolparty/poolparty/resources/symlink.rb
263
262
  lib/poolparty/poolparty/resources/variable.rb
264
263
  lib/poolparty/poolparty/script.rb
264
+ lib/poolparty/provisioners/provisioner_base.rb
265
+ lib/poolparty/provisioners/provisioners/master.rb
266
+ lib/poolparty/provisioners/provisioners/slave.rb
265
267
  lib/poolparty/spec/core/string.rb
266
268
  lib/poolparty/spec/matchers/a_spec_extensions_base.rb
267
269
  lib/poolparty/spec/matchers/have_cron.rb
@@ -325,6 +327,7 @@ spec/poolparty/core/object_spec.rb
325
327
  spec/poolparty/core/string_spec.rb
326
328
  spec/poolparty/core/time_spec.rb
327
329
  spec/poolparty/dependency_resolutions/base_spec.rb
330
+ spec/poolparty/extra/deployments_spec.rb
328
331
  spec/poolparty/helpers/binary_spec.rb
329
332
  spec/poolparty/helpers/display_spec.rb
330
333
  spec/poolparty/helpers/optioner_spec.rb
@@ -349,35 +352,36 @@ spec/poolparty/plugins/deploydirectory_spec.rb
349
352
  spec/poolparty/plugins/git_spec.rb
350
353
  spec/poolparty/plugins/line_spec.rb
351
354
  spec/poolparty/plugins/svn_spec.rb
352
- spec/poolparty/pool/base_spec.rb
353
- spec/poolparty/pool/cloud_spec.rb
354
- spec/poolparty/pool/configurers/files/ruby_basic.rb
355
- spec/poolparty/pool/configurers/files/ruby_plugins.rb
356
- spec/poolparty/pool/configurers/ruby_spec.rb
357
- spec/poolparty/pool/custom_resource_spec.rb
358
- spec/poolparty/pool/example_spec.rb
359
- spec/poolparty/pool/plugin_model_spec.rb
360
- spec/poolparty/pool/plugin_spec.rb
361
- spec/poolparty/pool/pool_spec.rb
362
- spec/poolparty/pool/resource_spec.rb
363
- spec/poolparty/pool/resources/class_package_spec.rb
364
- spec/poolparty/pool/resources/conditional_spec.rb
365
- spec/poolparty/pool/resources/cron_spec.rb
366
- spec/poolparty/pool/resources/directory_spec.rb
367
- spec/poolparty/pool/resources/exec_spec.rb
368
- spec/poolparty/pool/resources/file_spec.rb
369
- spec/poolparty/pool/resources/gem_spec.rb
370
- spec/poolparty/pool/resources/host_spec.rb
371
- spec/poolparty/pool/resources/package_spec.rb
372
- spec/poolparty/pool/resources/remote_file_spec.rb
373
- spec/poolparty/pool/resources/service_spec.rb
374
- spec/poolparty/pool/resources/sshkey_spec.rb
375
- spec/poolparty/pool/resources/symlink_spec.rb
376
- spec/poolparty/pool/resources/variable_spec.rb
377
- spec/poolparty/pool/script_spec.rb
378
- spec/poolparty/pool/test_plugins/sshkey_test
379
- spec/poolparty/pool/test_plugins/virtual_host_template.erb
380
- spec/poolparty/pool/test_plugins/webserver.rb
355
+ spec/poolparty/poolparty/base_spec.rb
356
+ spec/poolparty/poolparty/cloud_spec.rb
357
+ spec/poolparty/poolparty/configurers/files/ruby_basic.rb
358
+ spec/poolparty/poolparty/configurers/files/ruby_plugins.rb
359
+ spec/poolparty/poolparty/configurers/ruby_spec.rb
360
+ spec/poolparty/poolparty/custom_resource_spec.rb
361
+ spec/poolparty/poolparty/example_spec.rb
362
+ spec/poolparty/poolparty/plugin_model_spec.rb
363
+ spec/poolparty/poolparty/plugin_spec.rb
364
+ spec/poolparty/poolparty/pool_spec.rb
365
+ spec/poolparty/poolparty/resource_spec.rb
366
+ spec/poolparty/poolparty/resources/class_package_spec.rb
367
+ spec/poolparty/poolparty/resources/conditional_spec.rb
368
+ spec/poolparty/poolparty/resources/cron_spec.rb
369
+ spec/poolparty/poolparty/resources/directory_spec.rb
370
+ spec/poolparty/poolparty/resources/exec_spec.rb
371
+ spec/poolparty/poolparty/resources/file_spec.rb
372
+ spec/poolparty/poolparty/resources/gem_spec.rb
373
+ spec/poolparty/poolparty/resources/host_spec.rb
374
+ spec/poolparty/poolparty/resources/package_spec.rb
375
+ spec/poolparty/poolparty/resources/remote_file_spec.rb
376
+ spec/poolparty/poolparty/resources/service_spec.rb
377
+ spec/poolparty/poolparty/resources/sshkey_spec.rb
378
+ spec/poolparty/poolparty/resources/symlink_spec.rb
379
+ spec/poolparty/poolparty/resources/user_spec.rb
380
+ spec/poolparty/poolparty/resources/variable_spec.rb
381
+ spec/poolparty/poolparty/script_spec.rb
382
+ spec/poolparty/poolparty/test_plugins/sshkey_test
383
+ spec/poolparty/poolparty/test_plugins/virtual_host_template.erb
384
+ spec/poolparty/poolparty/test_plugins/webserver.rb
381
385
  spec/poolparty/poolparty_spec.rb
382
386
  spec/poolparty/spec/core/string_spec.rb
383
387
  spec/poolparty/spec_helper.rb
@@ -394,6 +398,7 @@ test/test_generator_helper.rb
394
398
  test/test_helper.rb
395
399
  test/test_pool_spec_generator.rb
396
400
  test/test_poolparty.rb
401
+ website/index.html
397
402
  website/index.txt
398
403
  website/javascripts/rounded_corners_lite.inc.js
399
404
  website/stylesheets/code.css
data/PostInstall.txt CHANGED
@@ -1,4 +1,4 @@
1
- Get ready to jump in the pool, you just installed PoolParty! (Updated at 13:46 12/06/08)
1
+ Get ready to jump in the pool, you just installed PoolParty! (Updated at 15:39 12/09/08)
2
2
 
3
3
  To get started, run the generator:
4
4
 
data/bin/cloud-provision CHANGED
@@ -18,7 +18,7 @@ o.loaded_clouds.each do |cloud|
18
18
  if instance_num
19
19
  @instance = get_instance_by_number( instance_num )
20
20
  instance_num == 0 ? Provisioner.provision_master(self, testing) : Provisioner.provision_slave(@instance, self, testing)
21
- Provisioner.process_clean_reconfigure_for!(@instance, self, testing)
21
+ # Provisioner.process_clean_reconfigure_for!(@instance, self, testing)
22
22
  else
23
23
  if provision_slave
24
24
  vputs "Provisioning slaves"
data/bin/cloud-spec ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+ $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
+ require "poolparty"
4
+ require "poolpartycl"
5
+
6
+ available_tests = {
7
+ :launch => "Launches a cloud and ensures it is accessible at port 80"
8
+ }
9
+
10
+ available_tests_string = available_tests.map {|k,v| "#{k}: #{v}"}.join("\n")
11
+
12
+ o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
13
+ optioner.cloudnames
14
+ optioner.daemonizeable
15
+ opts.on('--type type',
16
+ "Run type of test. Available tests: #{available_tests_string} (default: launch)") { |c| optioner.testtype c }
17
+ end
18
+
19
+ o.loaded_clouds.each do |cloud|
20
+ with_cloud(cloud) do
21
+ puts "Are you sure you want to live test?"
22
+ body = ["Normal charges for running instances will apply"]
23
+ body << "as this will run instances"
24
+ body.each {|st| puts "\t#{st}"}
25
+ print "(y|n): "
26
+ input = gets.downcase.chomp
27
+ do_test = input.downcase == "y" ? true : false
28
+ if do_test
29
+ case testtype
30
+ when "launch"
31
+ when nil
32
+ print_with_nice_printer("Starting live specing cloud #{name}")
33
+ # hide_output {launch_and_configure_master!}
34
+ print_with_nice_printer("Waiting for cloud to provision")
35
+
36
+ end
37
+ end
38
+ end
39
+
40
+ end
data/lib/poolparty.rb CHANGED
@@ -2,7 +2,7 @@ require 'rubygems'
2
2
 
3
3
  # Load required gems
4
4
  @required_software = Array.new
5
- %w(activesupport ftools logging resolv ruby2ruby).each do |lib|
5
+ %w(activesupport ftools logging resolv ruby2ruby digest/sha2).each do |lib|
6
6
  begin
7
7
  require lib
8
8
  rescue Exception => e
@@ -38,7 +38,7 @@ ActiveSupport::Dependencies.load_paths << File.dirname(__FILE__)
38
38
  ## Load PoolParty
39
39
  require "#{File.dirname(__FILE__)}/poolparty/version"
40
40
 
41
- %w(core modules exceptions dependency_resolutions aska monitors net).each do |dir|
41
+ %w(core modules exceptions dependency_resolutions aska monitors provisioners extra net).each do |dir|
42
42
  Dir[File.dirname(__FILE__) + "/poolparty/#{dir}/**.rb"].each do |file|
43
43
  require file
44
44
  end
@@ -50,7 +50,7 @@ module PoolParty
50
50
  end
51
51
 
52
52
  # execute_on_node do
53
- has_cron(:name => "node puppetd runner", :user => Base.user, :minute => "*/11") do
53
+ has_cron(:name => "node puppetd runner", :user => Base.user, :minute => "*/15") do
54
54
  requires get_gempackage("poolparty")
55
55
  command "/usr/bin/puppetrunner"
56
56
  end
@@ -0,0 +1,31 @@
1
+ module PoolParty
2
+ module Extra
3
+ class Deployments
4
+
5
+ class << self
6
+
7
+ def include_deployment(filename)
8
+ return nil unless ::File.file? filename
9
+ name = ::File.basename(filename, ::File.extname(filename))
10
+ contents = open(filename).read
11
+
12
+ plugin_klass = PoolParty::PluginModel::PluginModel.new(name)
13
+ plugin_klass.klass.class_eval <<-EOE
14
+ def enable
15
+ #{contents}
16
+ end
17
+ EOE
18
+ plugin_klass
19
+ end
20
+
21
+ def include_deployments(dir)
22
+ return nil unless ::File.directory? dir
23
+ Dir["#{dir}/*"].each do |fi|
24
+ include_deployment fi
25
+ end
26
+ dir
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
@@ -13,6 +13,15 @@ module PoolParty
13
13
  end
14
14
  end
15
15
 
16
+ def print_with_nice_printer(header=nil, strs=[])
17
+ returning NicePrinter.new do |printer|
18
+ printer.header
19
+ printer.center(header) if header
20
+ strs.each {|st| printer << st if st}
21
+ printer.footer
22
+ end.print
23
+ end
24
+
16
25
  def pool_specfile
17
26
  $pool_specfile
18
27
  end
@@ -6,7 +6,7 @@ module PoolParty
6
6
  ebs_volume_mount_point loc
7
7
  ebs_volume_device "/dev/#{id.sanitize}"
8
8
 
9
- has_mount(:name => loc, :device => ebs_volume_device, :onlyif => "test -d #{loc}")
9
+ has_mount(:name => loc, :device => ebs_volume_device)
10
10
  has_directory(:name => loc)
11
11
  end
12
12
 
@@ -55,6 +55,8 @@ module PoolParty
55
55
  return nil
56
56
  end
57
57
 
58
+ # The keypair name can be one name or another including id_rsa or not
59
+ # So let's get the name that exists as a keypair
58
60
  def full_keypair_name
59
61
  keypair_paths.each do |path|
60
62
  possible_keypair_basenames.each do |base|
@@ -26,11 +26,11 @@ module PoolParty
26
26
  path = ::File.join( Base.storage_directory, dirname )
27
27
  make_base_path path
28
28
  end
29
- def write_to_file_in_storage_directory(file, str, preceded="", &block)
29
+ def write_to_file_in_storage_directory(file, str="", preceded="", &block)
30
30
  path = ::File.join( Base.storage_directory, preceded, ::File.basename(file) )
31
31
  write_to_file(path, str, &block)
32
32
  end
33
- def write_to_file(file, str, preceded="", &block)
33
+ def write_to_file(file, str="", preceded="", &block)
34
34
  path = ::File.join( Base.storage_directory, preceded, ::File.basename(file) )
35
35
  make_base_path( Base.storage_directory )
36
36
  ::File.open(path, "w+") do |f|
@@ -16,7 +16,7 @@ module PoolParty
16
16
  end
17
17
  # TODO: Fix cookie setting
18
18
  def self.erl_command(hostname, extra="", min_ports=7000, max_ports=7050)
19
- command_line_opts = "-pa #{append_dir}/ebin -kernel inet_dist_listen_min #{min_ports} inet_dist_listen_max #{max_ports} -sname #{hostname} -setcookie poolparty"
19
+ command_line_opts = "-pa #{append_dir}/ebin -kernel inet_dist_listen_min #{min_ports} inet_dist_listen_max #{max_ports} -sname #{hostname} -cookie"
20
20
 
21
21
  "erl #{command_line_opts} #{extra}"
22
22
  end
@@ -125,8 +125,7 @@ begin
125
125
  pub_key && private_key
126
126
  end
127
127
  # The keys are used only for puppet certificates
128
- # and are only used for EC2. These should be abstracted
129
- # eventually into the ec2 remoter_base
128
+ # and are only used for EC2.
130
129
  # Public key
131
130
  def pub_key
132
131
  @pub_key ||= ENV["EC2_CERT"] ? ENV["EC2_CERT"] : nil
@@ -135,6 +134,10 @@ begin
135
134
  def private_key
136
135
  @private_key ||= ENV["EC2_PRIVATE_KEY"] ? ENV["EC2_PRIVATE_KEY"] : nil
137
136
  end
137
+
138
+ def custom_minimum_runnable_options
139
+ [:ami, :availabilty_zone, :security_group]
140
+ end
138
141
 
139
142
  # Callback
140
143
  def custom_install_tasks_for(o)
@@ -2,8 +2,6 @@
2
2
  This module is included by the remote module and defines the remoting methods
3
3
  that the clouds can use to rsync or run remote commands
4
4
  =end
5
- require File.dirname(__FILE__) + "/../helpers/provisioner_base"
6
-
7
5
  module PoolParty
8
6
  module Remote
9
7
  module Remoter
@@ -189,9 +187,9 @@ module PoolParty
189
187
  last_instances = nonmaster_nonterminated_instances[(@num_instances - (num))..(@num_instances)]
190
188
  last_instances.each do |inst|
191
189
  vputs "Provision slave: #{inst}"
192
- hide_output {PoolParty::Provisioner.process_clean_reconfigure_for!(inst, self)}
190
+ # hide_output {PoolParty::Provisioner.process_clean_reconfigure_for!(inst, self)}
193
191
  PoolParty::Provisioner.provision_slave(inst, self, false) unless inst.master? rescue vputs "Error"
194
- hide_output {PoolParty::Provisioner.process_clean_reconfigure_for!(inst, self)}
192
+ # hide_output {PoolParty::Provisioner.process_clean_reconfigure_for!(inst, self)}
195
193
  # cmd = ". /etc/profile && cloud-provision -i #{inst.name.gsub(/node/, '')} &"
196
194
  # vputs "Provision slave with command #{cmd}"
197
195
  end
@@ -140,6 +140,13 @@ module PoolParty
140
140
  # Callback after loaded
141
141
  def loaded_remoter_base
142
142
  end
143
+
144
+ # Custom minimum runnable options
145
+ # Extend the minimum runnable options that are necessary
146
+ # for poolparty to run on the remote base
147
+ def custom_minimum_runnable_options
148
+ []
149
+ end
143
150
 
144
151
  # Custom installation tasks
145
152
  # Allow the remoter bases to attach their own tasks on the
@@ -54,9 +54,9 @@ module PoolParty
54
54
  # set_parent(parent) if parent && !@parent
55
55
  # self.run_in_context parent, &block if block
56
56
  setup_defaults
57
- realize_plugins!
58
- reset! # reset the clouds
59
- reset_remoter_base!
57
+ # realize_plugins!
58
+ # reset! # reset the clouds
59
+ # reset_remoter_base!
60
60
  end
61
61
 
62
62
  def setup_defaults
@@ -79,7 +79,7 @@ module PoolParty
79
79
  def generate_keypair(*args)
80
80
  options[:keypair] = "#{parent && parent.is_a?(PoolParty::Pool::Pool) ? parent.name : "poolparty"}_#{name}" unless has_keypair?
81
81
  end
82
-
82
+
83
83
  # Prepare to send the new configuration to the instances
84
84
  # First, let's make sure that our base directory is made
85
85
  # Then copy the templates that have no other reference in
@@ -97,6 +97,7 @@ module PoolParty
97
97
  Script.save!(self)
98
98
  # not my favorite...
99
99
  copy_ssh_key
100
+ write_unique_cookie
100
101
  before_configuration_tasks
101
102
  end
102
103
 
@@ -112,6 +113,20 @@ module PoolParty
112
113
  Base.store_keys_in_file_for(self)
113
114
  end
114
115
 
116
+ # Let's write the cookie into the tmp path
117
+ def write_unique_cookie
118
+ write_to_file_in_storage_directory("cookie") do
119
+ generate_unique_cookie_string
120
+ end
121
+ end
122
+
123
+ # Generate a unique cookie string so that our erlang modules can
124
+ # talk to each other safely. This is based off the keypair
125
+ # and the name of the cloud
126
+ def generate_unique_cookie_string
127
+ Digest::SHA256.hexdigest("#{full_keypair_name}#{name}")
128
+ end
129
+
115
130
  # Build the new poolparty manifest
116
131
  # Wrapping all of these requirements into the one
117
132
  # poolparty class.
@@ -201,10 +216,10 @@ module PoolParty
201
216
  # they need a few options to run, these are the required options
202
217
  # to be saved on the remote "master" machine
203
218
  def minimum_runnable_options
204
- [
205
- :keypair, :minimum_instances, :maximum_instances, :ami, :security_group,
219
+ ([
220
+ :keypair, :minimum_instances, :maximum_instances,
206
221
  :expand_when, :contract_when, :set_master_ip_to
207
- ]
222
+ ]<< custom_minimum_runnable_options).flatten
208
223
  end
209
224
 
210
225
  # Add all the poolparty requirements here
@@ -4,7 +4,7 @@ module PoolParty
4
4
  module PluginModel
5
5
 
6
6
  def plugin(name=:plugin, cloud=nil, &block)
7
- plugins.has_key?(name) ? plugins[name] : (plugins[name] = PluginModel.new(name, cloud, &block))
7
+ plugins.has_key?(name) ? plugins[name] : (plugins[name] = PluginModel.new(name, &block))
8
8
  end
9
9
  alias_method :register_plugin, :plugin
10
10
 
@@ -18,15 +18,15 @@ module PoolParty
18
18
  include Configurable
19
19
  include PrettyPrinter
20
20
 
21
- def initialize(name,cld,&block)
21
+ def initialize(name,&block)
22
22
  @name = name
23
23
  # @parent = cld
24
24
  class_string_name = "#{name}"
25
25
 
26
26
  # Create the class to evaluate the plugin on the implemented call
27
- klass = class_string_name.class_constant(PoolParty::Plugin::Plugin)
27
+ @klass = klass = class_string_name.class_constant(PoolParty::Plugin::Plugin)
28
28
  mod = class_string_name.module_constant(&block)
29
-
29
+
30
30
  klass.send :include, mod
31
31
 
32
32
  # Store the name of the class for pretty printing later