auser-poolparty 0.2.56 → 0.2.57

Sign up to get free protection for your applications and to get access to all the features.
data/Manifest.txt CHANGED
@@ -25,6 +25,7 @@ bin/messenger-get-current-nodes
25
25
  bin/pool
26
26
  bin/pool-console
27
27
  bin/pool-describe
28
+ bin/pool-init
28
29
  bin/pool-list
29
30
  bin/pool-spec
30
31
  bin/pool-start
@@ -23,7 +23,9 @@ o.loaded_clouds.each do |cloud|
23
23
  s << "/usr/sbin/puppetca --clean #{node}.compute-1.internal"
24
24
  s << "/usr/sbin/puppetca --clean #{node}.ec2.internal"
25
25
  end.join(";")
26
- `. /etc/profile && #{str};cloud-provision -i #{node.gsub(/node/, '')};#{str}`
26
+ cmd = ". /etc/profile && #{str};cloud-provision -i #{node.gsub(/node/, '')};#{str}"
27
+ vputs "Executing #{cmd}"
28
+ `#{cmd}`
27
29
  end
28
30
  # @tp.join
29
31
  end
data/bin/cloud-refresh CHANGED
@@ -10,6 +10,7 @@ end
10
10
  o.loaded_clouds.each do |cloud|
11
11
 
12
12
  with_cloud(cloud) do
13
+ vputs "Calling reconfigure_cloud!('force_reconfig') on #{master.ip}"
13
14
  reconfigure_cloud!("force_reconfig")
14
15
  end
15
16
 
@@ -1,6 +1,6 @@
1
1
  % Includes file for the PoolParty Messenger
2
2
 
3
- -define(debug, true).
3
+ % -define(debug, true).
4
4
 
5
5
  -ifdef(debug).
6
6
 
data/lib/poolparty.rb CHANGED
@@ -7,15 +7,35 @@ require 'rubygems'
7
7
  require lib
8
8
  rescue Exception => e
9
9
  @required_software << lib
10
- puts "Could not find library #{lib}: #{e}"
11
10
  end
12
11
  end
13
12
 
14
13
  unless @required_software.empty?
15
- puts "*****************************************"
16
- puts "* Error *"
17
- puts "* Missing required software *"
18
- puts ""
14
+ @num_lines = 45
15
+ @centered_lines = @num_lines - 4
16
+ def wrap_cline(line)
17
+ "* #{line.center(@centered_lines)} *"
18
+ end
19
+ def wrap_lline(line)
20
+ "* #{line.ljust(@centered_lines)} *"
21
+ end
22
+ def header
23
+ "*"*@num_lines
24
+ end
25
+ empty_line = "* #{" ".ljust(@centered_lines)} *"
26
+ # error_initializing_message.txt
27
+ puts header
28
+ puts wrap_cline("Error")
29
+ puts wrap_lline("Missing required software")
30
+ puts @required_software.map {|a| wrap_lline(" #{a}") }
31
+ puts wrap_lline("Please install the required software")
32
+ puts wrap_lline("and try again")
33
+ puts empty_line
34
+ puts wrap_lline("Try installing #{@required_software.size == 1 ? "it" : "them"} with")
35
+ puts @required_software.map {|a| wrap_lline(" gem install #{a}") }
36
+ puts empty_line
37
+ puts "*"*@num_lines
38
+ exit(0)
19
39
  end
20
40
 
21
41
  # Use active supports auto load mechanism
@@ -11,8 +11,8 @@ module PoolParty
11
11
 
12
12
  # Template variables
13
13
  has_variable(:name => "name_haproxy", :value => "#{cloud.name}")
