auser-poolparty 0.1.2 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|