auser-poolparty 0.2.40 → 0.2.41

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/Manifest.txt CHANGED
@@ -336,6 +336,7 @@ lib/poolparty/modules/pretty_printer.rb
336
336
  lib/poolparty/modules/resourcing_dsl.rb
337
337
  lib/poolparty/modules/s3_string.rb
338
338
  lib/poolparty/modules/safe_instance.rb
339
+ lib/poolparty/modules/thread_pool.rb
339
340
  lib/poolparty/monitors/base_monitor.rb
340
341
  lib/poolparty/monitors/monitors/cpu_monitor.rb
341
342
  lib/poolparty/monitors/monitors/memory_monitor.rb
@@ -56,19 +56,21 @@ module PoolParty
56
56
  # Custom run puppet to minimize footprint
57
57
  # TODO: Update the offsetted times
58
58
  execute_on_master do
59
- has_cron(:name => "puppetd runner", :user => Base.user, :minute => "*/15") do
59
+ has_cron(:name => "puppetd runner", :user => Base.user, :minute => "*/5") do
60
+ requires get_gempackage("poolparty-latest")
60
61
  command(PoolParty::Remote::RemoteInstance.puppet_master_rerun_command)
61
62
  end
62
63
  end
63
64
  execute_on_node do
64
65
  has_cron(:name => "puppetd runner", :user => Base.user, :minute => "*/5") do
66
+ requires get_gempackage("poolparty-latest")
65
67
  command(PoolParty::Remote::RemoteInstance.puppet_rerun_commad)
66
68
  end
67
69
  end
68
70
 
69
71
  # These are all requirements on the master
70
72
  execute_on_master do
71
- has_cron({:name => "maintain script", :command => ". /etc/profile && which cloud-maintain | /bin/sh", :minute => "*/3"})
73
+ has_cron({:name => "maintain script", :command => ". /etc/profile && which cloud-maintain | /bin/sh", :minute => "*/3", :requires => get_gempackage("poolparty-latest")})
72
74
  # TODO: Update this so it only runs when needed
73
75
  has_exec(:name => "start master messenger", :command => ". /etc/profile && server-start-master", :requires => [get_gempackage("poolparty-latest"), get_exec("build_messenger")], :onlyif => "ps aux | grep beam | grep master")
74
76
 
@@ -25,7 +25,7 @@ class String
25
25
  self.split("::")[-1].downcase rescue self
26
26
  end
27
27
  def sanitize
28
- self.gsub(/[\.\/]*/, '')
28
+ self.gsub(/[ \.\/]*/, '')
29
29
  end
30
30
  def nice_runnable(quite=true)
31
31
  self.split(/ && /).join("\n")
@@ -300,6 +300,7 @@ touch /etc/apt/sources.list
300
300
  echo 'deb http://mirrors.kernel.org/ubuntu hardy main universe' >> /etc/apt/sources.list
301
301
  aptitude update -y #{unix_hide_string} <<heredoc
302
302
  Y
303
+
303
304
  heredoc
304
305
  aptitude autoclean #{unix_hide_string}
305
306
  fi
@@ -108,17 +108,14 @@ wget http://rubyforge.org/frs/download.php/45546/rubyforge-1.0.1.gem -O rubyforg
108
108
  wget http://rubyforge.org/frs/download.php/43954/rake-0.8.3.gem -O rake.gem 2>&1
109
109
  wget http://rubyforge.org/frs/download.php/45589/sexp_processor-3.0.0.gem -O sexp_processor.gem 2>&1
110
110
  wget http://github.com/auser/poolparty/tree/master%2Fpkg%2Fpoolparty-latest.gem?raw=true -O poolparty-latest.gem 2>&1
111
- wget http://rubyforge.org/frs/download.php/43666/amazon-ec2-0.3.1.gem -O grempe-amazon-ec2.gem 2>&1
111
+ wget http://rubyforge.org/frs/download.php/43666/amazon-ec2-0.3.1.gem -O amazon-ec2.gem 2>&1
112
112
 
113
113
  #{