14
- has_variable(:name => "nodenames_haproxy", :value => "generate('/usr/bin/env', '/var/lib/gems/1.8/bin/server-list-active', '-c', 'name')")
15
- has_variable(:name => "node_ips_haproxy", :value => "generate('/usr/bin/env', '/var/lib/gems/1.8/bin/server-list-active', '-c', 'ip')")
14
+ has_variable(:name => "nodenames_haproxy", :value => "generate('/usr/bin/env', '/usr/bin/server-list-active', '-c', 'name')")
15
+ has_variable(:name => "node_ips_haproxy", :value => "generate('/usr/bin/env', '/usr/bin/server-list-active', '-c', 'ip')")
16
16
 
17
17
  has_variable(:name => "ports_haproxy", :value => ([(self.respond_to?(:port) ? port : Base.port)].flatten))
18
18
  has_variable(:name => "forwarding_port", :value => (respond_to?(:forwarding_port) ? forwarding_port : Base.forwarding_port))
@@ -72,7 +72,7 @@ module PoolParty
72
72
  requires get_gempackage("poolparty")
73
73
  command(". /etc/profile && cloud-handle-load")
74
74
  end
75
- has_cron(:name => "provisioning ensurer", :user => Base.user, :minute => "*/3") do
75
+ has_cron(:name => "provisioning ensurer", :user => Base.user, :minute => "*/2") do
76
76
  requires get_gempackage("poolparty")
77
77
  command ". /etc/profile && cloud-ensure-provisioning"
78
78
  end
@@ -100,7 +100,7 @@ module PoolParty
100
100
  process_clean_reconfigure_for!(@instance, testing)
101
101
 
102
102
  vputs "Logging in and running provisioning on #{@instance.name}"
103
- cmd = "cd #{Base.remote_storage_path} && chmod +x install_#{name}.sh && /bin/sh install_#{name}.sh; rm install_#{name}.sh"
103
+ cmd = "cd #{Base.remote_storage_path} && /bin/chmod +x install_#{name}.sh && /bin/sh install_#{name}.sh; /bin/rm install_#{name}.sh"
104
104
  verbose ? @cloud.run_command_on(cmd, @instance) : hide_output {@cloud.run_command_on(cmd, @instance)}
105
105
 
106
106
  process_clean_reconfigure_for!(@instance, testing)
@@ -134,7 +134,7 @@ module PoolParty
134
134
  vputs "Logging on to #{@instance.ip}"
135
135
  @cloud.rsync_storage_files_to(@instance)
136
136
 
137
- cmd = "cd #{Base.remote_storage_path} && chmod +x configure_#{name}.sh && /bin/sh configure_#{name}.sh && rm configure_#{name}.sh"
137
+ cmd = "cd #{Base.remote_storage_path} && /bin/chmod +x configure_#{name}.sh && /bin/sh configure_#{name}.sh && /bin/rm configure_#{name}.sh"
138
138
  verbose ? @cloud.run_command_on(cmd, @instance) : hide_output {@cloud.run_command_on(cmd, @instance)}
139
139
  end
140
140
  end
@@ -129,6 +129,7 @@ ps aux | grep puppetmaster | awk '{print $2}' | xargs kill #{unix_hide_string} #
129
129
  rm -rf /etc/puppet/ssl
130
130
  # Start it back up
131
131
  puppetmasterd --verbose
132
+ /usr/bin/puppetcleaner
132
133
  # /etc/init.d/puppetmaster start #{unix_hide_string}
133
134
  EOS
134
135
  end
@@ -34,7 +34,7 @@ module PoolParty
34
34
  def run_once_and_clean
35
35
  <<-EOS
36
36
  rm -rf /etc/puppet/ssl
37
- . /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master #{unix_hide_string}
37
+ . /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master #{unix_hide_string} &
38
38
  rm -rf /etc/puppet/ssl
39
39
  EOS
40
40
  end
@@ -43,7 +43,7 @@ rm -rf /etc/puppet/ssl
43
43
  # puppetd --listen --fqdn #{@instance.name}
44
44
  def start_puppet
45
45
  <<-EOS
46
- . /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master #{unix_hide_string}
46
+ . /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master #{unix_hide_string} &
47
47
  EOS
