auser-poolparty 1.2.4 → 1.2.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. data/VERSION.yml +1 -1
  2. data/bin/cloud +8 -1
  3. data/bin/cloud-contract +1 -1
  4. data/bin/cloud-provision +0 -1
  5. data/bin/server-cloud-elections +9 -9
  6. data/bin/server-list-active +10 -17
  7. data/bin/server-manage-election +4 -5
  8. data/examples/basic.rb +5 -4
  9. data/examples/fairchild.rb +1 -1
  10. data/lib/poolparty.rb +1 -1
  11. data/lib/poolparty/core/hash.rb +10 -2
  12. data/lib/poolparty/helpers/optioner.rb +5 -5
  13. data/lib/poolparty/lite.rb +5 -2
  14. data/lib/poolparty/modules/cloud_resourcer.rb +12 -5
  15. data/lib/poolparty/modules/pretty_printer.rb +1 -1
  16. data/lib/poolparty/monitors/monitor_rack.rb +2 -2
  17. data/lib/poolparty/monitors/monitors/{time_monitor.rb → clock_monitor.rb} +2 -2
  18. data/lib/poolparty/monitors/monitors/neighborhood_monitor.rb +8 -5
  19. data/lib/poolparty/monitors/monitors/stats_monitor.rb +45 -29
  20. data/lib/poolparty/net/remoter/connections.rb +0 -1
  21. data/lib/poolparty/net/remoter/interactive.rb +6 -6
  22. data/lib/poolparty/net/remoter_base.rb +10 -2
  23. data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +14 -6
  24. data/lib/poolparty/net/remoter_bases/metavirt/metavirt.rb +1 -1
  25. data/lib/poolparty/plugins/apache2/apache.rb +16 -8
  26. data/lib/poolparty/poolparty/cloud.rb +22 -5
  27. data/lib/poolparty/poolparty/default.rb +21 -15
  28. data/lib/poolparty/poolparty/key.rb +1 -1
  29. data/lib/poolparty/poolparty/neighborhoods.rb +15 -4
  30. data/lib/poolparty/poolparty/pool.rb +1 -1
  31. data/lib/poolparty/poolparty/resource.rb +1 -0
  32. data/lib/poolparty/provision/boot_strapper.rb +10 -4
  33. data/lib/poolparty/provision/dr_configure.rb +9 -9
  34. data/lib/poolparty/schema.rb +5 -6
  35. data/lib/poolparty/templates/monitor.ru +1 -0
  36. data/spec/poolparty/core/ordered_hash_spec.rb +7 -7
  37. data/spec/poolparty/net/remote_instance_spec.rb +1 -1
  38. data/spec/poolparty/poolparty/cloud_spec.rb +18 -0
  39. data/spec/poolparty/poolparty/example_spec.rb +29 -9
  40. data/spec/poolparty/poolparty/key_spec.rb +1 -1
  41. data/spec/poolparty/poolparty/neighborhoods_spec.rb +1 -1
  42. data/tasks/poolparty.rake +2 -0
  43. data/vendor/gems/dslify/VERSION.yml +4 -0
  44. data/vendor/gems/dslify/dslify.gemspec +29 -0
  45. data/vendor/gems/dslify/lib/dslify.rb +1 -1
  46. data/vendor/gems/dslify/test/dslify_test.rb +82 -13
  47. data/vendor/gems/git-style-binaries/VERSION.yml +1 -1
  48. data/vendor/gems/git-style-binaries/doc/poolparty-binaries.screenplay +389 -20
  49. data/vendor/gems/git-style-binaries/git-style-binaries.gemspec +2 -2
  50. data/vendor/gems/git-style-binaries/lib/git-style-binary/helpers/name_resolver.rb +2 -2
  51. data/vendor/gems/git-style-binaries/lib/git-style-binary/parser.rb +2 -2
  52. metadata +5 -3
@@ -1,4 +1,3 @@
1
- require "#{::File.dirname(__FILE__)}/../../modules/pinger"
2
1
  require 'rubygems'
