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.
Files changed (199) hide show
  1. data/History.txt +22 -0
  2. data/License.txt +20 -0
  3. data/README.txt +52 -0
  4. data/Rakefile +4 -109
  5. data/bin/cloud +31 -0
  6. data/bin/cloud-add-keypair +23 -0
  7. data/bin/cloud-configure +35 -0
  8. data/bin/cloud-contract +27 -0
  9. data/bin/cloud-expand +27 -0
  10. data/bin/cloud-list +32 -0
  11. data/bin/cloud-maintain +36 -0
  12. data/bin/cloud-provision +30 -0
  13. data/bin/cloud-reconfigure +24 -0
  14. data/bin/cloud-ssh +18 -0
  15. data/bin/cloud-start +29 -0
  16. data/bin/pool +23 -75
  17. data/bin/pool-console +12 -0
  18. data/bin/pool-describe +9 -0
  19. data/bin/pool-list +28 -0
  20. data/bin/pool-provision +34 -0
  21. data/bin/pool-spec +17 -0
  22. data/bin/pool-start +32 -0
  23. data/examples/basic.rb +20 -0
  24. data/examples/plugin_without_plugin_directory.rb +13 -0
  25. data/examples/poolparty.rb +12 -0
  26. data/examples/with_apache_plugin.rb +22 -0
  27. data/generators/poolspec/USAGE +5 -0
  28. data/generators/poolspec/poolspec_generator.rb +65 -0
  29. data/generators/poolspec/templates/pool_spec_template.erb +9 -0
  30. data/lib/erlang/eb_server.erl +27 -0
  31. data/lib/poolparty.rb +40 -116
  32. data/lib/poolparty/base_packages/haproxy.rb +41 -0
  33. data/lib/poolparty/base_packages/heartbeat.rb +43 -0
  34. data/lib/poolparty/base_packages/poolparty.rb +18 -0
  35. data/lib/poolparty/base_packages/ruby.rb +27 -0
  36. data/lib/poolparty/core/array.rb +24 -0
  37. data/lib/{core → poolparty/core}/exception.rb +0 -0
  38. data/lib/{core → poolparty/core}/float.rb +0 -0
  39. data/lib/poolparty/core/hash.rb +29 -0
  40. data/lib/poolparty/core/kernel.rb +34 -0
  41. data/lib/{core → poolparty/core}/module.rb +18 -0
  42. data/lib/poolparty/core/my_open_struct.rb +18 -0
  43. data/lib/poolparty/core/object.rb +54 -0
  44. data/lib/poolparty/core/proc.rb +2 -0
  45. data/lib/poolparty/core/string.rb +72 -0
  46. data/lib/poolparty/core/symbol.rb +8 -0
  47. data/lib/{core → poolparty/core}/time.rb +15 -0
  48. data/lib/poolparty/exceptions/RemoteException.rb +12 -0
  49. data/lib/poolparty/exceptions/ResourceException.rb +7 -0
  50. data/lib/poolparty/exceptions/RuntimeException.rb +7 -0
  51. data/lib/poolparty/exceptions/SpecException.rb +7 -0
  52. data/lib/poolparty/exceptions/TemplateNotFound.rb +7 -0
  53. data/lib/poolparty/helpers/binary.rb +30 -0
  54. data/lib/poolparty/helpers/console.rb +30 -0
  55. data/lib/poolparty/helpers/display.rb +25 -0
  56. data/lib/poolparty/helpers/optioner.rb +61 -0
  57. data/lib/poolparty/helpers/provisioner_base.rb +226 -0
  58. data/lib/poolparty/helpers/provisioners/master.rb +120 -0
  59. data/lib/poolparty/helpers/provisioners/slave.rb +52 -0
  60. data/lib/poolparty/modules/cloud_resourcer.rb +72 -0
  61. data/lib/poolparty/modules/configurable.rb +34 -0
  62. data/lib/poolparty/modules/definable_resource.rb +59 -0
  63. data/lib/poolparty/modules/file_writer.rb +55 -0
  64. data/lib/poolparty/modules/method_missing_sugar.rb +17 -0
  65. data/lib/poolparty/modules/output.rb +13 -0
  66. data/lib/poolparty/modules/pretty_printer.rb +38 -0
  67. data/lib/{core/string.rb → poolparty/modules/s3_string.rb} +5 -29
  68. data/lib/{modules → poolparty/modules}/safe_instance.rb +0 -0
  69. data/lib/poolparty/monitors/base_monitor.rb +16 -0
  70. data/lib/poolparty/net/remote.rb +35 -0
  71. data/lib/poolparty/net/remote_bases/ec2.rb +145 -0
  72. data/lib/poolparty/net/remote_instance.rb +68 -0
  73. data/lib/poolparty/net/remoter.rb +209 -0
  74. data/lib/poolparty/net/remoter_base.rb +117 -0
  75. data/lib/poolparty/plugins/gem_package.rb +39 -0
  76. data/lib/poolparty/plugins/line.rb +76 -0
  77. data/lib/poolparty/plugins/svn.rb +48 -0
  78. data/lib/poolparty/pool/base.rb +74 -0
  79. data/lib/poolparty/pool/cloud.rb +132 -0
  80. data/lib/poolparty/pool/custom_resource.rb +61 -0
  81. data/lib/poolparty/pool/loggable.rb +29 -0
  82. data/lib/poolparty/pool/plugin.rb +42 -0
  83. data/lib/poolparty/pool/plugin_model.rb +48 -0
  84. data/lib/poolparty/pool/pool.rb +55 -0
  85. data/lib/poolparty/pool/resource.rb +235 -0
  86. data/lib/poolparty/pool/resources/class_package.rb +60 -0
  87. data/lib/poolparty/pool/resources/cron.rb +14 -0
  88. data/lib/poolparty/pool/resources/directory.rb +23 -0
  89. data/lib/poolparty/pool/resources/exec.rb +26 -0
  90. data/lib/poolparty/pool/resources/file.rb +23 -0
  91. data/lib/poolparty/pool/resources/gem.rb +14 -0
  92. data/lib/poolparty/pool/resources/host.rb +14 -0
  93. data/lib/poolparty/pool/resources/package.rb +14 -0
  94. data/lib/poolparty/pool/resources/remote_file.rb +20 -0
  95. data/lib/poolparty/pool/resources/service.rb +21 -0
  96. data/lib/poolparty/pool/resources/sshkey.rb +19 -0
  97. data/lib/poolparty/pool/resources/variable.rb +27 -0
  98. data/lib/poolparty/pool/script.rb +21 -0
  99. data/{config/heartbeat_authkeys.conf → lib/poolparty/templates/authkeys} +0 -0
  100. data/lib/poolparty/templates/cib.xml +1 -0
  101. data/lib/poolparty/templates/fileserver.conf +4 -0
  102. data/{config/heartbeat.conf → lib/poolparty/templates/ha.cf} +3 -1
  103. data/{config → lib/poolparty/templates}/haproxy.conf +13 -6
  104. data/lib/poolparty/templates/namespaceauth.conf +19 -0
  105. data/lib/poolparty/templates/puppet.conf +13 -0
  106. data/lib/poolparty/version.rb +9 -0
  107. data/lib/poolpartycl.rb +3 -0
  108. data/script/destroy +14 -0
  109. data/script/generate +14 -0
  110. data/script/txt2html +82 -0
  111. data/{lib/poolparty/tasks → tasks}/cloud.rake +1 -1
  112. data/tasks/deployment.rake +34 -0
  113. data/tasks/development.rake +78 -0
  114. data/{lib/poolparty/tasks → tasks}/ec2.rake +1 -1
  115. data/tasks/environment.rake +7 -0
  116. data/{lib/poolparty/tasks → tasks}/instance.rake +0 -0
  117. data/{lib/poolparty/tasks → tasks}/server.rake +0 -0
  118. data/tasks/spec.rake +17 -0
  119. data/tasks/website.rake +17 -0
  120. metadata +154 -249
  121. data/CHANGELOG +0 -23
  122. data/LICENSE +0 -22
  123. data/README +0 -139
  124. data/assets/clouds.png +0 -0
  125. data/bin/instance +0 -68
  126. data/bin/poolnotify +0 -34
  127. data/config/cloud_master_takeover +0 -17
  128. data/config/create_proxy_ami.sh +0 -582
  129. data/config/installers/ubuntu_install.sh +0 -77
  130. data/config/monit.conf +0 -9
  131. data/config/monit/haproxy.monit.conf +0 -8
  132. data/config/monit/nginx.monit.conf +0 -0
  133. data/config/nginx.conf +0 -24
  134. data/config/reconfigure_instances_script.sh +0 -37
  135. data/config/sample-config.yml +0 -23
  136. data/config/scp_instances_script.sh +0 -12
  137. data/lib/core/array.rb +0 -16
  138. data/lib/core/hash.rb +0 -11
  139. data/lib/core/kernel.rb +0 -12
  140. data/lib/core/object.rb +0 -21
  141. data/lib/core/proc.rb +0 -15
  142. data/lib/helpers/plugin_spec_helper.rb +0 -58
  143. data/lib/modules/callback.rb +0 -133
  144. data/lib/modules/ec2_wrapper.rb +0 -108
  145. data/lib/modules/file_writer.rb +0 -38
  146. data/lib/modules/sprinkle_overrides.rb +0 -27
  147. data/lib/modules/vlad_override.rb +0 -83
  148. data/lib/poolparty/application.rb +0 -199
  149. data/lib/poolparty/init.rb +0 -6
  150. data/lib/poolparty/master.rb +0 -492
  151. data/lib/poolparty/monitors.rb +0 -11
  152. data/lib/poolparty/monitors/cpu.rb +0 -23
  153. data/lib/poolparty/monitors/memory.rb +0 -33
  154. data/lib/poolparty/monitors/web.rb +0 -29
  155. data/lib/poolparty/optioner.rb +0 -20
  156. data/lib/poolparty/plugin.rb +0 -78
  157. data/lib/poolparty/provider.rb +0 -104
  158. data/lib/poolparty/provider/essential.rb +0 -6
  159. data/lib/poolparty/provider/git.rb +0 -8
  160. data/lib/poolparty/provider/haproxy.rb +0 -9
  161. data/lib/poolparty/provider/heartbeat.rb +0 -6
  162. data/lib/poolparty/provider/rsync.rb +0 -8
  163. data/lib/poolparty/provider/ruby.rb +0 -65
  164. data/lib/poolparty/provider/s3fuse.rb +0 -22
  165. data/lib/poolparty/remote_instance.rb +0 -250
  166. data/lib/poolparty/remoter.rb +0 -171
  167. data/lib/poolparty/remoting.rb +0 -137
  168. data/lib/poolparty/scheduler.rb +0 -93
  169. data/lib/poolparty/tasks.rb +0 -47
  170. data/lib/poolparty/tasks/development.rake +0 -78
  171. data/lib/poolparty/tasks/plugins.rake +0 -30
  172. data/lib/poolparty/thread_pool.rb +0 -94
  173. data/lib/s3/s3_object_store_folders.rb +0 -44
  174. data/poolparty.gemspec +0 -71
  175. data/spec/files/describe_response +0 -37
  176. data/spec/files/multi_describe_response +0 -69
  177. data/spec/files/remote_desc_response +0 -37
  178. data/spec/helpers/ec2_mock.rb +0 -57
  179. data/spec/lib/core/core_spec.rb +0 -26
  180. data/spec/lib/core/kernel_spec.rb +0 -24
  181. data/spec/lib/core/string_spec.rb +0 -28
  182. data/spec/lib/modules/callback_spec.rb +0 -213
  183. data/spec/lib/modules/file_writer_spec.rb +0 -74
  184. data/spec/lib/poolparty/application_spec.rb +0 -135
  185. data/spec/lib/poolparty/ec2_wrapper_spec.rb +0 -110
  186. data/spec/lib/poolparty/master_spec.rb +0 -479
  187. data/spec/lib/poolparty/optioner_spec.rb +0 -34
  188. data/spec/lib/poolparty/plugin_spec.rb +0 -115
  189. data/spec/lib/poolparty/poolparty_spec.rb +0 -60
  190. data/spec/lib/poolparty/provider_spec.rb +0 -74
  191. data/spec/lib/poolparty/remote_instance_spec.rb +0 -178
  192. data/spec/lib/poolparty/remoter_spec.rb +0 -72
  193. data/spec/lib/poolparty/remoting_spec.rb +0 -148
  194. data/spec/lib/poolparty/scheduler_spec.rb +0 -70
  195. data/spec/monitors/cpu_monitor_spec.rb +0 -39
  196. data/spec/monitors/memory_spec.rb +0 -51
  197. data/spec/monitors/misc_monitor_spec.rb +0 -51
  198. data/spec/monitors/web_spec.rb +0 -40
  199. data/spec/spec_helper.rb +0 -53
@@ -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
@@ -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