48
48
  end
49
49
 
@@ -1,9 +1,13 @@
1
1
  begin
2
2
  require 'EC2'
3
+ require "date"
3
4
  class String
4
5
  def convert_from_ec2_to_ip
5
6
  self.gsub(/.compute-1.amazonaws.com*/, '').gsub(/ec2-/, '').gsub(/-/, '.')
6
7
  end
8
+ def parse_datetime
9
+ DateTime.parse( self.chomp ) rescue self
10
+ end
7
11
  end
8
12
  module PoolParty
9
13
  module Ec2
@@ -44,13 +48,14 @@ begin
44
48
  h.merge!({
45
49
  :name => @name,
46
50
  :hostname => h[:ip],
47
- :ip => h[:ip].convert_from_ec2_to_ip
51
+ :ip => h[:ip].convert_from_ec2_to_ip,
52
+ :launching_time => (h[:launching_time].parse_datetime)
48
53
  })
49
54
  end
50
55
  end
51
56
  # Get the s3 description for the response in a hash format
52
57
  def get_instances_description
53
- EC2ResponseObject.get_descriptions(ec2.describe_instances).sort_by {|a| a[:launching_time]}
58
+ EC2ResponseObject.get_descriptions(ec2.describe_instances).sort_by {|a| a[:launching_time] }
54
59
  end
55
60
 
56
61
  def after_launch_master(instance=nil)
@@ -146,7 +151,7 @@ begin
146
151
  end
147
152
  rs
148
153
  end
149
- def self.get_hash_from_response(resp)
154
+ def self.get_hash_from_response(resp)
150
155
  begin