3
2
  require 'net/ssh'
4
3
 
@@ -2,18 +2,18 @@ module PoolParty
2
2
  module Remote
3
3
 
4
4
  # Select a list of instances based on their status
5
- def nodes(hsh={})
6
- list_of_instances.select_with_hash(hsh)
5
+ def nodes(hsh={}, with_neighborhood_default=true)
6
+ list_of_instances(with_neighborhood_default).select_with_hash(hsh)
7
7
  end
8
8
 
9
9
  # Select the list of instances, either based on the neighborhoods
10
10
  # loaded from /etc/poolparty/neighborhood.json
11
11
  # or by the remote_base on keypair
12
- def list_of_instances
12
+ def list_of_instances(with_neighborhood_default=true)
13
13
  return @list_of_instances if @list_of_instances
14
14
  @containing_cloud = self
15
- n = Neighborhoods.load_default
16
- @list_of_instances = (n.instances.empty? ? _list_of_instances : n.instances)
15
+ n = with_neighborhood_default ? Neighborhoods.load_default : nil
16
+ @list_of_instances = ((n.nil? || n.instances.empty?) ? _list_of_instances : n.instances)
17
17
  end
18
18
 
19
19
  private
@@ -24,7 +24,7 @@ module PoolParty
24
24
 
25
25
  # List the instances for the current key pair, regardless of their states
26
26
  # If no keypair is passed, select them all
27
- def _list_of_instances(select={})
27
+ def _list_of_instances(select={})
28
28
  @describe_instances ||= remote_base.describe_instances(dsl_options).select_with_hash(select)
29
29
  end
30
30
 
@@ -16,7 +16,6 @@
16
16
  register_remote_base :remote_base_name
17
17
 
18
18
  =end
19
- require "#{::File.dirname(__FILE__)}/../modules/pinger.rb" #FIXME should not need this here
20
19
  module PoolParty
21
20
 
22
21
  module Remote
@@ -29,7 +28,8 @@ module PoolParty
29
28
 
30
29
  dsl_methods :cloud, # The cloud this remoter_base is a part of
31
30
  :keypair,
32
- :image_id
31
+ :image_id,
32
+ :keypair_name
33
33
 
34
34
  def initialize(opts={}, &block)
35
35
  opts.each {|k,v| opts[k] = v.call if v.respond_to?(:call) }
@@ -187,6 +187,14 @@ module PoolParty
187
187
  def before_shutdown
188
188
  end
189
189
 
190
+ def to_s
191
+ self.class.name
192
+ end
193
+
194
+ def to_hash
195
+ dsl_options
196
+ end
197
+
190
198
  end
191
199
 
192
200
  end
@@ -47,8 +47,13 @@ module PoolParty
47
47
  :availability_zone => "us-east-1a",
48
48
  :access_key => ENV['AWS_ACCESS_KEY'],
49
49
  :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'],
50
- :security_group => ["default"]
50
+ :security_group => ["default"],
51
+ :keypair_name =>nil
51
52
  })
53
+
54
+ def ami
55
+ image_id
56
+ end
52
57
 
53
58
  # Requires a hash of options
54
59
  def self.launch_new_instance!(o)
@@ -58,8 +63,9 @@ module PoolParty
58
63
  # TODO: Fix the key_name issue
59
64
  # Start a new instance with the given options
60
65
  def launch_new_instance!(o={})
66
+ set_vars_from_options o
61
67
  raise "You must pass a keypair to launch an instance, or else you will not be able to login. options = #{o.inspect}" if !keypair
62
- o.merge!( dsl_options ).merge!(:key_name=>keypair.basename)
68
+ o.merge!( dsl_options.merge(:key_name=>keypair_name) )
63
69
  instance = ec2(o).run_instances(o)
64
70
  begin
65
71
  h = EC2ResponseObject.get_hash_from_response(instance.instancesSet.item.first)
