auser-poolparty 0.2.26 → 0.2.35
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest.txt +13 -2
- data/PostInstall.txt +2 -1
- data/Rakefile +8 -2
- data/bin/cloud-contract +1 -6
- data/bin/cloud-ensure-provisioning +33 -0
- data/bin/cloud-expand +1 -6
- data/bin/cloud-provision +22 -14
- data/bin/cloud-start +1 -0
- data/bin/messenger-get-load +26 -0
- data/bin/server-build-messenger +9 -2
- data/bin/server-fire-cmd +1 -1
- data/bin/server-get-load +4 -4
- data/bin/server-list-active +2 -2
- data/bin/server-rerun +4 -4
- data/bin/server-start-master +4 -4
- data/bin/server-start-node +4 -4
- data/lib/erlang/messenger/Rakefile +6 -0
- data/lib/erlang/messenger/ebin/master.app +1 -1
- data/lib/erlang/messenger/ebin/master_app.beam +0 -0
- data/lib/erlang/messenger/ebin/node.app +1 -1
- data/lib/erlang/messenger/ebin/node_app.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_client.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_cluster.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_event_manager.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master_event_handler.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master_supervisor.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_node_supervisor.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_packager.beam +0 -0
- data/lib/erlang/messenger/include/defines.hrl +16 -0
- data/lib/erlang/messenger/pm_master.beam +0 -0
- data/lib/erlang/messenger/pm_node.beam +0 -0
- data/lib/erlang/messenger/src/pm_client.erl +35 -7
- data/lib/erlang/messenger/src/pm_cluster.erl +15 -12
- data/lib/erlang/messenger/src/pm_event_manager.erl +27 -0
- data/lib/erlang/messenger/src/pm_master.erl +44 -32
- data/lib/erlang/messenger/src/pm_master_event_handler.erl +72 -0
- data/lib/erlang/messenger/src/pm_master_supervisor.erl +9 -10
- data/lib/erlang/messenger/src/pm_node.erl +47 -27
- data/lib/erlang/messenger/src/pm_node_supervisor.erl +7 -9
- data/lib/erlang/messenger/src/utils.erl +20 -1
- data/lib/erlang/messenger/useful_snippets +6 -0
- data/lib/erlang/messenger/utils.beam +0 -0
- data/lib/poolparty/base_packages/haproxy.rb +6 -6
- data/lib/poolparty/base_packages/poolparty.rb +22 -43
- data/lib/poolparty/core/object.rb +3 -0
- data/lib/poolparty/helpers/console.rb +4 -0
- data/lib/poolparty/helpers/messenger.rb +14 -5
- data/lib/poolparty/helpers/optioner.rb +1 -1
- data/lib/poolparty/helpers/provisioner_base.rb +54 -15
- data/lib/poolparty/helpers/provisioners/master.rb +36 -8
- data/lib/poolparty/helpers/provisioners/slave.rb +5 -6
- data/lib/poolparty/net/remote_bases/ec2.rb +16 -18
- data/lib/poolparty/net/remote_instance.rb +4 -1
- data/lib/poolparty/net/remoter.rb +29 -10
- data/lib/poolparty/net/remoter_base.rb +2 -1
- data/lib/poolparty/plugins/git.rb +5 -6
- data/lib/poolparty/pool/base.rb +3 -2
- data/lib/poolparty/pool/cloud.rb +22 -14
- data/lib/poolparty/pool/plugin.rb +9 -0
- data/lib/poolparty/pool/pool.rb +2 -2
- data/lib/poolparty/pool/resources/class_package.rb +1 -1
- data/lib/poolparty/pool/resources/gem_package.rb +6 -4
- data/lib/poolparty/templates/puppetcleaner +6 -0
- data/lib/poolparty/version.rb +1 -1
- data/poolparty.gemspec +20 -6
- data/spec/poolparty/helpers/messenger_spec.rb +1 -1
- data/spec/poolparty/helpers/provisioner_base_spec.rb +3 -0
- data/spec/poolparty/net/remote_spec.rb +1 -0
- data/spec/poolparty/net/remoter_spec.rb +4 -1
- data/spec/poolparty/pool/cloud_spec.rb +2 -2
- data/spec/poolparty/pool/plugin_spec.rb +8 -1
- data/spec/poolparty/pool/resources/class_package_spec.rb +4 -4
- data/spec/poolparty/pool/resources/remote_file_spec.rb +1 -1
- data/website/index.html +1 -1
- metadata +20 -6
- data/lib/erlang/messenger/ebin/pm_event_handler.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_master.beam +0 -0
- data/lib/erlang/messenger/ebin/pm_node.beam +0 -0
- data/lib/erlang/messenger/ebin/utils.beam +0 -0
- data/lib/erlang/messenger/src/pm_event_handler.erl +0 -21
@@ -19,13 +19,13 @@ module PoolParty
|
|
19
19
|
<<-EOE
|
20
20
|
if [ -z "$(grep -v '#' /etc/hosts | grep 'master')" ]; then echo "#{master_ip} puppet master" >> /etc/hosts; else echo "host already set"; fi
|
21
21
|
cp #{Base.remote_storage_path}/namespaceauth.conf /etc/puppet/namespaceauth.conf
|
22
|
-
echo 'DAEMON_OPTS="-w 120
|
22
|
+
echo 'DAEMON_OPTS="-w 120 --fqdn #{@instance.name} --server master"' > /etc/default/puppet
|
23
23
|
EOE
|
24
24
|
end
|
25
25
|
|
26
26
|
def setup_configs
|
27
27
|
<<-EOS
|
28
|
-
echo "#{open(File.join(template_directory, "puppet.conf")).read}" > /etc/puppet/puppet.conf
|
28
|
+
echo "#{open(File.join(template_directory, "puppet.conf")).read}" > /etc/puppet/puppet.conf
|
29
29
|
EOS
|
30
30
|
end
|
31
31
|
|
@@ -33,10 +33,9 @@ module PoolParty
|
|
33
33
|
# puppetd --listen --fqdn #{@instance.name}
|
34
34
|
def start_puppet
|
35
35
|
<<-EOS
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
rm -rf /etc/puppet/ssl*
|
36
|
+
/etc/init.d/puppetmaster start
|
37
|
+
/usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master 2>&1
|
38
|
+
# rm -rf /etc/puppet/ssl/*
|
40
39
|
EOS
|
41
40
|
end
|
42
41
|
|
@@ -33,27 +33,24 @@ module PoolParty
|
|
33
33
|
describe_instances.select {|a| a[:name] == id}[0] rescue nil
|
34
34
|
end
|
35
35
|
def describe_instances
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
@name = "#{h[:status]}_node#{i}"
|
44
|
-
end
|
45
|
-
h.merge!({
|
46
|
-
:name => @name,
|
47
|
-
:hostname => h[:ip],
|
48
|
-
:ip => h[:ip].convert_from_ec2_to_ip
|
49
|
-
})
|
36
|
+
@id = 0
|
37
|
+
get_instances_description.each_with_index do |h,i|
|
38
|
+
if h[:status] == "running"
|
39
|
+
@name = @id == 0 ? "master" : "node#{@id}"
|
40
|
+
@id += 1
|
41
|
+
else
|
42
|
+
@name = "#{h[:status]}_node#{i}"
|
50
43
|
end
|
51
|
-
|
52
|
-
|
44
|
+
h.merge!({
|
45
|
+
:name => @name,
|
46
|
+
:hostname => h[:ip],
|
47
|
+
:ip => h[:ip].convert_from_ec2_to_ip
|
48
|
+
})
|
49
|
+
end
|
53
50
|
end
|
54
51
|
# Get the s3 description for the response in a hash format
|
55
52
|
def get_instances_description
|
56
|
-
|
53
|
+
EC2ResponseObject.get_descriptions(ec2.describe_instances).sort_by {|a| a[:launching_time]}
|
57
54
|
end
|
58
55
|
|
59
56
|
# Help create a keypair for the cloud
|
@@ -80,7 +77,8 @@ module PoolParty
|
|
80
77
|
# "if [ -z $(grep -v '#' /etc/hosts | grep '#{o.name}') ]; then echo \"$(curl http://169.254.169.254/latest/meta-data/public-ipv4) #{o.name}\" >> /etc/hosts; fi",
|
81
78
|
"if [ -z \"$(grep -v '#' /etc/hosts | grep '#{o.name}')\" ]; then echo '127.0.0.1 #{o.name}' >> /etc/hosts; fi",
|
82
79
|
"hostname #{o.name}",
|
83
|
-
"echo #{o.name} > /etc/hostname"
|
80
|
+
"echo #{o.name} > /etc/hostname",
|
81
|
+
"cd /var/poolparty && wget http://rubyforge.org/frs/download.php/43666/amazon-ec2-0.3.1.gem -O amazon-ec2.gem 2>&1 && gem install -y --no-ri --no-rdoc amazon-ec2.gem 2>&1"
|
84
82
|
]
|
85
83
|
end
|
86
84
|
|
@@ -64,8 +64,11 @@ module PoolParty
|
|
64
64
|
"#{name}\t#{ip}"
|
65
65
|
end
|
66
66
|
|
67
|
-
# Commands for the servers
|
68
67
|
def puppet_runner_command
|
68
|
+
self.class.send :puppet_runner_command
|
69
|
+
end
|
70
|
+
# Commands for the servers
|
71
|
+
def self.puppet_runner_command
|
69
72
|
". /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master 2>&1"
|
70
73
|
end
|
71
74
|
end
|
@@ -13,7 +13,8 @@ module PoolParty
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
def run_command_on_command(cmd="ls -l", remote_instance=nil)
|
16
|
-
"#{
|
16
|
+
vputs "Running #{cmd} on #{remote_instance.name == %x[hostname].chomp ? "self (master)" : "#{remote_instance.name}"}"
|
17
|
+
remote_instance.name == %x[hostname].chomp ? %x[#{cmd}] : "#{ssh_command(remote_instance)} '#{cmd}'"
|
17
18
|
end
|
18
19
|
def ssh_command(remote_instance)
|
19
20
|
"#{ssh_string} #{remote_instance.ip}"
|
@@ -30,7 +31,7 @@ module PoolParty
|
|
30
31
|
["-o StrictHostKeyChecking=no", "-l '#{Base.user}'", '-i "'+full_keypair_path+'"']
|
31
32
|
end
|
32
33
|
def rsync_command
|
33
|
-
"rsync
|
34
|
+
"rsync -azP --exclude cache -e '#{ssh_string}'"
|
34
35
|
end
|
35
36
|
# Open the cached local copy of the instances list and
|
36
37
|
# create a new RemoteInstance from each line
|
@@ -129,6 +130,7 @@ module PoolParty
|
|
129
130
|
if list_of_pending_instances.size == 0
|
130
131
|
block.call if block
|
131
132
|
else
|
133
|
+
vputs "Waiting for there to be no pending instances..."
|
132
134
|
wait "5.seconds"
|
133
135
|
when_no_pending_instances(&block)
|
134
136
|
end
|
@@ -149,13 +151,16 @@ module PoolParty
|
|
149
151
|
# and if the master is not running AND we can start a new instance
|
150
152
|
# Then wait for the master to launch
|
151
153
|
def launch_and_configure_master!(testing=false)
|
154
|
+
vputs "Requesting to launch new instance"
|
152
155
|
request_launch_new_instances(1) if list_of_pending_instances.size.zero? && can_start_a_new_instance? && !is_master_running?
|
153
156
|
|
154
157
|
when_no_pending_instances do
|
155
158
|
wait "20.seconds"
|
159
|
+
vputs "Provisioning master..."
|
156
160
|
hide_output { Provisioner.provision_master(self, testing) }
|
157
|
-
|
158
|
-
|
161
|
+
PoolParty::Provisioner.reconfigure_master(self, !testing)
|
162
|
+
after_launched
|
163
|
+
end
|
159
164
|
end
|
160
165
|
def is_master_running?
|
161
166
|
!list_of_running_instances.select {|a| a.name == "master"}.first.nil?
|
@@ -185,10 +190,11 @@ module PoolParty
|
|
185
190
|
@num_instances = nonmaster_nonterminated_instances.size
|
186
191
|
last_instances = nonmaster_nonterminated_instances[(@num_instances - @num)..(@num_instances)]
|
187
192
|
last_instances.each do |inst|
|
188
|
-
|
193
|
+
vputs "Provisioning #{inst.name} slave"
|
194
|
+
PoolParty::Provisioner.provision_slave(inst, self)
|
189
195
|
end
|
190
196
|
PoolParty::Provisioner.reconfigure_master(self, force)
|
191
|
-
|
197
|
+
after_launched
|
192
198
|
end
|
193
199
|
end
|
194
200
|
end
|
@@ -196,11 +202,24 @@ module PoolParty
|
|
196
202
|
# If we can shutdown an instnace and the load allows us to contract
|
197
203
|
# the cloud, then we should request_termination_of_non_master_instance
|
198
204
|
def contract_cloud_if_necessary(force=false)
|
199
|
-
if can_shutdown_an_instance?
|
205
|
+
if can_shutdown_an_instance?
|
206
|
+
before_shutdown
|
200
207
|
request_termination_of_non_master_instance if should_contract_cloud?(force)
|
201
208
|
end
|
202
209
|
end
|
203
210
|
|
211
|
+
# Callbacks
|
212
|
+
|
213
|
+
# After launch callback
|
214
|
+
# This is called after a new instance is launched
|
215
|
+
def after_launched(force=false)
|
216
|
+
end
|
217
|
+
|
218
|
+
# Before shutdown callback
|
219
|
+
# This is called before the cloud is contracted
|
220
|
+
def before_shutdown
|
221
|
+
end
|
222
|
+
|
204
223
|
# Rsync command to the instance
|
205
224
|
def rsync_storage_files_to(instance=nil)
|
206
225
|
hide_output do
|
@@ -229,13 +248,13 @@ module PoolParty
|
|
229
248
|
end
|
230
249
|
|
231
250
|
# Prepare reconfiguration on the master
|
232
|
-
# TODO: Fix the killall
|
233
251
|
# TODO: Curious about the puppet/ssl problems...
|
234
252
|
# puppetd --test --no-daemonize 2>&1 &
|
253
|
+
# rm -rf /etc/puppet/ssl/*;
|
235
254
|
def prepare_reconfiguration
|
236
255
|
unless @prepared
|
237
|
-
cmd = "
|
238
|
-
run_command_on(cmd, master)
|
256
|
+
# cmd = "/etc/init.d/puppetmaster restart"
|
257
|
+
# run_command_on(cmd, master)
|
239
258
|
@prepared = true
|
240
259
|
end
|
241
260
|
end
|
@@ -77,7 +77,7 @@ module PoolParty
|
|
77
77
|
# If no keypair is passed, select them all
|
78
78
|
def list_of_instances(keyp=nil)
|
79
79
|
key = keyp ? keyp : keypair
|
80
|
-
describe_instances.select {|a| key ? a[:keypair] == key : true } if describe_instances
|
80
|
+
@describe_instances ||= describe_instances.select {|a| key ? a[:keypair] == key : true } if describe_instances
|
81
81
|
end
|
82
82
|
# Instances
|
83
83
|
# Get the master from the cloud
|
@@ -91,6 +91,7 @@ module PoolParty
|
|
91
91
|
end
|
92
92
|
# Reset the cache of descriptions
|
93
93
|
def reset!
|
94
|
+
@describe_instances = nil
|
94
95
|
end
|
95
96
|
def self.included(other)
|
96
97
|
PoolParty.register_remote_base(self.class.to_s.downcase.to_sym)
|
@@ -11,15 +11,14 @@ module PoolParty
|
|
11
11
|
has_package(:name => "git-core")
|
12
12
|
has_directory(:name => "#{cwd}")
|
13
13
|
|
14
|
-
exec({:name => "git-#{name}", :requires =>
|
14
|
+
exec({:name => "git-#{name}", :requires => get_package(:name => "git-core"), :requires => get_directory("#{cwd}")}) do
|
15
15
|
command parent.user ? "git clone #{parent.user}@#{parent.source} #{parent.path}" : "git clone #{parent.source} #{parent.to ? parent.to : ""}"
|
16
16
|
cwd "#{parent.cwd if parent.cwd}"
|
17
17
|
creates "#{::File.join( (parent.cwd ? parent.cwd : cwd), ::File.basename(parent.source, ::File.extname(parent.source)) )}/.git"
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
end
|
18
|
+
end
|
19
|
+
exec(:name => "update-#{name}", :requires => get_exec("git-#{name}")) do
|
20
|
+
cwd get_exec("git-#{parent.name}").cwd
|
21
|
+
command "git pull"
|
23
22
|
end
|
24
23
|
end
|
25
24
|
|
data/lib/poolparty/pool/base.rb
CHANGED
@@ -14,8 +14,9 @@ module PoolParty
|
|
14
14
|
:user => "root", # This should change here
|
15
15
|
:base_keypair_path => "~/.ec2",
|
16
16
|
:tmp_path => "/tmp/poolparty",
|
17
|
-
:remote_storage_path => "/var/poolparty",
|
18
|
-
:
|
17
|
+
:remote_storage_path => "/var/poolparty",
|
18
|
+
:remote_gem_path => "/var/poolparty/gems",
|
19
|
+
:fileserver_base => "puppet://master/files",
|
19
20
|
:base_config_directory => "/etc/poolparty",
|
20
21
|
:template_directory => "templates",
|
21
22
|
:template_path => "/var/lib/puppet/templates",
|
data/lib/poolparty/pool/cloud.rb
CHANGED
@@ -3,7 +3,7 @@ require File.dirname(__FILE__) + "/resource"
|
|
3
3
|
|
4
4
|
module PoolParty
|
5
5
|
module Cloud
|
6
|
-
def cloud(name=:
|
6
|
+
def cloud(name=:app, &block)
|
7
7
|
clouds.has_key?(name) ? clouds[name] : (clouds[name] = Cloud.new(name, self, &block))
|
8
8
|
end
|
9
9
|
|
@@ -92,13 +92,14 @@ module PoolParty
|
|
92
92
|
# TODO: Consider the benefits of moving all the manifest
|
93
93
|
# classes to separate files and keeping the containing
|
94
94
|
# references in the include
|
95
|
-
def build_and_store_new_config_file
|
96
|
-
|
95
|
+
def build_and_store_new_config_file(force=false)
|
96
|
+
vputs "Building new manifest configuration file (forced: #{force})"
|
97
|
+
manifest = force ? rebuild_manifest : build_manifest
|
97
98
|
config_file = ::File.join(Base.storage_directory, "poolparty.pp")
|
98
|
-
::File.open(config_file, "w
|
99
|
-
file << "class poolparty {"
|
100
|
-
file <<
|
101
|
-
file << "}"
|
99
|
+
::File.open(config_file, "w") do |file|
|
100
|
+
# file << "class poolparty {"
|
101
|
+
file << manifest
|
102
|
+
# file << "}"
|
102
103
|
end
|
103
104
|
end
|
104
105
|
|
@@ -110,16 +111,23 @@ module PoolParty
|
|
110
111
|
|
111
112
|
# Configuration files
|
112
113
|
def build_manifest
|
114
|
+
vputs "Building manifest"
|
113
115
|
@build_manifest ||= build_from_existing_file
|
114
116
|
unless @build_manifest
|
115
|
-
|
117
|
+
|
118
|
+
# reset_resources!
|
116
119
|
add_poolparty_base_requirements
|
117
120
|
|
118
|
-
@build_manifest = build_short_manifest
|
121
|
+
@build_manifest = "class poolparty {\n #{build_short_manifest}\n}"
|
119
122
|
end
|
120
123
|
@build_manifest
|
121
124
|
end
|
122
125
|
|
126
|
+
def rebuild_manifest
|
127
|
+
@build_manifest = nil
|
128
|
+
build_manifest
|
129
|
+
end
|
130
|
+
|
123
131
|
def build_short_manifest
|
124
132
|
returning Array.new do |str|
|
125
133
|
|
@@ -139,11 +147,7 @@ module PoolParty
|
|
139
147
|
end
|
140
148
|
|
141
149
|
def build_from_existing_file
|
142
|
-
|
143
|
-
open("/etc/puppet/manifests/classes/poolparty.pp").read
|
144
|
-
else
|
145
|
-
nil
|
146
|
-
end
|
150
|
+
::FileTest.file?("/etc/puppet/manifests/classes/poolparty.pp") ? open("/etc/puppet/manifests/classes/poolparty.pp").read : nil
|
147
151
|
end
|
148
152
|
|
149
153
|
# To allow the remote instances to do their job,
|
@@ -177,6 +181,10 @@ module PoolParty
|
|
177
181
|
def provisioning_complete
|
178
182
|
@provisioning_in_progress = false
|
179
183
|
end
|
184
|
+
|
185
|
+
def reset!
|
186
|
+
@build_manifest = @describe_instances = nil
|
187
|
+
end
|
180
188
|
|
181
189
|
# Add to the services pool for the manifest listing
|
182
190
|
def add_service(serv)
|
@@ -20,6 +20,15 @@ module PoolParty
|
|
20
20
|
# Overwrite this method
|
21
21
|
def enable
|
22
22
|
end
|
23
|
+
|
24
|
+
# Call the cloud from within the plugin
|
25
|
+
def cloud
|
26
|
+
@p = parent
|
27
|
+
while !@p.is_a?(PoolParty::Cloud)
|
28
|
+
@p = @p.parent
|
29
|
+
end
|
30
|
+
@p
|
31
|
+
end
|
23
32
|
|
24
33
|
# def method_missing(m, *args, &block)
|
25
34
|
# if block_given?
|
data/lib/poolparty/pool/pool.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module PoolParty
|
2
2
|
module Pool
|
3
3
|
|
4
|
-
def pool(name=:
|
4
|
+
def pool(name=:app, &block)
|
5
5
|
pools.has_key?(name) ? pools[name] : (pools[name] = Pool.new(name, &block))
|
6
6
|
end
|
7
7
|
|
@@ -15,7 +15,7 @@ module PoolParty
|
|
15
15
|
end
|
16
16
|
|
17
17
|
def reset!
|
18
|
-
$pools = $clouds = $plugins = nil
|
18
|
+
$pools = $clouds = $plugins = @describe_instances = nil
|
19
19
|
end
|
20
20
|
|
21
21
|
class Pool
|
@@ -5,7 +5,7 @@ module PoolParty
|
|
5
5
|
def classpackage_with_self(parent=self, &block)
|
6
6
|
@cp = PoolParty::Resources::Classpackage.new(parent.options, parent, &block)
|
7
7
|
@cp.instance_eval {@resources = parent.resources}
|
8
|
-
parent.instance_eval {@resources = nil}
|
8
|
+
# parent.instance_eval {@resources = nil}
|
9
9
|
@cp
|
10
10
|
end
|
11
11
|
|
@@ -10,13 +10,15 @@ module PoolParty
|
|
10
10
|
# TODO: Add it so that it tries to pull the gem off the master fileserver first...
|
11
11
|
def loaded(opts={}, parent=self)
|
12
12
|
if download_url
|
13
|
-
|
14
|
-
has_exec(:name => "download-#{name}", :cwd => Base.remote_storage_path, :command => "wget #{download_url} -O #{name}.gem", :ifnot => "test -f #{Base.remote_storage_path}/#{name}.gem")
|
15
|
-
end
|
13
|
+
|
16
14
|
has_file(:name => "#{Base.remote_storage_path}/#{name}.gem", :source => "#{Base.fileserver_base}/#{name}.gem")
|
17
15
|
|
16
|
+
execute_if("$hostname", "master") do
|
17
|
+
has_exec(:name => "download-#{name}", :cwd => Base.remote_storage_path, :command => "wget #{download_url} -O #{name}.gem", :ifnot => "test -f #{Base.remote_storage_path}/#{name}.gem", :notify => get_file("#{Base.remote_storage_path}/#{name}.gem"))
|
18
|
+
end
|
19
|
+
|
18
20
|
has_exec(opts.merge({:name => "#{name}", :cwd =>"#{Base.remote_storage_path}", :path => "/bin:/usr/bin:/usr/local/bin:/sbin:/usr/sbin:/var/lib/gems/1.8/bin"})) do
|
19
|
-
command "gem install -y --no-ri --no-rdoc #{name}.gem"
|
21
|
+
command "gem install -y --no-ri --no-rdoc #{Base.remote_storage_path}/#{name}.gem"
|
20
22
|
ifnot "gem list --local #{name} | grep #{name} #{"| grep #{version}" if version}"
|
21
23
|
requires get_file("#{Base.remote_storage_path}/#{name}.gem")
|
22
24
|
end
|
data/lib/poolparty/version.rb
CHANGED
data/poolparty.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: poolparty
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.35
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ari Lerner
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2008-10-
|
12
|
+
date: 2008-10-30 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -50,7 +50,7 @@ dependencies:
|
|
50
50
|
requirements:
|
51
51
|
- - ">="
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version: 1.
|
53
|
+
version: 1.8.2
|
54
54
|
version:
|
55
55
|
description: Self-healing, auto-scaling cloud computing tool
|
56
56
|
email:
|
@@ -60,6 +60,7 @@ executables:
|
|
60
60
|
- cloud-add-keypair
|
61
61
|
- cloud-configure
|
62
62
|
- cloud-contract
|
63
|
+
- cloud-ensure-provisioning
|
63
64
|
- cloud-expand
|
64
65
|
- cloud-list
|
65
66
|
- cloud-maintain
|
@@ -70,6 +71,7 @@ executables:
|
|
70
71
|
- cloud-ssh
|
71
72
|
- cloud-start
|
72
73
|
- cloud-terminate
|
74
|
+
- messenger-get-load
|
73
75
|
- pool
|
74
76
|
- pool-console
|
75
77
|
- pool-describe
|
@@ -106,6 +108,7 @@ files:
|
|
106
108
|
- bin/cloud-add-keypair
|
107
109
|
- bin/cloud-configure
|
108
110
|
- bin/cloud-contract
|
111
|
+
- bin/cloud-ensure-provisioning
|
109
112
|
- bin/cloud-expand
|
110
113
|
- bin/cloud-list
|
111
114
|
- bin/cloud-maintain
|
@@ -116,6 +119,7 @@ files:
|
|
116
119
|
- bin/cloud-ssh
|
117
120
|
- bin/cloud-start
|
118
121
|
- bin/cloud-terminate
|
122
|
+
- bin/messenger-get-load
|
119
123
|
- bin/pool
|
120
124
|
- bin/pool-console
|
121
125
|
- bin/pool-describe
|
@@ -145,6 +149,7 @@ files:
|
|
145
149
|
- lib/erlang/messenger/README
|
146
150
|
- lib/erlang/messenger/Rakefile
|
147
151
|
- lib/erlang/messenger/control
|
152
|
+
- lib/erlang/messenger/ebin/erl_crash.dump
|
148
153
|
- lib/erlang/messenger/ebin/master.app
|
149
154
|
- lib/erlang/messenger/ebin/master_app.beam
|
150
155
|
- lib/erlang/messenger/ebin/node.app
|
@@ -152,8 +157,9 @@ files:
|
|
152
157
|
- lib/erlang/messenger/ebin/packager.app
|
153
158
|
- lib/erlang/messenger/ebin/pm_client.beam
|
154
159
|
- lib/erlang/messenger/ebin/pm_cluster.beam
|
155
|
-
- lib/erlang/messenger/ebin/
|
160
|
+
- lib/erlang/messenger/ebin/pm_event_manager.beam
|
156
161
|
- lib/erlang/messenger/ebin/pm_master.beam
|
162
|
+
- lib/erlang/messenger/ebin/pm_master_event_handler.beam
|
157
163
|
- lib/erlang/messenger/ebin/pm_master_rel-0.1.rel
|
158
164
|
- lib/erlang/messenger/ebin/pm_master_supervisor.beam
|
159
165
|
- lib/erlang/messenger/ebin/pm_node.beam
|
@@ -162,6 +168,7 @@ files:
|
|
162
168
|
- lib/erlang/messenger/ebin/pm_packager.beam
|
163
169
|
- lib/erlang/messenger/ebin/utils.beam
|
164
170
|
- lib/erlang/messenger/erl_crash.dump
|
171
|
+
- lib/erlang/messenger/include/defines.hrl
|
165
172
|
- lib/erlang/messenger/lib/eunit/AUTHORS
|
166
173
|
- lib/erlang/messenger/lib/eunit/CHANGELOG
|
167
174
|
- lib/erlang/messenger/lib/eunit/COPYING
|
@@ -217,21 +224,26 @@ files:
|
|
217
224
|
- lib/erlang/messenger/lib/eunit/src/file_monitor.erl
|
218
225
|
- lib/erlang/messenger/lib/eunit/sys.config
|
219
226
|
- lib/erlang/messenger/lib/eunit/vsn.mk
|
227
|
+
- lib/erlang/messenger/pm_master.beam
|
220
228
|
- lib/erlang/messenger/pm_master_rel-0.1.boot
|
221
229
|
- lib/erlang/messenger/pm_master_rel-0.1.script
|
230
|
+
- lib/erlang/messenger/pm_node.beam
|
222
231
|
- lib/erlang/messenger/pm_node_rel-0.1.boot
|
223
232
|
- lib/erlang/messenger/pm_node_rel-0.1.script
|
224
233
|
- lib/erlang/messenger/src/master_app.erl
|
225
234
|
- lib/erlang/messenger/src/node_app.erl
|
226
235
|
- lib/erlang/messenger/src/pm_client.erl
|
227
236
|
- lib/erlang/messenger/src/pm_cluster.erl
|
228
|
-
- lib/erlang/messenger/src/
|
237
|
+
- lib/erlang/messenger/src/pm_event_manager.erl
|
229
238
|
- lib/erlang/messenger/src/pm_master.erl
|
239
|
+
- lib/erlang/messenger/src/pm_master_event_handler.erl
|
230
240
|
- lib/erlang/messenger/src/pm_master_supervisor.erl
|
231
241
|
- lib/erlang/messenger/src/pm_node.erl
|
232
242
|
- lib/erlang/messenger/src/pm_node_supervisor.erl
|
233
243
|
- lib/erlang/messenger/src/pm_packager.erl
|
234
244
|
- lib/erlang/messenger/src/utils.erl
|
245
|
+
- lib/erlang/messenger/useful_snippets
|
246
|
+
- lib/erlang/messenger/utils.beam
|
235
247
|
- lib/poolparty.rb
|
236
248
|
- lib/poolparty/base_packages/haproxy.rb
|
237
249
|
- lib/poolparty/base_packages/heartbeat.rb
|
@@ -328,6 +340,7 @@ files:
|
|
328
340
|
- lib/poolparty/templates/namespaceauth.conf
|
329
341
|
- lib/poolparty/templates/poolparty.monitor
|
330
342
|
- lib/poolparty/templates/puppet.conf
|
343
|
+
- lib/poolparty/templates/puppetcleaner
|
331
344
|
- lib/poolparty/version.rb
|
332
345
|
- lib/poolpartycl.rb
|
333
346
|
- poolparty.gemspec
|
@@ -432,7 +445,8 @@ post_install_message: |-
|
|
432
445
|
Please check out the documentation for any questions or check out the google groups at
|
433
446
|
http://groups.google.com/group/poolpartyrb
|
434
447
|
|
435
|
-
|
448
|
+
More tutorials can be found at
|
449
|
+
http://poolpartyrb.com
|
436
450
|
|
437
451
|
Don't forget to check out the plugin tutorial @ http://poolpartyrb.com to extend PoolParty for your needs!
|
438
452
|
|