114
114
  %w(rake lockfile rubyforge hoe ZenTest sexp_processor flexmock logging activesupport
115
- RubyInline ParseTree ruby2ruby xml-simple poolparty-latest grempe-amazon-ec2).map do |dep|
116
- "gem install --ignore-dependencies -y --no-ri --no-rdoc #{dep}.gem"
115
+ RubyInline ParseTree ruby2ruby xml-simple poolparty-latest amazon-ec2).map do |dep|
116
+ "gem install --ignore-dependencies -y --no-ri --no-rdoc #{dep}.gem #{unix_hide_string}"
117
117
  end.join("\n")
118
118
  }
119
-
120
- # gem install -y --no-ri --no-rdoc --source http://gems.github.com grempe-amazon-ec2
121
- # gem install -y --no-ri --no-rdoc --source http://gems.github.com auser-poolparty
122
119
  EOE
123
120
  end
124
121
 
@@ -127,11 +124,11 @@ wget http://rubyforge.org/frs/download.php/43666/amazon-ec2-0.3.1.gem -O grempe-
127
124
  def start_puppetmaster
128
125
  <<-EOS
129
126
  . /etc/profile
130
- ps aux | grep puppetmaster | awk '{print $2}' | xargs kill
131
- /etc/init.d/puppetmaster stop
127
+ /etc/init.d/puppetmaster stop #{unix_hide_string}
128
+ ps aux | grep puppetmaster | awk '{print $2}' | xargs kill #{unix_hide_string} # just in case
132
129
  rm -rf /etc/puppet/ssl
133
- puppetmasterd --verbose
134
- /etc/init.d/puppetmaster start
130
+ # Start it back up
131
+ /etc/init.d/puppetmaster start #{unix_hide_string}
135
132
  EOS
136
133
  end
137
134
 
@@ -167,7 +164,7 @@ cp #{Base.remote_storage_path}/poolparty.pp /etc/puppet/manifests/classes/poolpa
167
164
 
168
165
  def restart_puppetd
169
166
  <<-EOS
170
- . /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master 2>&1 > /dev/null
167
+ . /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master #{unix_hide_string}
171
168
  EOS
172
169
  end
173
170
  end
@@ -25,7 +25,7 @@ module PoolParty
25
25
  def setup_configs
26
26
  <<-EOS
27
27
  echo "#{open(File.join(template_directory, "puppet.conf")).read}" > /etc/puppet/puppet.conf
28
- /etc/init.d/puppetmaster stop
28
+ /etc/init.d/puppetmaster stop #{unix_hide_string}
29
29
  # /usr/bin/puppetrerun
30
30
  EOS
31
31
  end
@@ -34,8 +34,7 @@ module PoolParty
34
34
  # puppetd --listen --fqdn #{@instance.name}
35
35
  def start_puppet
36
36
  <<-EOS
37
- . /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master 2>&1 > /dev/null
38
- . /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master 2>&1 > /dev/null &
37
+ . /etc/profile && /usr/sbin/puppetd --onetime --no-daemonize --logdest syslog --server master #{unix_hide_string}
39
38
  EOS
40
39
  end
41
40
 
@@ -0,0 +1,107 @@
1
+ require 'thread'
2
+ begin
3
+ require 'fasttread'
4
+ rescue LoadError
5
+ $stderr.puts "Using the ruby-core thread implementation"
6
+ end
7
+
8
+ class ThreadPool
9
+ class Worker
10
+ def initialize(thread_queue)
11
+ @mutex = Mutex.new
12
+ @cv = ConditionVariable.new
13
+ @queue = thread_queue
14
+ @running = true
15
+ @thread = Thread.new do
16
+ @mutex.synchronize do
17
+ while @running
18
+ @cv.wait(@mutex)
19
+ block = get_block
20
+ if block
21
+ @mutex.unlock
22
+ block.call
23
+ @mutex.lock
24
+ reset_block
25
+ end
26
+ @queue << self
27
+ end
28
+ end
29
+ end
30
+ end
31
+
32
+ def name
33
+ @thread.inspect
34
+ end
35
+
36
+ def get_block
37
+ @block
38
+ end
39
+
40
+ def set_block(block)
41
+ @mutex.synchronize do
42
+ raise RuntimeError, "Thread already busy." if @block
43
+ @block = block
44
+ # Signal the thread in this class, that there's a job to be done
45
+ @cv.signal
46
+ end
47
+ end
48
+
49
+ def reset_block
50
+ @block = nil
51
+ end
52
+
53
+ def busy?
54
+ @mutex.synchronize { !@block.nil? }
55
+ end
56
+
57
+ def stop
58
+ @mutex.synchronize do
59
+ @running = false
60
+ @cv.signal
61
+ end
62
+ @thread.join
63
+ end
64
+ end
65
+
66
+ attr_accessor :max_size
67
+
68
+ def initialize(max_size = 10)
69
+ @max_size = max_size
70
+ @queue = Queue.new
71
+ @workers = []
72
+ end
73
+
74
+ def size
75
+ @workers.size
76
+ end
77
+
78
+ def busy?
79
+ @queue.size < @workers.size
80
+ end
81
+
82
+ def shutdown
83
+ @workers.each { |w| w.stop }
84
+ @workers = []
85
+ end
86
+
87
+ alias :join :shutdown
88
+
89
+ def process(block=nil,&blk)
90
+ block = blk if block_given?
91
+ worker = get_worker
92
+ worker.set_block(block)
93
+ end
94
+
95
+ private
96
+
97
+ def get_worker
98
+ if !@queue.empty? or @workers.size == @max_size
99
+ return @queue.pop
100
+ else
101
+ worker = Worker.new(@queue)
102
+ @workers << worker
103
+ worker
104
+ end
105
+ end
106
+
107
+ end
@@ -194,11 +194,9 @@ module PoolParty
194
194
  reset!