151
156
  {
152
157
  :instance_id => resp.instanceId,
@@ -12,7 +12,7 @@ module PoolParty
12
12
  default_options({
13
13
  :environment => "production",
14
14
  :user => "root", # This should change here
15
- :base_keypair_path => "~/.ec2",
15
+ :base_keypair_path => "#{ENV["HOME"]}/.ec2",
16
16
  :tmp_path => "/tmp/poolparty",
17
17
  :remote_storage_path => "/var/poolparty",
18
18
  :remote_gem_path => "/var/poolparty/gems",
@@ -33,8 +33,8 @@ module PoolParty
33
33
  default_options({
34
34
  :minimum_instances => 2,
35
35
  :maximum_instances => 5,
36
- :contract_when => "cpu < 0.15",
37
- :expand_when => "cpu > 0.9",
36
+ :contract_when => "cpu < 0.65",
37
+ :expand_when => "cpu > 1.9",
38
38
  :access_key => Base.access_key,
39
39
  :secret_access_key => Base.secret_access_key,
40
40
  :ec2_dir => ENV["EC2_HOME"],
@@ -1,4 +1,4 @@
1
- #!/bin/bash
1
+ #!/bin/sh
2
2
  # Based on puppet High Availability recipe
3
3
  #
4
4
  # http://reductivelabs.com/trac/puppet/wiki/Recipes/HighAvailability
@@ -2,7 +2,7 @@ module PoolParty
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 2
5
- TINY = 56
5
+ TINY = 57
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
data/poolparty.gemspec CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: poolparty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.56
4
+ version: 0.2.57
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ari Lerner
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-11-12 00:00:00 -08:00
12
+ date: 2008-11-13 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -77,6 +77,7 @@ executables:
77
77
  - pool
78
78
  - pool-console
79
79
  - pool-describe
80
+ - pool-init
80
81
  - pool-list
81
82
  - pool-spec
82
83
  - pool-start
@@ -132,6 +133,7 @@ files:
132
133
  - bin/pool
133
134
  - bin/pool-console
134
135
  - bin/pool-describe
136
+ - bin/pool-init
135
137
  - bin/pool-list
136
138
  - bin/pool-spec
137
139
  - bin/pool-start
@@ -73,7 +73,7 @@ describe "CloudResourcer" do
73
73
  @tc.respond_to?(:keypair_path).should == true
74
74
  end
75
75
  it "should set the keypair to the Base.keypair_path" do
76
- @tc.keypair_path.should =~ /#{File.expand_path(Base.base_keypair_path)}/
76
+ @tc.keypair_path.should =~ /\.ec2\/rangerbob/
77
77
  end
78
78
  it "should set the keypair to have the keypair set" do
79
79
  @tc.keypair.should =~ /rangerbob/
@@ -13,7 +13,9 @@ class TestClass
13
13
 
14
14
  def ami;"ami-abc123";end
15
15
  def size; "small";end
16
-
16
+ def verbose
17
+ false
18
+ end
17
19
  def ec2
18
20
  @ec2 ||= EC2::Base.new( :access_key_id => "not_an_access_key", :secret_access_key => "not_a_secret_access_key")
19
21
  end
@@ -32,6 +34,20 @@ describe "ec2 remote base" do
32
34
  end
33
35
  EOE
34
36
  end
37
+ describe "helpers" do
38
+ it "should be able to convert an ec2 ip to a real ip" do
39
+ "ec2-72-44-36-12.compute-1.amazonaws.com".convert_from_ec2_to_ip.should == "72.44.36.12"
40
+ end
41
+ it "should not throw an error if another string is returned" do
42
+ "72.44.36.12".convert_from_ec2_to_ip.should == "72.44.36.12"
43
+ end
44
+ it "should be able to parse the date from the timestamp" do
45
+ "2008-11-13T09:33:09+0000".parse_datetime.should == DateTime.parse("2008-11-13T09:33:09+0000")
46
+ end
47
+ it "should rescue itself and just return the string if it fails" do
48
+ "thisisthedate".parse_datetime.should == "thisisthedate"
49
+ end
50
+ end
35
51
  describe "launching" do
36
52
  before(:each) do
37
53
  @tr.ec2.stub!(:run_instances).and_return true
@@ -11,8 +11,8 @@ describe "Base" do
11
11
  it "should set the user to root" do
12
12
  Base.user.should == "root"
13
13
  end
14
- it "should set the base keypair path to ~/.ec2" do
15
- Base.base_keypair_path.should == "~/.ec2"
14
+ it "should set the base keypair path to $HOME/.ec2" do
15
+ Base.base_keypair_path.should =~ /\.ec2/
16
16
  end
17
17
  it "should set the storage_directory to the tmp directory of the current working directory" do
18
18
  Base.storage_directory.should =~ /tmp/
@@ -121,7 +121,7 @@ def remove_stub_instance_from(o, num)
121
121
  # o.stub!(:remote_instances_list).once.and_return ris
122
122
  end
123
123
  def stub_instance(num=1, status="running", keypair="fake_keypair")
124
- {:name => "node#{num}", :ip => "192.168.0.#{num}", :status => "#{status}", :launching_time => num.minutes.ago, :keypair => "#{keypair}"}
124
+ {:name => "node#{num}", :ip => "192.168.0.#{num}", :status => "#{status}", :launching_time => num.minutes.ago.to_s, :keypair => "#{keypair}"}
125
125
  end
126
126
  def drop_pending_instances_for(o)
127
127
  puts "hi"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auser-poolparty
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.56
4
+ version: 0.2.57
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ari Lerner
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-11-12 00:00:00 -08:00
12
+ date: 2008-11-13 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -77,6 +77,7 @@ executables:
77
77
  - pool
78
78
  - pool-console
79
79
  - pool-describe
80
+ - pool-init
80
81
  - pool-list
81
82
  - pool-spec
82
83
  - pool-start
@@ -132,6 +133,7 @@ files:
132
133
  - bin/pool
133
134
  - bin/pool-console
134
135
  - bin/pool-describe
136
+ - bin/pool-init
135
137
  - bin/pool-list
136
138
  - bin/pool-spec
137
139
  - bin/pool-start