auser-poolparty 1.1.7 → 1.2.0

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.
Files changed (100) hide show
  1. data/History.txt +3 -0
  2. data/README.txt +10 -7
  3. data/Rakefile +0 -1
  4. data/VERSION.yml +2 -2
  5. data/bin/cloud-osxcopy +1 -1
  6. data/bin/cloud-setup-dev +1 -1
  7. data/bin/cloud-spec +0 -1
  8. data/bin/cloud-terminate +7 -1
  9. data/bin/cloud-verify +30 -0
  10. data/examples/basic.rb +3 -6
  11. data/examples/fairchild.rb +17 -21
  12. data/examples/maize.rb +37 -0
  13. data/lib/poolparty/base_packages/haproxy.rb +6 -6
  14. data/lib/poolparty/base_packages/heartbeat.rb +1 -43
  15. data/lib/poolparty/base_packages/poolparty.rb +1 -3
  16. data/lib/poolparty/modules/cloud_dsl.rb +10 -2
  17. data/lib/poolparty/modules/cloud_resourcer.rb +0 -4
  18. data/lib/poolparty/net/init.rb +1 -1
  19. data/lib/poolparty/net/remote_instance.rb +0 -27
  20. data/lib/poolparty/net/remoter/cloud_control.rb +0 -177
  21. data/lib/poolparty/net/remoter/interactive.rb +5 -16
  22. data/lib/poolparty/net/remoter_bases/ec2/ec2.rb +1 -10
  23. data/lib/poolparty/plugins/apache2.rb +53 -0
  24. data/lib/poolparty/plugins/deploy_directory.rb +16 -14
  25. data/lib/poolparty/plugins/gem_package.rb +24 -0
  26. data/lib/poolparty/plugins/line_in_file.rb +16 -0
  27. data/lib/poolparty/poolparty/plugin.rb +8 -6
  28. data/lib/poolparty/provision/dr_configure.rb +1 -0
  29. data/lib/poolparty/resources.rb +42 -0
  30. data/lib/poolparty/resources/cron.rb +30 -1
  31. data/lib/poolparty/resources/directory.rb +23 -0
  32. data/lib/poolparty/resources/exec.rb +22 -0
  33. data/lib/poolparty/resources/file.rb +28 -0
  34. data/lib/poolparty/resources/host.rb +22 -1
  35. data/lib/poolparty/resources/mount.rb +24 -0
  36. data/lib/poolparty/resources/package.rb +29 -13
  37. data/lib/poolparty/resources/remote_file.rb +32 -0
  38. data/lib/poolparty/resources/service.rb +20 -0
  39. data/lib/poolparty/resources/sshkey.rb +22 -0
  40. data/lib/poolparty/resources/symlink.rb +30 -0
  41. data/lib/poolparty/resources/variable.rb +25 -0
  42. data/lib/poolparty/templates/php.ini.erb +1253 -0
  43. data/lib/poolparty/verification/verifiers/ping.rb +5 -0
  44. data/lib/poolparty/verification/verify.rb +2 -0
  45. data/spec/bin/fixtures/bin_cloud_for_test.rb +0 -6
  46. data/spec/poolparty/dependency_resolver/chef_resolver_spec.rb +0 -6
  47. data/spec/poolparty/net/remoter_bases/ec2_remote_instance_spec.rb +0 -10
  48. data/spec/poolparty/spec_helper.rb +0 -1
  49. data/tasks/spec.rake +2 -0
  50. data/test/poolparty/dependency_resolver/puppet_resolver_test.rb +0 -10
  51. data/test/poolparty/verification/verify_test.rb +3 -3
  52. data/vendor/chef/apache2/attributes/apache.rb +1 -1
  53. data/vendor/gems/parenting/Manifest.txt +2 -1
  54. data/vendor/gems/parenting/lib/parenting.rb +1 -1
  55. data/vendor/gems/parenting/parenting.gemspec +2 -2
  56. metadata +8 -70
  57. data/bin/messenger-get-current-nodes +0 -14
  58. data/bin/server-become-master +0 -24
  59. data/bin/server-build-messenger +0 -28
  60. data/bin/server-clean-cert-for +0 -15
  61. data/bin/server-provision +0 -32
  62. data/bin/server-start-agent +0 -15
  63. data/bin/server-start-client +0 -29
  64. data/bin/server-start-master +0 -26
  65. data/bin/server-start-node +0 -32
  66. data/bin/server-stop-client +0 -3
  67. data/bin/server-stop-master +0 -3
  68. data/bin/server-stop-node +0 -3
  69. data/bin/server-update-hosts +0 -49
  70. data/lib/poolparty/capistrano.rb +0 -54
  71. data/lib/poolparty/capistrano/cloud_tasks.rb +0 -10
  72. data/lib/poolparty/config/postlaunchmessage.txt +0 -5
  73. data/lib/poolparty/net/messenger.rb +0 -57
  74. data/lib/poolparty/plugins/rsyncmirror.rb +0 -28
  75. data/lib/poolparty/services/conditional.rb +0 -46
  76. data/lib/poolparty/spec.rb +0 -31
  77. data/lib/poolparty/spec/core/string.rb +0 -18
  78. data/lib/poolparty/spec/matchers/a_spec_extensions_base.rb +0 -26
  79. data/lib/poolparty/spec/matchers/have_cron.rb +0 -28
  80. data/lib/poolparty/spec/matchers/have_deploydirectory.rb +0 -15
  81. data/lib/poolparty/spec/matchers/have_directory.rb +0 -31
  82. data/lib/poolparty/spec/matchers/have_exec.rb +0 -28
  83. data/lib/poolparty/spec/matchers/have_file.rb +0 -28
  84. data/lib/poolparty/spec/matchers/have_gempackage.rb +0 -28
  85. data/lib/poolparty/spec/matchers/have_git.rb +0 -28
  86. data/lib/poolparty/spec/matchers/have_host.rb +0 -28
  87. data/lib/poolparty/spec/matchers/have_mount.rb +0 -28
  88. data/lib/poolparty/spec/matchers/have_package.rb +0 -28
  89. data/lib/poolparty/spec/matchers/have_remotefile.rb +0 -28
  90. data/lib/poolparty/spec/matchers/have_rsyncmirror.rb +0 -28
  91. data/lib/poolparty/spec/matchers/have_service.rb +0 -28
  92. data/lib/poolparty/spec/matchers/have_sshkey.rb +0 -28
  93. data/lib/poolparty/spec/matchers/have_symlink.rb +0 -28
  94. data/lib/poolparty/spec/matchers/have_variable.rb +0 -32
  95. data/lib/poolparty/spec/spec/dynamic_matchers.rb +0 -63
  96. data/lib/poolparty/spec/spec/ensure_matchers_exist.rb +0 -7
  97. data/lib/poolparty/spec/templates/have_base.rb +0 -28
  98. data/spec/poolparty/net/messenger_spec.rb +0 -16
  99. data/spec/poolparty/services/conditional_spec.rb +0 -52
  100. data/spec/poolparty/spec/core/string_spec.rb +0 -57
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
- require "poolparty"
4
- require "poolpartycl"
5
-
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'For cloud name') { |c| optioner.cloudname c }
8
- opts.on('-f name', '--for name', 'Clear the cert for') { |f| optioner.for f }
9
- end
10
-
11
- o.loaded_clouds.each do |cloud|
12
- # @nodes = cloud.messenger_send!("get_current_nodes")
13
- # @nodes = @nodes.split(" ").map {|a| a.split(/@/)[-1] }
14
- PoolParty::Ruberl::Base.new(cloud.master, Default.messenger_client_port).messenger_send!("clear_cert_for #{cloud.for}")
15
- end
data/bin/server-provision DELETED
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
- require "poolparty"
4
- require "poolpartycl"
5
-
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n cloudname', '--name name', 'Start cloud by this name') { |c| optioner.cloudname c }
8
- opts.on('-p', '--slave', 'Provision slave (default: false)') { optioner.provision_slave true }
9
- opts.on('-i num', '--id num', 'Instance num to provision') { |i| optioner.instance_number i }
10
- end
11
-
12
- o.loaded_clouds.each do |cloud|
13
-
14
- with_cloud(cloud) do
15
- setup_dev
16
- instance_num = instance_number.to_i if instance_number
17
-
18
- if instance_num
19
- @instance = get_instance_by_number( instance_num )
20
- instance_num == 0 ? provisioner_for(master).install(testing) : provisioner_for(@instance).install(testing)
21
- else
22
- if provision_slave
23
- vputs "Provisioning slaves"
24
- verbose ? provisioner_for(nil).install(testing) : hide_output { provisioner_for(nil).install(testing) }
25
- else
26
- vputs "Provisioning master"
27
- verbose ? provisioner_for(master).install(testing) : hide_output { provisioner_for(master).install(testing) }
28
- end
29
- end
30
- end
31
-
32
- end
@@ -1,15 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
- require "poolparty"
4
- require "poolpartycl"
5
-
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'Host name') { |h| optioner.hostname h }
8
- opts.on('-k', '--kill', 'Kill the server') { optioner.kill true }
9
- end
10
-
11
- o.loaded_clouds.each do |cloud|
12
-
13
- PoolParty::Agent.run_for cloud
14
-
15
- end
@@ -1,29 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
- require "poolparty"
4
- require "poolpartycl"
5
-
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'Host name') { |h| optioner.hostname h }
8
- end
9
-
10
- o.loaded_clouds.each do |cloud|
11
-
12
- with_cloud(cloud) do
13
-
14
- # ruby /var/lib/gems/1.8/bin/server-start-client
15
- already_running = %x[ps aux | grep beam | grep -v grep | grep client]
16
- if already_running.chomp.empty?
17
-
18
- boot_file = "#{Messenger.append_dir}/pm_client_rel-0.1"
19
-
20
- Kernel.system "cd #{Messenger.append_dir} && rake build_boot_scripts" unless ::File.file?("#{boot_file}.boot") || testing
21
- command = Messenger.erl_command("client", "-boot #{boot_file} #{noshell ? "" : "-detached -heart -noshell"}", 7049, 7050)
22
- vputs "Running #{command}"
23
-
24
- Kernel.system "export HOME=/root && #{command}" unless testing
25
- end
26
- end
27
-
28
- end
29
-
@@ -1,26 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
- require "poolparty"
4
- require "poolpartycl"
5
-
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'Host name') { |h| optioner.hostname h }
8
- end
9
-
10
- o.loaded_clouds.each do |cloud|
11
-
12
- with_cloud(cloud) do
13
-
14
- already_running = %x[ps aux | grep beam | grep -v grep | grep master]
15
- if already_running.chomp.empty?
16
-
17
- boot_file = "#{Messenger.append_dir}/pm_master_rel-0.1"
18
- Kernel.system ". /etc/profile && server-build-messenger" unless ::File.file?("#{boot_file}.boot") || testing
19
- command = Messenger.erl_command("master", "-boot #{boot_file} #{noshell ? "" : "-noshell -detached -heart"}")
20
- vputs "Running #{command}"
21
-
22
- Kernel.system "export HOME=/root && #{command}" unless testing
23
- end
24
- end
25
-
26
- end
@@ -1,32 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
- require "poolparty"
4
- require "poolpartycl"
5
-
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'Host name') { |h| optioner.hostname h }
8
- opts.on('-l', '--no-shell', 'No shell') {optioner.noshell true}
9
- end
10
-
11
- available_monitors = PoolParty::Monitors.available_monitors
12
-
13
- @hostname = o.hostname ? o.hostname : `hostname`.chomp
14
- @hostname = "node0" if @hostname == "master" # Quick fix to make sure we have a node running on the master as well
15
-
16
- o.loaded_clouds.each do |cloud|
17
-
18
- with_cloud(cloud, {:hostname => @hostname}) do
19
- # TODO: Change this to be app specfic
20
- already_running = %x[ps aux | grep beam | grep -v grep | grep node]
21
- if already_running.chomp.empty?
22
- boot_file = "#{Messenger.append_dir}/pm_node_rel-0.1"
23
-
24
- Kernel.system ". /etc/profile && server-build-messenger" unless ::File.file?("#{boot_file}.boot") || testing
25
- command = Messenger.erl_command(hostname, "-boot #{boot_file} #{noshell ? "" : "-noshell -detached -heart"} -- #{available_monitors.join(" ")}")
26
- vputs "Running #{command}"
27
-
28
- Kernel.system "export HOME=/root && #{command}" unless testing
29
- end
30
- end
31
-
32
- end
@@ -1,3 +0,0 @@
1
- #!/bin/sh
2
-
3
- ps aux | grep -v grep | grep client_service | awk '{print $2}' | xargs kill
@@ -1,3 +0,0 @@
1
- #!/bin/sh
2
-
3
- ps aux | grep -v grep | grep pm_master | awk '{print $2}' | xargs kill
data/bin/server-stop-node DELETED
@@ -1,3 +0,0 @@
1
- #!/bin/sh
2
-
3
- ps aux | grep -v grep | grep pm_node | awk '{print $2}' | xargs kill
@@ -1,49 +0,0 @@
1
- #!/usr/bin/env ruby
2
- $:.unshift(File.join(File.dirname(__FILE__), "..", "lib"))
3
- require "poolparty"
4
- require "poolpartycl"
5
-
6
- o = PoolParty::Optioner.new(ARGV) do |opts, optioner|
7
- opts.on('-n name', '--name name', 'Update hosts for local pool named [name]') { |p| optioner.cloudname p }
8
- end
9
-
10
- o.loaded_clouds.each do |cloud|
11
- with_cloud(cloud) do
12
- vputs "Cloud: #{name}"
13
-
14
- new_hosts_listing = returning Array.new do |arr|
15
-
16
- puts nodes(:status => "running")
17
-
18
- nodes(:status => "running").each do |ri|
19
- vputs ri.hosts_file_listing_for(self)
20
- arr << ri.hosts_file_listing_for(self)
21
- end
22
- other_clouds.each do |other|
23
- other.nodes(:status => "running").each do |ri|
24
- vputs ri.hosts_file_listing_for(self)
25
- arr << ri.hosts_file_listing_for(self)
26
- end
27
- end
28
- end.join("\n")
29
-
30
- if testing
31
- puts new_hosts_listing
32
- else
33
- new_hosts_file = "#{Default.manifest_path}/classes/hosts.pp"
34
-
35
- arr = returning Array.new do |arr|
36
- new_hosts_listing.split(/\n/).each do |line|
37
- parts = line.split(/\t/).map {|a| a.chomp }
38
- ip,hostname,aliases = parts[0], parts[1], parts[2..-1]
39
- vputs "ip: #{ip} for #{hostname} as #{aliases}"
40
- h = PoolParty::Resources::Host.new(:name => hostname, :ip => Resolv::DNS.new.getaddress(ip).to_s, :alias => aliases)
41
- arr << h.to_string
42
- end
43
- end
44
-
45
- ::File.open(new_hosts_file, "w+") {|f| f << arr.join("\n") }
46
- end
47
-
48
- end
49
- end
@@ -1,54 +0,0 @@
1
- $:.unshift(File.join(File.dirname(__FILE__)))
2
- require "poolparty"
3
- require "poolpartycl"
4
-
5
- module PoolParty
6
- module Capistrano
7
-
8
- $cap_clouds = {}
9
-
10
- def set_poolparty_file(file)
11
- load_pool file
12
- end
13
-
14
- def set_cloud(name)
15
- cld = PoolParty::Cloud.cloud(name)
16
- if cld && !cloud_retrieved_already?
17
- $cap_clouds[name] = cld
18
- @cloud = cld
19
- instance_eval <<-EOE
20
- ssh_options[:keys] = [ '#{cld.full_keypair_path}' ]
21
- set :user, '#{cld.user}'
22
- set :username, "#{cld.user}"
23
- ssh_options[:forward_agent] = true
24
- EOE
25
- end
26
- cld
27
- end
28
-
29
- def cloud_retrieved_already?
30
- $cap_clouds.key?(name)
31
- end
32
- def get_cloud(name)
33
- set_cloud(name)
34
- end
35
-
36
- # Get the master ip for the cloud to set in the deploy.rb file
37
- def cloud_master(name)
38
- get_cloud(name).ip
39
- end
40
-
41
- def set_role_for_all_instances(role, name)
42
- ips = get_cloud(name).nodes(:status => "running").map {|ri| ri.ip }
43
- ips.each {|ip| send :role, role.to_sym, "#{ip}"}
44
- end
45
- end
46
- end
47
-
48
- module Capistrano
49
- class Configuration
50
- include ::PoolParty::Capistrano
51
-
52
- # Dir["#{::File.dirname(__FILE__)}/capistrano/*.rb"].each {|f| pload f }
53
- end
54
- end
@@ -1,10 +0,0 @@
1
- Capistrano::Configuration.instance(:must_exist).load do
2
- namespace(:cloud_tasks) do
3
- desc "List running clouds"
4
- task :list do
5
- cmd = "cloud-list -n #{cloud.name}"
6
- puts cmd
7
- # %x[cmd]
8
- end
9
- end
10
- end
@@ -1,5 +0,0 @@
1
- Your cloud is launching
2
- -----------------------
3
- Your master's ip address is: :master_ip
4
-
5
- Depending on how your cloud is setup, this process may take a while.
@@ -1,57 +0,0 @@
1
- # TODO: Deprecate this file
2
-
3
- =begin rdoc
4
- The connection to the messenger from poolparty, the client.
5
-
6
- This class will setup a socket connection to the master's client
7
- at the messenger_client_port
8
- =end
9
- module PoolParty
10
- module Messenger
11
- def with_socket(testing=false, &block)
12
- host = testing ? "localhost" : (master.ip)
13
- vputs "Pinging #{host} with the messenger"
14
- socket = TCPSocket.open(host, Default.messenger_client_port)
15
- out = yield(socket)
16
- socket.close
17
- out
18
- end
19
- # TODO: Fix cookie setting
20
- def self.erl_command(hostname, extra="", min_ports=7000, max_ports=7050)
21
- command_line_opts = "-cookie -pa #{append_dir}/ebin -kernel inet_dist_listen_min #{min_ports} inet_dist_listen_max #{max_ports} -sname #{hostname}"
22
-
23
- "erl #{command_line_opts} #{extra}"
24
- end
25
-
26
- def self.append_dir
27
- ::File.expand_path(::File.join( ::File.dirname(__FILE__), "..", "..", "erlang/messenger" ))
28
- end
29
-
30
- def messenger_send!(msg="get_current_load cpu", testing=false)
31
- with_socket(testing) do |sock|
32
- sock.send(msg, 0)
33
- @str = sock.recv(2000)
34
- end
35
- vputs "Received #{@str} from #{msg}"
36
- @str
37
- end
38
-
39
- def messenger_cast!(msg="force_reconfig")
40
- with_socket do |sock|
41
- sock.send(msg, 0)
42
- end
43
- end
44
-
45
- def self.messenger_send!(cmd="", testing=false)
46
- command = Messenger.erl_command("client#{Time.now.to_i}", "-s pm_client -run pm_client #{cmd} -s erlang halt -noshell")
47
- testing ? command : %x[#{command}]
48
- end
49
-
50
- # Helper methods
51
- def self.startup_remote_messenger(hostname, testing=false)
52
- # messenger_send!("")
53
- # testing ? command : %x[#{command}]
54
- end
55
-
56
- end
57
- end
@@ -1,28 +0,0 @@
1
- module PoolParty
2
- class Rsyncmirror
3
-
4
- virtual_resource(:rsyncmirror) do
5
-
6
- def loaded(opts={})
7
- execute_on_node do
8
- @dir = dir || name
9
- has_exec(opts.merge({:command => "#{cloud.remote_rsync_command} --no-implied-dirs --delete-excluded #{Default.user}@master:#{@dir}/ #{@dir}/".safe_quote, :name => "rsync-#{name}"}))
10
- end
11
- end
12
-
13
- # Since git is not a native type, we have to say which core resource
14
- # it is using to be able to require it
15
- def class_type_name
16
- "exec"
17
- end
18
-
19
- # Because we are requiring an exec, instead of a built-in package of the git, we have to overload
20
- # the to_s method and prepend it with the same name as above
21
- def key
22
- "rsync-#{name}"
23
- end
24
-
25
- end
26
-
27
- end
28
- end
@@ -1,46 +0,0 @@
1
- module PoolParty
2
- def working_conditional
3
- @working_conditional ||= []
4
- end
5
-
6
- def case_of o, &block
7
- c = Conditional.new({:name => "case_of_#{o}", :attribute => o}, &block)
8
- add_service c
9
- c
10
- end
11
-
12
- class Conditional < PoolParty::Service
13
- default_options({})
14
-
15
- def initialize(opts={}, &block)
16
- super(opts, &block)
17
- dsl_options(opts)
18
- options.freeze
19
- end
20
-
21
- def when_is o, &block
22
- add(o, &block)
23
- end
24
- def otherwise &block
25
- add(nil, &block)
26
- end
27
-
28
- def add(o, &block)
29
- service = PoolParty::Service.new(&block)
30
- obj = (o ? o : :default).to_sym
31
- when_statements.merge!({obj => service})
32
- end
33
-
34
- def when_statements
35
- @when_statement ||= {}
36
- end
37
- def to_properties_hash
38
- {
39
- :options => {:variable => (dsl_options.attribute)},
40
- :resources => {},
41
- :services => {:control_statements => when_statements}
42
- }
43
- end
44
- end
45
-
46
- end
@@ -1,31 +0,0 @@
1
- ["core", "spec"].each do |dir|
2
- Dir[File.join(File.dirname(__FILE__), "spec", dir, "*.rb")].each {|f| require f}
3
- end
4
-
5
- class TestCloudClass < PoolParty::Cloud::Cloud
6
- def build_test_manifest
7
- returning Array.new do |arr|
8
-
9
- services.each do |service|
10
- service.options.merge!(:name => service.name)
11
- classpackage_with_self(service)
12
- end
13
-
14
- global_classpackages.each do |cls|
15
- arr << cls.to_string
16
- end
17
-
18
- end.join("\n")
19
- end
20
- end
21
-
22
- def new_test_cloud(&block)
23
- TestCloudClass.new(:test_cloud, &block)
24
- end
25
-
26
- def load_test_cloud(name, poolfile=nil)
27
- PoolParty::Script.inflate_file poolfile
28
- blk = cloud(name).stored_block.dup
29
- PoolParty::Pool.reset!
30
- new_test_cloud &blk
31
- end