@@ -83,7 +89,7 @@ module PoolParty
83
89
  def describe_instances(o={})
84
90
  id = 0
85
91
  set_vars_from_options(dsl_options.merge(o))
86
- get_instances_description(dsl_options).each_with_index do |h,i|
92
+ get_instances_description(dsl_options).each_with_index do |h,i|
87
93
  if h[:status] == "running"
88
94
  inst_name = id == 0 ? "master" : "node#{id}"
89
95
  id += 1
@@ -106,8 +112,8 @@ module PoolParty
106
112
 
107
113
  # return or create a new base EC2 connection object that will actually connect to ec2
108
114
  def ec2(o={})
109
- @ec2 ||= EC2::Base.new( :access_key_id => get_access_key,
110
- :secret_access_key => get_secret_access_key
115
+ @ec2 ||= EC2::Base.new( :access_key_id => o[:access_key] || get_access_key,
116
+ :secret_access_key => o[:secret_access_key] || get_secret_access_key
111
117
  )
112
118
  end
113
119
  def self.ec2(o)
@@ -119,8 +125,10 @@ module PoolParty
119
125
  # Get the ec2 description for the response in a hash format
120
126
  def get_instances_description(o={})
121
127
  #TODO: only use keypair.full_filepath
128
+ set_vars_from_options dsl_options.merge(o)
122
129
  key_hash = {:keypair => self.keypair_name}
123
- EC2ResponseObject.get_descriptions(ec2(dsl_options).describe_instances).select_with_hash(key_hash)
130
+ out = EC2ResponseObject.get_descriptions(ec2(dsl_options).describe_instances)
131
+ out = keypair_name ? out.select_with_hash(key_hash) : out
124
132
  end
125
133
  def get_descriptions(o={})
126
134
  self.class.get_descriptions(o)
@@ -8,7 +8,7 @@ module PoolParty
8
8
  module Remote
9
9
  class Metavirt < Remote::RemoterBase
10
10
  include Dslify
11
- include CloudResourcer
11
+ include ::PoolParty::CloudResourcer
12
12
 
13
13
  default_options(
14
14
  # :machine_image => 'ubuntu-kvm',
@@ -26,6 +26,10 @@ default host.
26
26
  def before_load(o={}, &block)
27
27
  install
28
28
  end
29
+
30
+ def www_user(www_user_name='www-data')
31
+ www_user_name
32
+ end
29
33
 
30
34
  def install
31
35
  installed_as_worker
@@ -224,20 +228,21 @@ default host.
224
228
  def virtual_host_entry(file)
225
229
  @virtual_host_entry = true
226
230
  if ::File.file?(file)
227
- has_file(options.merge({:name => "/etc/apache2/sites-available/#{name}",
231
+ has_file(dsl_options.merge({:name => "/etc/apache2/sites-available/#{name}",
228
232
  :template => file,
229
233
  :requires => get_package("apache2")}))
230
234
  else
231
- has_file(options.merge({:content => file,
235
+ has_file(dsl_options.merge({:content => file,
232
236
  :name => "/etc/apache2/sites-available/#{name}",
233
237
  :requires => get_package("apache2")}))
234
238
  end
235
239
  end
240
+
236
241
 
237
242
  def loaded(opts={}, parent=self)
238
- has_directory(:name => "/var/www")
239
- has_directory(:name => "/var/www/#{name}")
240
- has_directory(:name => "/var/www/#{name}/logs", :owner => "www-data")
243
+ has_directory(:name => "/var/www", :owner => www_user, :mode=>'0744')
244
+ has_directory(:name => "/var/www/#{name}", :owner => www_user, :mode=>'0744')
245
+ has_directory(:name => "/var/www/#{name}/logs", :owner => www_user, :mode=>'0744')
241
246
 
242
247
  has_variable(:name => "sitename", :value => "#{name}")
243
248
 
@@ -264,8 +269,11 @@ eof
264
269
  virtual_resource(:passengersite) do # {{{
265
270
 
266
271
  default_options(
267
- :dir => "/var/www",
268
- :appended_path => nil
272
+ :dir => "/var/www",
273
+ :appended_path => nil,
274
+ :owner => 'www-data',
275
+ :mode =>'0744',
276
+ :enviornment => 'production'
269
277
  )
270
278
 
271
279
  def loaded(opts={}, prnt=nil)
@@ -278,7 +286,7 @@ eof
278
286
  <VirtualHost *:#{port}>
279
287
  ServerName #{name}
280
288
  DocumentRoot #{site_directory}/public
281
- RailsEnv production
289
+ RailsEnv #{enviornment}
282
290
  ErrorLog #{site_directory}/log/error_log
283
291
  CustomLog #{site_directory}/log/access_log common
284
292
  </VirtualHost>
@@ -16,7 +16,7 @@ module PoolParty
16
16
  # TODO: Deprecate
17
17
  def with_cloud(cl, opts={}, &block)
18
18
  raise CloudNotFoundException.new("Cloud not found") unless cl
19
- cl.options.merge!(opts) if opts
19
+ cl.dsl_options.merge!(opts) if opts
20
20
  cl.run_in_context &block if block
21
21
  end
22
22
 
@@ -130,9 +130,9 @@ module PoolParty
130
130
 
131
131
  # setup defaults for the cloud
132
132
  def setup_defaults
133
- set_vars_from_options(:keypair_name => key.basename,
134
- :keypair_path => key.full_filepath)
135
- dsl_options[:rules] = {:expand => dsl_options[:expand_when],
133
+ set_vars_from_options(:keypair_name => key.basename, :keypair_path => key.full_filepath) rescue nil
134
+
135
+ dsl_options[:rules] = {:expand => "#{dsl_options[:expand_when]}",
136
136
  :contract => dsl_options[:contract_when]}
137
137
 
138
138
  set_dependency_resolver 'chef'
@@ -257,7 +257,24 @@ module PoolParty
257
257
  end
258
258
 
259
259
  def to_json
260
- to_properties_hash.to_json
260
+ to_properties_hash.reject{|k,v| k == :remote_base }.to_json
261
+ end
262
+
263
+ # TODO: test
264
+ # ruby -rrubygems -e 'require "poolparty";puts Cloud.load_from_json(open("/etc/poolparty/clouds.json").read).minimum_instances'
265
+ def self.load_from_json(str)
266
+ parsed = JSON.parse(str).each {|k,v| dsl_options[k.to_sym] = v}
267
+ opts= parsed.options
268
+ opts["keypair"] = opts["keypair_path"] = opts["keypair_name"]
269
+ # cld.remoter_base = PoolParty::Remote.module_eval( schema.options.remoter_base.camelcase )
270
+ # opts.remoter_base_class = PoolParty::Remote.module_eval( opts.remoter_base.camelcase )
271
+ # opts.remoter_base_class.new opts.remote_base
272
+ opts["dependency_resolver"] = options.dependency_resolver.send(:new, opts)
273
+ cld = Cloud.new opts.cloud_name.to_sym
274
+ cld.dsl_options.merge opts
275
+ cld.using opts.remoter_base.to_sym
276
+ cld.dsl_options.symbolize_keys!
277
+ cld
261
278
  end
262
279
 
263
280
  def tmp_path
@@ -17,6 +17,7 @@ module PoolParty
17
17
  :minimum_instances => 2,
18
18
  :maximum_instances => 5,
19
19
  :user => "root", # This should change here
20
+ :keypair_name => nil,
20
21
  :base_keypair_path => "#{ENV["HOME"]}/.ec2",
21
22
  :base_ssh_path => "#{ENV["HOME"]}/.ssh",
22
23
  :tmp_path => "/tmp/poolparty",
@@ -55,18 +56,18 @@ module PoolParty
55
56
  dsl_options.include?(m) ? dsl_options[m] : super
56
57
  end
57
58
  # # Get the access_key
58
- # def access_key
59
- # @access_key ||= load_access_keys_from_environment_var || load_keys_from_file[:access_key]
60
- # end
61
- # def load_access_keys_from_environment_var
62
- # [ ENV["AWS_ACCESS_KEY"], ENV["AWS_ACCESS_KEY_ID"]].reject {|a| a.nil? }.first
63
- # end
64
- # def secret_access_key
65
- # @secret_access_key ||= load_secret_access_keys_from_environment_var || load_keys_from_file[:secret_access_key]
66
- # end
67
- # def load_secret_access_keys_from_environment_var
68
- # [ ENV["AWS_SECRET_ACCESS_KEY"] ].reject {|a| a.nil? }.first
69
- # end
59
+ def access_key
60
+ @access_key ||= load_access_keys_from_environment_var || load_keys_from_file[:access_key]
61
+ end
62
+ def load_access_keys_from_environment_var
63
+ [ ENV["AWS_ACCESS_KEY"], ENV["AWS_ACCESS_KEY_ID"]].reject {|a| a.nil? }.first
64
+ end
65
+ def secret_access_key
66
+ @secret_access_key ||= load_secret_access_keys_from_environment_var || load_keys_from_file[:secret_access_key]
67
+ end
68
+ def load_secret_access_keys_from_environment_var
69
+ [ ENV["AWS_SECRET_ACCESS_KEY"] ].reject {|a| a.nil? }.first
70
+ end
70
71
  def read_keyfile
71
72
  open(get_working_key_file_locations).read
72
73
  end
@@ -75,11 +76,14 @@ module PoolParty
75
76
  end
76
77
  # Store the keys in a yaml format to give the master access
77
78
  # So that the master has access to the files
78
- def store_keys_in_file
79
+ def store_keys_in_file(f=nil)
79
80
  unless access_key.nil? || secret_access_key.nil?
80
- write_to_file( key_file_locations.first, YAML::dump({:access_key => access_key, :secret_access_key => secret_access_key}))
81
+ write_to_file( (f ? f : key_file_locations.first), keys_in_yaml)
81
82
  end
82
83
  end
84
+ def keys_in_yaml
85
+ YAML::dump({:access_key => access_key, :secret_access_key => secret_access_key})
86
+ end
83
87
  def store_keys_in_file_for(obj=nil)
84
88
  if obj
85
89
  @access_key = obj.access_key
@@ -101,7 +105,9 @@ module PoolParty
101
105
  [
102
106
  ".ppkeys",
103
107
  "#{Default.base_config_directory}/.ppkeys",
104
- "#{Default.storage_directory}/ppkeys",
108
+ "#{Default.storage_directory}/ppkeys",
109
+ "#{ENV["HOME"]}/.ssh/ppkeys",
110
+ "#{ENV["HOME"]}/.ssh/.ppkeys",
105
111
  "~/.ppkeys",
106
112
  "ppkeys"
107
113
  ]
@@ -61,7 +61,7 @@ module PoolParty
61
61
  end
62
62
 
63
63
  # Turn the keypair into the a useful json string
64
- def to_json
64
+ def to_hash
65
65
  "{\"basename\":\"#{basename}\",\"full_filepath\": \"/etc/poolparty/#{filename}\"}"
66
66
  end
67
67
 
@@ -20,7 +20,7 @@ module PoolParty
20
20
  when Array
21
21
  {:instances => data.map {|entry| disect(entry) }}
22
22
  when String
23
- {:instances => JSON.parse(data)}#.map "#{inst["instance_id"]}\t#{inst["ip"]}"}}
23
+ JSON.parse(data)#.map "#{inst["instance_id"]}\t#{inst["ip"]}"}}
24
24
  when Hash
25
25
  data
26
26
  end
@@ -30,7 +30,7 @@ module PoolParty
30
30
 
31
31
  # Get the known instances from the neighborhood.json file on the server
32
32
  def instances
33
- @instances ||= @schema.to_hash[:instances] rescue @schema.instances.collect {|line| disect(line) }
33
+ @instances ||= @schema.to_hash[:instances] #rescue @schema.instances.collect {|line| disect(line) }
34
34
  end
35
35
 
36
36
  # Returns empty if the neighborhood has no instances
@@ -92,9 +92,20 @@ module PoolParty
92
92
  new( open("/etc/poolparty/neighborhood.json").read )
93
93
  elsif ping_port("127.0.0.1", Default.butterfly_port, 1)# butterfly responding?
94
94
  require "open-uri"
95
- new( open("http://127.0.0.1:8642/neighborhood").read )
95
+ begin
96
+ timeout(2) do
97
+ new( open("http://127.0.0.1:8642/neighborhood").read )
98
+ end
99
+ rescue TimeoutError => e
100
+ require "#{::File.dirname(__FILE__)}/../../poolparty"
101
+ cld = ::PoolParty::Cloud::Cloud.load_from_json(open("/etc/poolparty/clouds.json").read)
102
+ nodes = cld.nodes({:status => "running"}, false)
103
+ data = nodes.map {|hsh| hsh.reject {|k,v| v.nil? }}.map {|a| a.merge(:launching_time => a[:launching_time].to_s) }
104
+ # ::File.open("/etc/poolparty/neighborhood.json", "w") {|f| f << "{\"instances\":#{data.to_json}}" }
105
+ new(data)
106
+ end
96
107
  else
97
- new("[]")
108
+ new("{\"instances\":[]}")
98
109
  end
99
110
  end
100
111
 
@@ -11,7 +11,7 @@ module PoolParty
11
11
 
12
12
  def with_pool(pl, opts={}, &block)
13
13
  raise CloudNotFoundException.new("Pool not found") unless pl
14
- pl.options.merge!(opts) if pl.options
14
+ pl.dsl_options.merge!(opts) if pl.dsl_options
15
15
  pl.run_in_context &block if block
16
16
  end
17
17
 
@@ -15,6 +15,7 @@ module PoolParty
15
15
  end
16
16
 
17
17
  class Resource < PoolParty::PoolPartyBaseClass
18
+ include JSON
18
19
  attr_accessor :prestring, :poststring
19
20
 
20
21
  # include CloudResourcer
@@ -28,6 +28,7 @@ module PoolParty
28
28
  grempe-amazon-ec2
29
29
  ohai
30
30
  chef
31
+ ruby-openid
31
32
  adamwiggins-rest-client
32
33
  rack
33
34
  thin
@@ -83,6 +84,8 @@ module PoolParty
83
84
  def pack_the_dependencies
84
85
  # Add the keypair to the instance... shudder
85
86
  ::Suitcase::Zipper.add(keypair, "keys")
87
+ ::Suitcase::Zipper.add_content_as(Default.keys_in_yaml, "ppkeys", "keys")
88
+
86
89
  edge_pp_gem = Dir["#{Default.vendor_path}/../pkg/*poolparty*gem"].pop
87
90
  # Use the locally built poolparty gem if it is availabl
88
91
  if edge_pp_gem
@@ -108,9 +111,10 @@ module PoolParty
108
111
  ::Suitcase::Zipper.add("#{::File.join(File.dirname(__FILE__), '..', 'templates', 'gemrc_template' )}", "etc/poolparty")
109
112
 
110
113
  instances = @cloud.nodes(:status => "running") + [@cloud.started_instance]
111
- ::Suitcase::Zipper.add_content_as(
112
- {:instances => instances.flatten.compact}.to_json,
113
- "neighborhood.json", "/etc/poolparty")
114
+ # ::Suitcase::Zipper.add_content_as(
115
+ # instances.flatten.compact.to_json,
116
+ # "neighborhood.json", "/etc/poolparty"
117
+ # )
114
118
 
115
119
  ::Suitcase::Zipper.build_dir!("#{cloud.tmp_path}/dependencies")
116
120
 
@@ -140,6 +144,7 @@ module PoolParty
140
144
  "ln -sfv /usr/bin/gem1.8 /usr/bin/gem", #TODO: check if this is really needed
141
145
  "cd ../ && rm -rf rubygems-1.3.1*",
142
146
  "gem source --add http://gems.github.com",
147
+ "gem sources -a http://gems.opscode.com",
143
148
  "cd /var/poolparty/dependencies/gems/",
144
149
  "gem install --no-rdoc --no-ri *.gem",
145
150
  "cd /var/poolparty/dependencies",
@@ -150,8 +155,9 @@ module PoolParty
150
155
  "chmod 600 /root/.ssh/#{keypair_name}",
151
156
  # "god -c /etc/poolparty/monitor.god",
152
157
  "mkdir -p /var/log/poolparty/",
158
+ "echo '-- Starting monitor_rack --'",
153
159
  "thin -R /etc/poolparty/monitor.ru -p 8642 --pid /var/run/stats_monitor.pid --daemon -l /var/log/poolparty/monitor.log start 2>/dev/null",
154
- "tail /var/log/poolparty/monitor.log",
160
+ "tail -n 20 /var/log/poolparty/monitor.log",
155
161
  'echo "bootstrap" >> /var/poolparty/POOLPARTY.PROGRESS']
156
162
  commands << self.class.class_commands unless self.class.class_commands.empty?
157
163
  end
@@ -22,13 +22,13 @@ module PoolParty
22
22
  # In case the method is being called on ourself, let's check the
23
23
  # defaults hash to see if it's available there
24
24
  def method_missing(m,*a,&block)
25
- if self.class.defaults.has_key?(m)
26
- self.class.defaults[m]
27
- elsif @cloud
25
+ # if self.class.defaults.has_key?(m)
26
+ # self.class.defaults[m]
27
+ # elsif @cloud
28
28
  @cloud.send m, *a, &block
29
- else
30
- super
31
- end
29
+ # else
30
+ # super
31
+ # end
32
32
  end
33
33
 
34
34
  attr_reader :cloud, :keypair, :run_count, :cloud_name
@@ -36,7 +36,7 @@ module PoolParty
36
36
  def initialize(host, opts={}, &block)
37
37
  self.class.defaults.merge(opts).to_instance_variables(self)
38
38
  @target_host = host
39
- @configurator = "::PoolParty::Provision::#{dependency_resolver.capitalize}".constantize
39
+ @configurator = "::PoolParty::Provision::#{dependency_resolver.camelcase}".constantize
40
40
  @cloud = opts[:cloud]
41
41
  @cloud_name = @cloud.name
42
42
  @keypair = @cloud.keypair
@@ -54,7 +54,7 @@ module PoolParty
54
54
  ::FileUtils.mkdir_p "#{cloud.tmp_path}/dr_configure" unless ::File.directory?("#{cloud.tmp_path}/dr_configure")
55
55
  ::File.cp $pool_specfile, "#{cloud.tmp_path}/dr_configure/clouds.rb"
56
56
  ::File.open "#{cloud.tmp_path}/dr_configure/clouds.json", "w" do |f|
57
- f << cloud.to_properties_hash.to_json
57
+ f << cloud.to_json
58
58
  end
59
59
 
60
60
  setup_configurator
@@ -99,7 +99,7 @@ module PoolParty
99
99
  'chmod 644 /var/poolparty/dr_configure/clouds.rb',
100
100
  'cp /var/poolparty/dr_configure/clouds.json /etc/poolparty',
101
101
  'cp /var/poolparty/dr_configure/clouds.rb /etc/poolparty',
102
- "touch /var/poolparty/POOLPARTY.PROGRESS",
102
+ 'server-manage-election', #ensures that the monitor gets some data
103
103
  'echo "configure" >> /var/poolparty/POOLPARTY.PROGRESS'
104
104
  ]
105
105
  commands << self.class.class_commands unless self.class.class_commands.empty?