auser-poolparty 0.2.79 → 0.2.80
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +38 -33
- data/PostInstall.txt +1 -1
- data/bin/cloud-provision +1 -1
- data/bin/cloud-spec +40 -0
- data/lib/poolparty.rb +2 -2
- data/lib/poolparty/base_packages/poolparty.rb +1 -1
- data/lib/poolparty/extra/deployments.rb +31 -0
- data/lib/poolparty/helpers/binary.rb +9 -0
- data/lib/poolparty/modules/cloud_dsl.rb +1 -1
- data/lib/poolparty/modules/cloud_resourcer.rb +2 -0
- data/lib/poolparty/modules/file_writer.rb +2 -2
- data/lib/poolparty/net/messenger.rb +1 -1
- data/lib/poolparty/net/remote_bases/ec2.rb +5 -2
- data/lib/poolparty/net/remoter.rb +2 -4
- data/lib/poolparty/net/remoter_base.rb +7 -0
- data/lib/poolparty/poolparty/cloud.rb +22 -7
- data/lib/poolparty/poolparty/plugin_model.rb +4 -4
- data/lib/poolparty/poolparty/pool.rb +1 -0
- data/lib/poolparty/poolparty/resource.rb +1 -1
- data/lib/poolparty/poolparty/resources/directory.rb +2 -2
- data/lib/poolparty/poolparty/resources/file.rb +2 -2
- data/lib/poolparty/poolparty/resources/remote_file.rb +1 -1
- data/lib/poolparty/poolparty/resources/remote_user.rb +17 -0
- data/lib/poolparty/{helpers → provisioners}/provisioner_base.rb +10 -4
- data/lib/poolparty/{helpers → provisioners}/provisioners/master.rb +11 -7
- data/lib/poolparty/{helpers → provisioners}/provisioners/slave.rb +0 -0
- data/lib/poolparty/templates/puppetrerun +2 -1
- data/lib/poolparty/version.rb +1 -1
- data/poolparty.gemspec +42 -36
- data/spec/poolparty/extra/deployments_spec.rb +64 -0
- data/spec/poolparty/helpers/provisioner_base_spec.rb +0 -1
- data/spec/poolparty/helpers/provisioners/master_spec.rb +0 -1
- data/spec/poolparty/helpers/provisioners/slave_spec.rb +0 -1
- data/spec/poolparty/{pool → poolparty}/base_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/cloud_spec.rb +37 -0
- data/spec/poolparty/{pool → poolparty}/configurers/files/ruby_basic.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/configurers/files/ruby_plugins.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/configurers/ruby_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/custom_resource_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/example_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/plugin_model_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/plugin_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/pool_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resource_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resources/class_package_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resources/conditional_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resources/cron_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resources/directory_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resources/exec_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resources/file_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resources/gem_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resources/host_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resources/package_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resources/remote_file_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resources/service_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resources/sshkey_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/resources/symlink_spec.rb +0 -0
- data/spec/poolparty/poolparty/resources/user_spec.rb +38 -0
- data/spec/poolparty/{pool → poolparty}/resources/variable_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/script_spec.rb +0 -0
- data/spec/poolparty/{pool → poolparty}/test_plugins/sshkey_test +0 -0
- data/spec/poolparty/{pool → poolparty}/test_plugins/virtual_host_template.erb +0 -0
- data/spec/poolparty/{pool → poolparty}/test_plugins/webserver.rb +0 -0
- data/website/index.html +107 -0
- metadata +42 -36
- 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/
|
353
|
-
spec/poolparty/
|
354
|
-
spec/poolparty/
|
355
|
-
spec/poolparty/
|
356
|
-
spec/poolparty/
|
357
|
-
spec/poolparty/
|
358
|
-
spec/poolparty/
|
359
|
-
spec/poolparty/
|
360
|
-
spec/poolparty/
|
361
|
-
spec/poolparty/
|
362
|
-
spec/poolparty/
|
363
|
-
spec/poolparty/
|
364
|
-
spec/poolparty/
|
365
|
-
spec/poolparty/
|
366
|
-
spec/poolparty/
|
367
|
-
spec/poolparty/
|
368
|
-
spec/poolparty/
|
369
|
-
spec/poolparty/
|
370
|
-
spec/poolparty/
|
371
|
-
spec/poolparty/
|
372
|
-
spec/poolparty/
|
373
|
-
spec/poolparty/
|
374
|
-
spec/poolparty/
|
375
|
-
spec/poolparty/
|
376
|
-
spec/poolparty/
|
377
|
-
spec/poolparty/
|
378
|
-
spec/poolparty/
|
379
|
-
spec/poolparty/
|
380
|
-
spec/poolparty/
|
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
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 => "*/
|
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
|
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} -
|
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.
|
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,
|
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,
|
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
|
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
|