195
195
  wait "20.seconds" # Give some time for ssh to startup
196
196
  @num_instances = nonmaster_nonterminated_instances.size
197
- last_instances = nonmaster_nonterminated_instances[(@num_instances - @num)...(@num_instances)]
197
+ last_instances = nonmaster_nonterminated_instances[(@num_instances - (@num + 1))..(@num_instances)]
198
198
  last_instances.each do |inst|
199
- vputs "Provisioning #{inst.name}"
200
- cmd = ". /etc/profile && cloud-provision -i #{inst.name.gsub(/node/, '')} #{unix_hide_string} &"
201
- Kernel.system cmd
199
+ PoolParty::Provisioner.provision_slave(inst, self, false)
202
200
  end
203
201
  PoolParty::Provisioner.reconfigure_master(self, force)
204
202
  after_launched
@@ -2,7 +2,7 @@ module PoolParty
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 0
4
4
  MINOR = 2
5
- TINY = 40
5
+ TINY = 41
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.40
4
+ version: 0.2.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ari Lerner
@@ -439,6 +439,7 @@ files:
439
439
  - lib/poolparty/modules/resourcing_dsl.rb
440
440
  - lib/poolparty/modules/s3_string.rb
441
441
  - lib/poolparty/modules/safe_instance.rb
442
+ - lib/poolparty/modules/thread_pool.rb
442
443
  - lib/poolparty/monitors/base_monitor.rb
443
444
  - lib/poolparty/monitors/monitors/cpu_monitor.rb
444
445
  - lib/poolparty/monitors/monitors/memory_monitor.rb
@@ -233,7 +233,8 @@ describe "Remote" do
233
233
  end
234
234
  it "should call a new slave provisioner" do
235
235
  @tc.stub!(:should_expand_cloud?).once.and_return true
236
- Kernel.should_receive(:system).with(". /etc/profile && cloud-provision -i 5 2>&1 > /dev/null &").and_return true
236
+ PoolParty::Provisioner.should_receive(:provision_slave).at_least(1)
237
+ # Kernel.should_receive(:system).with(". /etc/profile && cloud-provision -i 5 2>&1 > /dev/null &").and_return true
237
238
  end
238
239
  it "should call reconfigure on the master to pick up the new slave" do
239
240
  @tc.stub!(:should_expand_cloud?).once.and_return true
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.40
4
+ version: 0.2.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ari Lerner
@@ -439,6 +439,7 @@ files:
439
439
  - lib/poolparty/modules/resourcing_dsl.rb
440
440
  - lib/poolparty/modules/s3_string.rb
441
441
  - lib/poolparty/modules/safe_instance.rb
442
+ - lib/poolparty/modules/thread_pool.rb
442
443
  - lib/poolparty/monitors/base_monitor.rb
443
444
  - lib/poolparty/monitors/monitors/cpu_monitor.rb
444
445
  - lib/poolparty/monitors/monitors/memory_monitor.rb