auser-poolparty 0.1.2 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +22 -0
- data/License.txt +20 -0
- data/README.txt +52 -0
- data/Rakefile +4 -109
- data/bin/cloud +31 -0
- data/bin/cloud-add-keypair +23 -0
- data/bin/cloud-configure +35 -0
- data/bin/cloud-contract +27 -0
- data/bin/cloud-expand +27 -0
- data/bin/cloud-list +32 -0
- data/bin/cloud-maintain +36 -0
- data/bin/cloud-provision +30 -0
- data/bin/cloud-reconfigure +24 -0
- data/bin/cloud-ssh +18 -0
- data/bin/cloud-start +29 -0
- data/bin/pool +23 -75
- data/bin/pool-console +12 -0
- data/bin/pool-describe +9 -0
- data/bin/pool-list +28 -0
- data/bin/pool-provision +34 -0
- data/bin/pool-spec +17 -0
- data/bin/pool-start +32 -0
- data/examples/basic.rb +20 -0
- data/examples/plugin_without_plugin_directory.rb +13 -0
- data/examples/poolparty.rb +12 -0
- data/examples/with_apache_plugin.rb +22 -0
- data/generators/poolspec/USAGE +5 -0
- data/generators/poolspec/poolspec_generator.rb +65 -0
- data/generators/poolspec/templates/pool_spec_template.erb +9 -0
- data/lib/erlang/eb_server.erl +27 -0
- data/lib/poolparty.rb +40 -116
- data/lib/poolparty/base_packages/haproxy.rb +41 -0
- data/lib/poolparty/base_packages/heartbeat.rb +43 -0
- data/lib/poolparty/base_packages/poolparty.rb +18 -0
- data/lib/poolparty/base_packages/ruby.rb +27 -0
- data/lib/poolparty/core/array.rb +24 -0
- data/lib/{core → poolparty/core}/exception.rb +0 -0
- data/lib/{core → poolparty/core}/float.rb +0 -0
- data/lib/poolparty/core/hash.rb +29 -0
- data/lib/poolparty/core/kernel.rb +34 -0
- data/lib/{core → poolparty/core}/module.rb +18 -0
- data/lib/poolparty/core/my_open_struct.rb +18 -0
- data/lib/poolparty/core/object.rb +54 -0
- data/lib/poolparty/core/proc.rb +2 -0
- data/lib/poolparty/core/string.rb +72 -0
- data/lib/poolparty/core/symbol.rb +8 -0
- data/lib/{core → poolparty/core}/time.rb +15 -0
- data/lib/poolparty/exceptions/RemoteException.rb +12 -0
- data/lib/poolparty/exceptions/ResourceException.rb +7 -0
- data/lib/poolparty/exceptions/RuntimeException.rb +7 -0
- data/lib/poolparty/exceptions/SpecException.rb +7 -0
- data/lib/poolparty/exceptions/TemplateNotFound.rb +7 -0
- data/lib/poolparty/helpers/binary.rb +30 -0
- data/lib/poolparty/helpers/console.rb +30 -0
- data/lib/poolparty/helpers/display.rb +25 -0
- data/lib/poolparty/helpers/optioner.rb +61 -0
- data/lib/poolparty/helpers/provisioner_base.rb +226 -0
- data/lib/poolparty/helpers/provisioners/master.rb +120 -0
- data/lib/poolparty/helpers/provisioners/slave.rb +52 -0
- data/lib/poolparty/modules/cloud_resourcer.rb +72 -0
- data/lib/poolparty/modules/configurable.rb +34 -0
- data/lib/poolparty/modules/definable_resource.rb +59 -0
- data/lib/poolparty/modules/file_writer.rb +55 -0
- data/lib/poolparty/modules/method_missing_sugar.rb +17 -0
- data/lib/poolparty/modules/output.rb +13 -0
- data/lib/poolparty/modules/pretty_printer.rb +38 -0
- data/lib/{core/string.rb → poolparty/modules/s3_string.rb} +5 -29
- data/lib/{modules → poolparty/modules}/safe_instance.rb +0 -0
- data/lib/poolparty/monitors/base_monitor.rb +16 -0
- data/lib/poolparty/net/remote.rb +35 -0
- data/lib/poolparty/net/remote_bases/ec2.rb +145 -0
- data/lib/poolparty/net/remote_instance.rb +68 -0
- data/lib/poolparty/net/remoter.rb +209 -0
- data/lib/poolparty/net/remoter_base.rb +117 -0
- data/lib/poolparty/plugins/gem_package.rb +39 -0
- data/lib/poolparty/plugins/line.rb +76 -0
- data/lib/poolparty/plugins/svn.rb +48 -0
- data/lib/poolparty/pool/base.rb +74 -0
- data/lib/poolparty/pool/cloud.rb +132 -0
- data/lib/poolparty/pool/custom_resource.rb +61 -0
- data/lib/poolparty/pool/loggable.rb +29 -0
- data/lib/poolparty/pool/plugin.rb +42 -0
- data/lib/poolparty/pool/plugin_model.rb +48 -0
- data/lib/poolparty/pool/pool.rb +55 -0
- data/lib/poolparty/pool/resource.rb +235 -0
- data/lib/poolparty/pool/resources/class_package.rb +60 -0
- data/lib/poolparty/pool/resources/cron.rb +14 -0
- data/lib/poolparty/pool/resources/directory.rb +23 -0
- data/lib/poolparty/pool/resources/exec.rb +26 -0
- data/lib/poolparty/pool/resources/file.rb +23 -0
- data/lib/poolparty/pool/resources/gem.rb +14 -0
- data/lib/poolparty/pool/resources/host.rb +14 -0
- data/lib/poolparty/pool/resources/package.rb +14 -0
- data/lib/poolparty/pool/resources/remote_file.rb +20 -0
- data/lib/poolparty/pool/resources/service.rb +21 -0
- data/lib/poolparty/pool/resources/sshkey.rb +19 -0
- data/lib/poolparty/pool/resources/variable.rb +27 -0
- data/lib/poolparty/pool/script.rb +21 -0
- data/{config/heartbeat_authkeys.conf → lib/poolparty/templates/authkeys} +0 -0
- data/lib/poolparty/templates/cib.xml +1 -0
- data/lib/poolparty/templates/fileserver.conf +4 -0
- data/{config/heartbeat.conf → lib/poolparty/templates/ha.cf} +3 -1
- data/{config → lib/poolparty/templates}/haproxy.conf +13 -6
- data/lib/poolparty/templates/namespaceauth.conf +19 -0
- data/lib/poolparty/templates/puppet.conf +13 -0
- data/lib/poolparty/version.rb +9 -0
- data/lib/poolpartycl.rb +3 -0
- data/script/destroy +14 -0
- data/script/generate +14 -0
- data/script/txt2html +82 -0
- data/{lib/poolparty/tasks → tasks}/cloud.rake +1 -1
- data/tasks/deployment.rake +34 -0
- data/tasks/development.rake +78 -0
- data/{lib/poolparty/tasks → tasks}/ec2.rake +1 -1
- data/tasks/environment.rake +7 -0
- data/{lib/poolparty/tasks → tasks}/instance.rake +0 -0
- data/{lib/poolparty/tasks → tasks}/server.rake +0 -0
- data/tasks/spec.rake +17 -0
- data/tasks/website.rake +17 -0
- metadata +154 -249
- data/CHANGELOG +0 -23
- data/LICENSE +0 -22
- data/README +0 -139
- data/assets/clouds.png +0 -0
- data/bin/instance +0 -68
- data/bin/poolnotify +0 -34
- data/config/cloud_master_takeover +0 -17
- data/config/create_proxy_ami.sh +0 -582
- data/config/installers/ubuntu_install.sh +0 -77
- data/config/monit.conf +0 -9
- data/config/monit/haproxy.monit.conf +0 -8
- data/config/monit/nginx.monit.conf +0 -0
- data/config/nginx.conf +0 -24
- data/config/reconfigure_instances_script.sh +0 -37
- data/config/sample-config.yml +0 -23
- data/config/scp_instances_script.sh +0 -12
- data/lib/core/array.rb +0 -16
- data/lib/core/hash.rb +0 -11
- data/lib/core/kernel.rb +0 -12
- data/lib/core/object.rb +0 -21
- data/lib/core/proc.rb +0 -15
- data/lib/helpers/plugin_spec_helper.rb +0 -58
- data/lib/modules/callback.rb +0 -133
- data/lib/modules/ec2_wrapper.rb +0 -108
- data/lib/modules/file_writer.rb +0 -38
- data/lib/modules/sprinkle_overrides.rb +0 -27
- data/lib/modules/vlad_override.rb +0 -83
- data/lib/poolparty/application.rb +0 -199
- data/lib/poolparty/init.rb +0 -6
- data/lib/poolparty/master.rb +0 -492
- data/lib/poolparty/monitors.rb +0 -11
- data/lib/poolparty/monitors/cpu.rb +0 -23
- data/lib/poolparty/monitors/memory.rb +0 -33
- data/lib/poolparty/monitors/web.rb +0 -29
- data/lib/poolparty/optioner.rb +0 -20
- data/lib/poolparty/plugin.rb +0 -78
- data/lib/poolparty/provider.rb +0 -104
- data/lib/poolparty/provider/essential.rb +0 -6
- data/lib/poolparty/provider/git.rb +0 -8
- data/lib/poolparty/provider/haproxy.rb +0 -9
- data/lib/poolparty/provider/heartbeat.rb +0 -6
- data/lib/poolparty/provider/rsync.rb +0 -8
- data/lib/poolparty/provider/ruby.rb +0 -65
- data/lib/poolparty/provider/s3fuse.rb +0 -22
- data/lib/poolparty/remote_instance.rb +0 -250
- data/lib/poolparty/remoter.rb +0 -171
- data/lib/poolparty/remoting.rb +0 -137
- data/lib/poolparty/scheduler.rb +0 -93
- data/lib/poolparty/tasks.rb +0 -47
- data/lib/poolparty/tasks/development.rake +0 -78
- data/lib/poolparty/tasks/plugins.rake +0 -30
- data/lib/poolparty/thread_pool.rb +0 -94
- data/lib/s3/s3_object_store_folders.rb +0 -44
- data/poolparty.gemspec +0 -71
- data/spec/files/describe_response +0 -37
- data/spec/files/multi_describe_response +0 -69
- data/spec/files/remote_desc_response +0 -37
- data/spec/helpers/ec2_mock.rb +0 -57
- data/spec/lib/core/core_spec.rb +0 -26
- data/spec/lib/core/kernel_spec.rb +0 -24
- data/spec/lib/core/string_spec.rb +0 -28
- data/spec/lib/modules/callback_spec.rb +0 -213
- data/spec/lib/modules/file_writer_spec.rb +0 -74
- data/spec/lib/poolparty/application_spec.rb +0 -135
- data/spec/lib/poolparty/ec2_wrapper_spec.rb +0 -110
- data/spec/lib/poolparty/master_spec.rb +0 -479
- data/spec/lib/poolparty/optioner_spec.rb +0 -34
- data/spec/lib/poolparty/plugin_spec.rb +0 -115
- data/spec/lib/poolparty/poolparty_spec.rb +0 -60
- data/spec/lib/poolparty/provider_spec.rb +0 -74
- data/spec/lib/poolparty/remote_instance_spec.rb +0 -178
- data/spec/lib/poolparty/remoter_spec.rb +0 -72
- data/spec/lib/poolparty/remoting_spec.rb +0 -148
- data/spec/lib/poolparty/scheduler_spec.rb +0 -70
- data/spec/monitors/cpu_monitor_spec.rb +0 -39
- data/spec/monitors/memory_spec.rb +0 -51
- data/spec/monitors/misc_monitor_spec.rb +0 -51
- data/spec/monitors/web_spec.rb +0 -40
- data/spec/spec_helper.rb +0 -53
data/lib/poolparty/scheduler.rb
DELETED
@@ -1,93 +0,0 @@
|
|
1
|
-
module PoolParty
|
2
|
-
extend self
|
3
|
-
# Schedule tasks container
|
4
|
-
class ScheduleTasks
|
5
|
-
include ThreadSafeInstance
|
6
|
-
# Initialize tasks array and run
|
7
|
-
def tasks
|
8
|
-
@_tasks ||= []
|
9
|
-
end
|
10
|
-
# Synchronize the running threaded tasks
|
11
|
-
def run
|
12
|
-
unless tasks.empty? && !running?
|
13
|
-
running = true
|
14
|
-
pool = ThreadPool.new(10)
|
15
|
-
tasks.reject! do |task|
|
16
|
-
pool.process {task.call}
|
17
|
-
end
|
18
|
-
pool.join() # When all the tasks are done
|
19
|
-
running = false
|
20
|
-
end
|
21
|
-
end
|
22
|
-
def running?;@running == true;end
|
23
|
-
def running;@running ||= false;end
|
24
|
-
# Add a task in a new thread
|
25
|
-
def <<(a, *args)
|
26
|
-
tasks << a
|
27
|
-
end
|
28
|
-
alias_method :push, :<<
|
29
|
-
# In the ThreadSafeInstance
|
30
|
-
make_safe :<<
|
31
|
-
end
|
32
|
-
# Scheduler class
|
33
|
-
module Scheduler
|
34
|
-
attr_reader :tasker
|
35
|
-
# Get the tasks or ScheduleTasks
|
36
|
-
def _tasker
|
37
|
-
@_tasker ||= ScheduleTasks.new
|
38
|
-
end
|
39
|
-
# Add a task to the new threaded block
|
40
|
-
def add_task(&blk)
|
41
|
-
_tasker.push blk
|
42
|
-
end
|
43
|
-
# Grab the polling_time
|
44
|
-
def interval
|
45
|
-
@interval ||= Application.polling_time
|
46
|
-
end
|
47
|
-
# Run the threads
|
48
|
-
def run_threads
|
49
|
-
_tasker.run
|
50
|
-
end
|
51
|
-
alias_method :run_tasks, :run_threads
|
52
|
-
# Daemonize the process
|
53
|
-
def daemonize
|
54
|
-
PoolParty.message "Daemonizing..."
|
55
|
-
|
56
|
-
pid = fork do
|
57
|
-
Signal.trap('HUP', 'IGNORE') # Don't die upon logout
|
58
|
-
File.open("/dev/null", "r+") do |devnull|
|
59
|
-
$stdout.reopen(devnull)
|
60
|
-
$stderr.reopen(devnull)
|
61
|
-
$stdin.reopen(devnull) unless @use_stdin
|
62
|
-
end
|
63
|
-
yield if block_given?
|
64
|
-
end
|
65
|
-
Process.detach(pid)
|
66
|
-
pid
|
67
|
-
end
|
68
|
-
# Run the loop and wait the amount of time between running the tasks
|
69
|
-
# You can send it daemonize => true and it will daemonize
|
70
|
-
def run_thread_loop(opts={}, &blk)
|
71
|
-
block = lambda {
|
72
|
-
loop do
|
73
|
-
begin
|
74
|
-
yield if block_given?
|
75
|
-
add_task { Signal.trap("INT") { exit } }
|
76
|
-
run_thread_list
|
77
|
-
PoolParty.message "Waiting: #{interval}"
|
78
|
-
wait interval
|
79
|
-
rescue Exception => e
|
80
|
-
Process.kill("INT", Process.pid)
|
81
|
-
end
|
82
|
-
end
|
83
|
-
}
|
84
|
-
# Run the tasks
|
85
|
-
opts[:daemonize] ? daemonize(&block) : block.call
|
86
|
-
end
|
87
|
-
|
88
|
-
def run_thread_list
|
89
|
-
run_threads
|
90
|
-
end
|
91
|
-
|
92
|
-
end
|
93
|
-
end
|
data/lib/poolparty/tasks.rb
DELETED
@@ -1,47 +0,0 @@
|
|
1
|
-
module PoolParty
|
2
|
-
class Tasks
|
3
|
-
include Callbacks
|
4
|
-
|
5
|
-
# Setup and define all the tasks
|
6
|
-
def initialize
|
7
|
-
yield self if block_given?
|
8
|
-
end
|
9
|
-
# Define the tasks in the rakefile
|
10
|
-
# From the rakefile
|
11
|
-
def define_tasks
|
12
|
-
# Run the command on the local system
|
13
|
-
def run(cmd)
|
14
|
-
Kernel.system(cmd.runnable)
|
15
|
-
end
|
16
|
-
# Basic setup action
|
17
|
-
def setup_application
|
18
|
-
@options ||= PoolParty.options(ARGV.dup)
|
19
|
-
end
|
20
|
-
|
21
|
-
# Require the poolparty specific tasks
|
22
|
-
compiled_rakefile
|
23
|
-
|
24
|
-
desc "Reload the static variables"
|
25
|
-
task :reload do
|
26
|
-
reload!
|
27
|
-
end
|
28
|
-
true
|
29
|
-
end
|
30
|
-
|
31
|
-
def reload!
|
32
|
-
@compiled_rakefile = nil
|
33
|
-
end
|
34
|
-
|
35
|
-
def compiled_rakefile
|
36
|
-
rake_str = []
|
37
|
-
|
38
|
-
Dir["#{File.expand_path(File.dirname(__FILE__))}/tasks/*.rake"].each { |t| rake_str << open(t).read }
|
39
|
-
plugin_rakefiles
|
40
|
-
|
41
|
-
@compiled_rakefile ||= eval(rake_str.join("\n")) # Not ideal
|
42
|
-
end
|
43
|
-
def plugin_rakefiles
|
44
|
-
Dir["#{PoolParty.plugin_dir}/*/Rakefile"].each {|t| load t }
|
45
|
-
end
|
46
|
-
end
|
47
|
-
end
|
@@ -1,78 +0,0 @@
|
|
1
|
-
namespace(:dev) do
|
2
|
-
task :initialize do
|
3
|
-
setup_application
|
4
|
-
run "mkdir $HOME/.ec2 >/dev/null 2>/dev/null" unless File.directory?("$HOME/.ec2")
|
5
|
-
end
|
6
|
-
# Setup a basic development environment for the user
|
7
|
-
desc "Setup development environment specify the config_file"
|
8
|
-
task :setup => [:initialize, :setup_keypair] do
|
9
|
-
certloc = "#{Application.ec2_dir}/#{Application.keypair}/cert-*.pem 2>/dev/null"
|
10
|
-
pkloc = "#{Application.ec2_dir}/#{Application.keypair}/pk-*.pem 2>/dev/null"
|
11
|
-
unless `ls #{certloc}`.length > 1 && `ls #{pkloc}`.length > 1
|
12
|
-
puts <<-EOM
|
13
|
-
Make sure you run rake dev:setup_pemkeys before you run this command
|
14
|
-
|
15
|
-
I cannot continue until your keys are setup.
|
16
|
-
exiting...
|
17
|
-
EOM
|
18
|
-
exit
|
19
|
-
end
|
20
|
-
keyfilename = ".#{Application.keypair}_pool_keys"
|
21
|
-
run <<-EOR
|
22
|
-
echo 'export AWS_ACCESS_KEY=\"#{Application.access_key}\"' > $HOME/#{keyfilename}
|
23
|
-
echo 'export AWS_SECRET_ACCESS=\"#{Application.secret_access_key}\"' >> $HOME/#{keyfilename}
|
24
|
-
echo 'export EC2_HOME=\"#{Application.ec2_dir}\"' >> $HOME/#{keyfilename}
|
25
|
-
echo 'export KEYPAIR_NAME=\"#{Application.keypair}\"' >> $HOME/#{keyfilename}
|
26
|
-
echo 'export EC2_PRIVATE_KEY=`ls ~/.ec2/#{Application.keypair}/pk-*.pem`;' >> $HOME/#{keyfilename}
|
27
|
-
echo 'export EC2_CERT=`ls ~/.ec2/#{Application.keypair}/cert-*.pem`;' >> $HOME/#{keyfilename}
|
28
|
-
EOR
|
29
|
-
puts <<-EOM
|
30
|
-
To work on this cloud, source the file like:
|
31
|
-
|
32
|
-
source $HOME/#{keyfilename}
|
33
|
-
|
34
|
-
EOM
|
35
|
-
end
|
36
|
-
desc "Generate a new keypair"
|
37
|
-
task :setup_keypair => [:initialize] do
|
38
|
-
Application.keypair ||= "#{File.basename(Dir.pwd)}"
|
39
|
-
run "ec2-delete-keypair #{Application.keypair}" if File.file?(Application.keypair_path)
|
40
|
-
puts "-- setting up keypair named #{Application.keypair} in #{Application.keypair_path}"
|
41
|
-
run <<-EOR
|
42
|
-
chmod 600 #{Application.keypair_path} 2>/dev/null
|
43
|
-
mkdir $HOME/.ec2/#{Application.keypair} 2>/dev/null
|
44
|
-
ec2-add-keypair #{Application.keypair} > #{Application.keypair_path}
|
45
|
-
EOR
|
46
|
-
end
|
47
|
-
desc "Setup pem keys"
|
48
|
-
task :setup_pemkeys => [:initialize] do
|
49
|
-
puts "Setting up stubbed pem keys in ~/.ec2/#{Application.keypair}"
|
50
|
-
run <<-EOR
|
51
|
-
mkdir -p $HOME/.ec2/#{Application.keypair} 2>/dev/null
|
52
|
-
echo 'UPDATE ME' > #{Application.ec2_dir}/#{Application.keypair}/cert-UPDATEME.pem
|
53
|
-
echo 'UPDATE ME' > #{Application.ec2_dir}/#{Application.keypair}/pk-UPDATEME.pem
|
54
|
-
EOR
|
55
|
-
puts "Don't forget to replace your ~/.ec2/#{Application.keypair}/*.pem keys with the real amazon keys"
|
56
|
-
end
|
57
|
-
desc "initialize setup"
|
58
|
-
task :init => [:setup_pemkeys]
|
59
|
-
|
60
|
-
desc "Just an argv test"
|
61
|
-
task :test => :initialize do
|
62
|
-
puts "---- Testing ----"
|
63
|
-
puts PoolParty.options(ARGV.dup)
|
64
|
-
puts "Using keypair at: #{Application.keypair_path}"
|
65
|
-
end
|
66
|
-
desc "Installation listing"
|
67
|
-
task :list_install => :initialize do
|
68
|
-
puts "-- packages to install --"
|
69
|
-
Provider.install_poolparty(true)
|
70
|
-
end
|
71
|
-
desc "Authorize base ports for application"
|
72
|
-
task :authorize_ports => :initialize do
|
73
|
-
run <<-EOR
|
74
|
-
ec2-authorize -p 22 default
|
75
|
-
ec2-authorize -p 80 default
|
76
|
-
EOR
|
77
|
-
end
|
78
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
namespace(:plugin) do
|
2
|
-
task :init do
|
3
|
-
@command = ARGV.shift # Get rid of the command
|
4
|
-
@name = (ENV['location'] || ENV["l"] || ARGV.shift)
|
5
|
-
unless @name
|
6
|
-
puts <<-EOM
|
7
|
-
Usage:
|
8
|
-
rake #{@command} location
|
9
|
-
|
10
|
-
Example:
|
11
|
-
rake #{@command} git://github.com/auser/poolparty-plugins.git
|
12
|
-
|
13
|
-
Check the help does for more information how to install a plugin
|
14
|
-
http://poolpartyrb.com
|
15
|
-
|
16
|
-
EOM
|
17
|
-
exit
|
18
|
-
end
|
19
|
-
end
|
20
|
-
desc "Install a plugin from a git repository"
|
21
|
-
task :install => :init do |command|
|
22
|
-
PoolParty::PluginManager.install_plugin @name
|
23
|
-
end
|
24
|
-
desc "Remove an installed plugin"
|
25
|
-
task :remove => :init do |command|
|
26
|
-
PoolParty::PluginManager.remove_plugin @name
|
27
|
-
end
|
28
|
-
rule "" do |t|
|
29
|
-
end
|
30
|
-
end
|
@@ -1,94 +0,0 @@
|
|
1
|
-
module PoolParty
|
2
|
-
class ThreadPool
|
3
|
-
class Worker
|
4
|
-
def initialize
|
5
|
-
@mutex = Mutex.new
|
6
|
-
@thread = Thread.new do
|
7
|
-
while true
|
8
|
-
sleep 0.001
|
9
|
-
block = get_block
|
10
|
-
if block
|
11
|
-
block.call
|
12
|
-
reset_block
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def get_block
|
19
|
-
@mutex.synchronize {@block}
|
20
|
-
end
|
21
|
-
|
22
|
-
def set_block(block)
|
23
|
-
@mutex.synchronize do
|
24
|
-
raise RuntimeError, "Thread already busy." if @block
|
25
|
-
@block = block
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def reset_block
|
30
|
-
@mutex.synchronize {@block = nil}
|
31
|
-
end
|
32
|
-
|
33
|
-
def busy?
|
34
|
-
@mutex.synchronize {!@block.nil?}
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
attr_accessor :max_size
|
39
|
-
attr_reader :workers
|
40
|
-
|
41
|
-
def initialize(max_size = 10)
|
42
|
-
@max_size = max_size
|
43
|
-
@workers = []
|
44
|
-
@mutex = Mutex.new
|
45
|
-
end
|
46
|
-
|
47
|
-
def size
|
48
|
-
@mutex.synchronize {@workers.size}
|
49
|
-
end
|
50
|
-
|
51
|
-
def busy?
|
52
|
-
@mutex.synchronize {@workers.any? {|w| w.busy?}}
|
53
|
-
end
|
54
|
-
|
55
|
-
def join
|
56
|
-
sleep 0.01 while busy?
|
57
|
-
end
|
58
|
-
|
59
|
-
def process(&block)
|
60
|
-
while true
|
61
|
-
@mutex.synchronize do
|
62
|
-
worker = find_available_worker
|
63
|
-
if worker
|
64
|
-
return worker.set_block(block)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
sleep 0.01
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def find_available_worker
|
72
|
-
free_worker || create_worker
|
73
|
-
end
|
74
|
-
|
75
|
-
def wait_for_worker
|
76
|
-
while true
|
77
|
-
worker = find_available_worker
|
78
|
-
return worker if worker
|
79
|
-
sleep 0.01
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def free_worker
|
84
|
-
@workers.each {|w| return w unless w.busy?}; nil
|
85
|
-
end
|
86
|
-
|
87
|
-
def create_worker
|
88
|
-
return nil if @workers.size >= @max_size
|
89
|
-
worker = Worker.new
|
90
|
-
@workers << worker
|
91
|
-
worker
|
92
|
-
end
|
93
|
-
end
|
94
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
=begin rdoc
|
2
|
-
S3 overloads
|
3
|
-
=end
|
4
|
-
module AWS
|
5
|
-
module S3
|
6
|
-
class S3Object
|
7
|
-
class << self
|
8
|
-
|
9
|
-
alias :original_store :store
|
10
|
-
def store(key, data, bucket = nil, options = {})
|
11
|
-
store_folders(key, bucket, options) if options[:use_virtual_directories]
|
12
|
-
original_store(key, data, bucket, options)
|
13
|
-
end
|
14
|
-
|
15
|
-
def streamed_store(key, filepath, bucket = nil, options = {})
|
16
|
-
store_folders(key, bucket, options) if options[:use_virtual_directories]
|
17
|
-
store(key,File.open(filepath), bucket)
|
18
|
-
end
|
19
|
-
|
20
|
-
def store_directory(directory, bucket, options = {})
|
21
|
-
Dir[File.join(directory, "*")].each do |file|
|
22
|
-
streamed_store("#{File.basename(File.dirname(file))}/#{File.basename(file)}", file, bucket, options.update(:use_virtual_directories => true))
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
def store_folders(key, bucket = nil, options = {})
|
27
|
-
folders = key.split("/")
|
28
|
-
folders.slice!(0)
|
29
|
-
folders.pop
|
30
|
-
current_folder = "/"
|
31
|
-
folders.each {|folder|
|
32
|
-
current_folder += folder
|
33
|
-
store_folder(current_folder, bucket, options)
|
34
|
-
current_folder += "/"
|
35
|
-
}
|
36
|
-
end
|
37
|
-
|
38
|
-
def store_folder(key, bucket = nil, options = {})
|
39
|
-
original_store(key + "_$folder$", "", bucket, options) # store the magic entry that emulates a folder
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
data/poolparty.gemspec
DELETED
@@ -1,71 +0,0 @@
|
|
1
|
-
Gem::Specification.new do |s|
|
2
|
-
s.name = %q{poolparty}
|
3
|
-
s.version = "0.1.2"
|
4
|
-
|
5
|
-
s.required_rubygems_version = Gem::Requirement.new("= 1.2") if s.respond_to? :required_rubygems_version=
|
6
|
-
s.authors = ["Ari Lerner"]
|
7
|
-
s.cert_chain = nil
|
8
|
-
s.date = %q{2008-07-30}
|
9
|
-
s.description = %q{Run your entire application off EC2, managed and auto-scaling}
|
10
|
-
s.email = %q{ari.lerner@citrusbyte.com}
|
11
|
-
s.executables = ["instance", "pool", "poolnotify"]
|
12
|
-
s.extra_rdoc_files = ["CHANGELOG", "LICENSE", "README", "bin", "bin/instance", "bin/pool", "bin/poolnotify", "lib", "lib/core", "lib/core/array.rb", "lib/core/exception.rb", "lib/core/float.rb", "lib/core/hash.rb", "lib/core/kernel.rb", "lib/core/module.rb", "lib/core/object.rb", "lib/core/proc.rb", "lib/core/string.rb", "lib/core/time.rb", "lib/helpers", "lib/helpers/plugin_spec_helper.rb", "lib/modules", "lib/modules/callback.rb", "lib/modules/ec2_wrapper.rb", "lib/modules/file_writer.rb", "lib/modules/safe_instance.rb", "lib/modules/sprinkle_overrides.rb", "lib/modules/vlad_override.rb", "lib/poolparty", "lib/poolparty.rb", "lib/poolparty/application.rb", "lib/poolparty/init.rb", "lib/poolparty/master.rb", "lib/poolparty/monitors", "lib/poolparty/monitors.rb", "lib/poolparty/monitors/cpu.rb", "lib/poolparty/monitors/memory.rb", "lib/poolparty/monitors/web.rb", "lib/poolparty/optioner.rb", "lib/poolparty/plugin.rb", "lib/poolparty/provider", "lib/poolparty/provider.rb", "lib/poolparty/provider/essential.rb", "lib/poolparty/provider/git.rb", "lib/poolparty/provider/haproxy.rb", "lib/poolparty/provider/heartbeat.rb", "lib/poolparty/provider/rsync.rb", "lib/poolparty/provider/ruby.rb", "lib/poolparty/provider/s3fuse.rb", "lib/poolparty/remote_instance.rb", "lib/poolparty/remoter.rb", "lib/poolparty/remoting.rb", "lib/poolparty/scheduler.rb", "lib/poolparty/tasks", "lib/poolparty/tasks.rb", "lib/poolparty/tasks/cloud.rake", "lib/poolparty/tasks/development.rake", "lib/poolparty/tasks/ec2.rake", "lib/poolparty/tasks/instance.rake", "lib/poolparty/tasks/plugins.rake", "lib/poolparty/tasks/server.rake", "lib/poolparty/thread_pool.rb", "lib/s3", "lib/s3/s3_object_store_folders.rb"]
|
13
|
-
s.files = ["CHANGELOG", "LICENSE", "README", "Rakefile", "assets", "assets/clouds.png", "bin", "bin/instance", "bin/pool", "bin/poolnotify", "config", "config/cloud_master_takeover", "config/create_proxy_ami.sh", "config/haproxy.conf", "config/heartbeat.conf", "config/heartbeat_authkeys.conf", "config/installers", "config/installers/ubuntu_install.sh", "config/monit", "config/monit.conf", "config/monit/haproxy.monit.conf", "config/monit/nginx.monit.conf", "config/nginx.conf", "config/reconfigure_instances_script.sh", "config/sample-config.yml", "config/scp_instances_script.sh", "lib", "lib/core", "lib/core/array.rb", "lib/core/exception.rb", "lib/core/float.rb", "lib/core/hash.rb", "lib/core/kernel.rb", "lib/core/module.rb", "lib/core/object.rb", "lib/core/proc.rb", "lib/core/string.rb", "lib/core/time.rb", "lib/helpers", "lib/helpers/plugin_spec_helper.rb", "lib/modules", "lib/modules/callback.rb", "lib/modules/ec2_wrapper.rb", "lib/modules/file_writer.rb", "lib/modules/safe_instance.rb", "lib/modules/sprinkle_overrides.rb", "lib/modules/vlad_override.rb", "lib/poolparty", "lib/poolparty.rb", "lib/poolparty/application.rb", "lib/poolparty/init.rb", "lib/poolparty/master.rb", "lib/poolparty/monitors", "lib/poolparty/monitors.rb", "lib/poolparty/monitors/cpu.rb", "lib/poolparty/monitors/memory.rb", "lib/poolparty/monitors/web.rb", "lib/poolparty/optioner.rb", "lib/poolparty/plugin.rb", "lib/poolparty/provider", "lib/poolparty/provider.rb", "lib/poolparty/provider/essential.rb", "lib/poolparty/provider/git.rb", "lib/poolparty/provider/haproxy.rb", "lib/poolparty/provider/heartbeat.rb", "lib/poolparty/provider/rsync.rb", "lib/poolparty/provider/ruby.rb", "lib/poolparty/provider/s3fuse.rb", "lib/poolparty/remote_instance.rb", "lib/poolparty/remoter.rb", "lib/poolparty/remoting.rb", "lib/poolparty/scheduler.rb", "lib/poolparty/tasks", "lib/poolparty/tasks.rb", "lib/poolparty/tasks/cloud.rake", "lib/poolparty/tasks/development.rake", "lib/poolparty/tasks/ec2.rake", "lib/poolparty/tasks/instance.rake", "lib/poolparty/tasks/plugins.rake", "lib/poolparty/tasks/server.rake", "lib/poolparty/thread_pool.rb", "lib/s3", "lib/s3/s3_object_store_folders.rb", "plugins", "poolparty-0.1.2.gem", "spec", "spec/files", "spec/files/describe_response", "spec/files/multi_describe_response", "spec/files/remote_desc_response", "spec/helpers", "spec/helpers/ec2_mock.rb", "spec/lib", "spec/lib/core", "spec/lib/core/core_spec.rb", "spec/lib/core/kernel_spec.rb", "spec/lib/core/string_spec.rb", "spec/lib/modules", "spec/lib/modules/callback_spec.rb", "spec/lib/modules/file_writer_spec.rb", "spec/lib/poolparty", "spec/lib/poolparty/application_spec.rb", "spec/lib/poolparty/ec2_wrapper_spec.rb", "spec/lib/poolparty/master_spec.rb", "spec/lib/poolparty/optioner_spec.rb", "spec/lib/poolparty/plugin_spec.rb", "spec/lib/poolparty/poolparty_spec.rb", "spec/lib/poolparty/provider_spec.rb", "spec/lib/poolparty/remote_instance_spec.rb", "spec/lib/poolparty/remoter_spec.rb", "spec/lib/poolparty/remoting_spec.rb", "spec/lib/poolparty/scheduler_spec.rb", "spec/lib/s3", "spec/monitors", "spec/monitors/cpu_monitor_spec.rb", "spec/monitors/memory_spec.rb", "spec/monitors/misc_monitor_spec.rb", "spec/monitors/web_spec.rb", "spec/spec_helper.rb", "poolparty.gemspec"]
|
14
|
-
s.has_rdoc = true
|
15
|
-
s.homepage = %q{http://poolpartyrb.com}
|
16
|
-
s.post_install_message = %q{
|
17
|
-
|
18
|
-
Get ready to jump in the pool, you just installed PoolParty! (Updated at 12:37PM, 07/30/08)
|
19
|
-
|
20
|
-
Please check out the documentation for any questions or check out the google groups at
|
21
|
-
http://groups.google.com/group/poolpartyrb
|
22
|
-
|
23
|
-
Don't forget to check out the plugin tutorial @ http://poolpartyrb.com for extending PoolParty!
|
24
|
-
|
25
|
-
For more information, check http://poolpartyrb.com
|
26
|
-
On IRC:
|
27
|
-
irc.freenode.net
|
28
|
-
#poolpartyrb
|
29
|
-
|
30
|
-
*** Ari Lerner @ <ari.lerner@citrusbyte.com> ***
|
31
|
-
}
|
32
|
-
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Poolparty", "--main", "README"]
|
33
|
-
s.require_paths = ["lib"]
|
34
|
-
s.rubyforge_project = %q{poolparty}
|
35
|
-
s.rubygems_version = %q{1.2.0}
|
36
|
-
s.summary = %q{Run your entire application off EC2, managed and auto-scaling}
|
37
|
-
|
38
|
-
if s.respond_to? :specification_version then
|
39
|
-
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
40
|
-
s.specification_version = 2
|
41
|
-
|
42
|
-
if current_version >= 3 then
|
43
|
-
s.add_runtime_dependency(%q<aws-s3>, [">= 0"])
|
44
|
-
s.add_runtime_dependency(%q<amazon-ec2>, [">= 0"])
|
45
|
-
s.add_runtime_dependency(%q<auser-aska>, [">= 0"])
|
46
|
-
s.add_runtime_dependency(%q<git>, [">= 0"])
|
47
|
-
s.add_runtime_dependency(%q<sprinkle>, [">= 0"])
|
48
|
-
s.add_runtime_dependency(%q<SystemTimer>, [">= 0"])
|
49
|
-
s.add_runtime_dependency(%q<open4>, [">= 0"])
|
50
|
-
s.add_development_dependency(%q<echoe>, [">= 0"])
|
51
|
-
else
|
52
|
-
s.add_dependency(%q<aws-s3>, [">= 0"])
|
53
|
-
s.add_dependency(%q<amazon-ec2>, [">= 0"])
|
54
|
-
s.add_dependency(%q<auser-aska>, [">= 0"])
|
55
|
-
s.add_dependency(%q<git>, [">= 0"])
|
56
|
-
s.add_dependency(%q<sprinkle>, [">= 0"])
|
57
|
-
s.add_dependency(%q<SystemTimer>, [">= 0"])
|
58
|
-
s.add_dependency(%q<open4>, [">= 0"])
|
59
|
-
s.add_dependency(%q<echoe>, [">= 0"])
|
60
|
-
end
|
61
|
-
else
|
62
|
-
s.add_dependency(%q<aws-s3>, [">= 0"])
|
63
|
-
s.add_dependency(%q<amazon-ec2>, [">= 0"])
|
64
|
-
s.add_dependency(%q<auser-aska>, [">= 0"])
|
65
|
-
s.add_dependency(%q<git>, [">= 0"])
|
66
|
-
s.add_dependency(%q<sprinkle>, [">= 0"])
|
67
|
-
s.add_dependency(%q<SystemTimer>, [">= 0"])
|
68
|
-
s.add_dependency(%q<open4>, [">= 0"])
|
69
|
-
s.add_dependency(%q<echoe>, [">= 0"])
|
70
|
-
end
|
71
|
-
end
|