right_chimp 2.1.0 → 2.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 527c00b56adb583e1c1ee40c9504276197f2e633
4
- data.tar.gz: 6627803d68014704c0bdc4d99eca8818e6416b1a
3
+ metadata.gz: 8af4200a6b909aada3f2301d06e987d35d2269fc
4
+ data.tar.gz: c0cedcfdf23e22c3f78a28ffc17effecf6dfa657
5
5
  SHA512:
6
- metadata.gz: 4722c753c8f4e7b48922114417a0904000eb368802887acedc69b990094ed6b41c0d155bee89ea1b3065e6a3c4df57e05a1c888d4b844853caabc4f52ebb5983
7
- data.tar.gz: 060c70d07165059dccd5ef98921db61659f0083f50cea41f73feb8990b0058211bbbd3b99f19112090ef46e246b51601b593470a4a73a372c460034aef3007d5
6
+ metadata.gz: 8ae8ebc03931a5e06759f997b6f8a563ff845bc7eea0ef8026b4fc52541eb4da58c3709bbd6d10ef8504adbd6be1e4a9be739b8931b4df07b71c3f9bf54dfb3c
7
+ data.tar.gz: 76f795bbf6f71e59490481eaab1d743a435405d0181124fb77273b9f112795cbc2524004e51bc3974475e7218c4eae8a1267ab7c90635ada3e660a7e381345ae
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- right_chimp (2.0.2)
4
+ right_chimp (2.1.2)
5
5
  highline (~> 1.7.2)
6
6
  nokogiri (~> 1.5.9)
7
7
  progressbar (~> 0.11.0)
@@ -1062,6 +1062,7 @@ module Chimp
1062
1062
  Chimp.set_job_uuid(self.job_uuid)
1063
1063
 
1064
1064
  Log.debug "[#{Chimp.get_job_uuid}] Processing task"
1065
+ # Add to our "processing" counter
1065
1066
 
1066
1067
  Log.debug "[#{Chimp.get_job_uuid}] Trying to get array_info" unless Chimp.failure
1067
1068
  get_array_info unless Chimp.failure
@@ -1075,6 +1076,11 @@ module Chimp
1075
1076
  Log.debug "[#{Chimp.get_job_uuid}] Trying to get executable_info" unless Chimp.failure
1076
1077
  get_executable_info unless Chimp.failure
1077
1078
 
1079
+ # All elements of task have been processed
1080
+ ChimpDaemon.instance.semaphore.synchronize do
1081
+ ChimpDaemon.instance.proc_counter -= 1
1082
+ end
1083
+
1078
1084
  if Chimp.failure
1079
1085
 
1080
1086
  Log.error "##################################################"
@@ -7,7 +7,8 @@
7
7
  module Chimp
8
8
  class ChimpDaemon
9
9
 
10
- attr_accessor :verbose, :debug, :port, :concurrency, :delay, :retry_count, :dry_run, :logfile, :chimp_queue
10
+ attr_accessor :verbose, :debug, :port, :concurrency, :delay, :retry_count,
11
+ :dry_run, :logfile, :chimp_queue, :proc_counter, :semaphore
11
12
  attr_reader :queue, :running
12
13
 
13
14
  include Singleton
@@ -23,6 +24,9 @@ module Chimp
23
24
  @running = false
24
25
  @queue = ChimpQueue.instance
25
26
  @chimp_queue = Queue.new
27
+ @semaphore = Mutex.new
28
+
29
+ @proc_counter= 0
26
30
 
27
31
  #Connect to the API
28
32
  Connection.instance
@@ -402,6 +406,10 @@ module Chimp
402
406
  # end
403
407
  if verb == 'process' or verb == 'add'
404
408
  ChimpDaemon.instance.chimp_queue.push payload
409
+ ChimpDaemon.instance.semaphore.synchronize do
410
+ ChimpDaemon.instance.proc_counter +=1
411
+ end
412
+ Log.debug "Tasks in the processing queue: #{ChimpDaemon.instance.proc_counter.to_s}"
405
413
  id = 0
406
414
  elsif verb == 'update'
407
415
  puts "UPDATE"
@@ -521,6 +529,23 @@ module Chimp
521
529
  template_path = 'lib/right_chimp/templates'
522
530
  end
523
531
 
532
+ #
533
+ # Check if we are asked for stats
534
+ #
535
+ if req.request_uri.path =~ /stats/
536
+ queue = ChimpQueue.instance
537
+ stats = ""
538
+ stats << "running: #{queue.get_jobs_by_status(:running).size} / "
539
+ stats << "failed: #{queue.get_jobs_by_status(:error).size} / "
540
+ stats << "done: #{queue.get_jobs_by_status(:done).size} / "
541
+ stats << "processing: #{ChimpDaemon.instance.proc_counter.to_s} / "
542
+ stats << "\n"
543
+
544
+ resp.body = stats
545
+
546
+ raise WEBrick::HTTPStatus::OK
547
+ end
548
+
524
549
  #
525
550
  # Check for static CSS files and serve them
526
551
  #
@@ -554,6 +579,7 @@ module Chimp
554
579
  count_jobs_holding = queue.get_jobs_by_status(:holding).size
555
580
  count_jobs_failed = queue.get_jobs_by_status(:error).size
556
581
  count_jobs_done = queue.get_jobs_by_status(:done).size
582
+ count_jobs_processing = queue.get_jobs_by_status(:processing).size
557
583
 
558
584
  resp.body = @template.result(binding)
559
585
  raise WEBrick::HTTPStatus::OK
@@ -120,6 +120,7 @@ module Chimp
120
120
  def Connection.api16_call(query)
121
121
 
122
122
  Thread.current[:retry] = true
123
+ Thread.current[:response] = nil
123
124
  retries = 5
124
125
  attempts = 0
125
126
  sleep_for = 20
@@ -151,24 +152,21 @@ module Chimp
151
152
 
152
153
  Log.debug "[#{Chimp.get_job_uuid}] Attempt # #{attempts+1} at querying the API" unless attempts == 0
153
154
 
154
- time = Benchmark.measure do
155
- begin
156
- Log.debug "[#{Chimp.get_job_uuid}] HTTP Making http request"
157
- Thread.current[:response] = http.request(get)
158
- Log.debug "[#{Chimp.get_job_uuid}] HTTP Request complete"
159
- attempts += 1
160
- rescue Exception => e
161
- Log.error "[#{Chimp.get_job_uuid}] Exception when making the HTTP request"
162
- end
155
+ Log.debug "[#{Chimp.get_job_uuid}] HTTP Making http request"
156
+ start_time = Time.now
157
+ Thread.current[:response] = http.request(get)
158
+ end_time = Time.now
159
+ total_time = end_time - start_time
163
160
 
164
- end
161
+ Log.debug "[#{Chimp.get_job_uuid}] HTTP Request complete"
162
+ attempts += 1
165
163
 
166
- Log.debug "[#{Chimp.get_job_uuid}] API Request time: #{time.real} seconds"
164
+ Log.debug "[#{Chimp.get_job_uuid}] API Request time: #{total_time} seconds"
167
165
  Log.debug "[#{Chimp.get_job_uuid}] API Query was: #{query}"
168
166
 
169
167
  # Validate API response
170
168
  Log.debug "[#{Chimp.get_job_uuid}] Validating..."
171
- instances = validate_response(Thread.current[:response], query)
169
+ instances = validate_response(Thread.current[:response], query)
172
170
  else
173
171
  # We dont retry, exit the loop.
174
172
  Log.debug "[#{Chimp.get_job_uuid}] Not retrying, exiting the loop."
@@ -188,24 +186,21 @@ module Chimp
188
186
  raise "[#{Chimp.get_job_uuid}] Api call failed more than #{retries} times."
189
187
  end
190
188
 
189
+ if instances.nil?
190
+ Log.error "[#{Chimp.get_job_uuid}] instances is nil!"
191
+ else
192
+ Log.debug "[#{Chimp.get_job_uuid}] API matched #{instances.count} instances"
193
+ end
194
+
191
195
  rescue Exception => e
192
196
  Log.error "[#{Chimp.get_job_uuid}] #{e.message}"
193
197
  Log.error "[#{Chimp.get_job_uuid}] Catched exception on http request to the api, retrying"
194
198
 
195
- # Failure to be set only on maximum retries
196
- # Chimp.set_failure(true)
197
-
198
199
  instances = []
199
200
  attempts += 1
200
201
  retry
201
202
  end
202
203
 
203
- Log.debug "[#{Chimp.get_job_uuid}] API matched #{instances.count} instances" unless instances.nil?
204
-
205
- if instances.nil?
206
- Log.error "[#{Chimp.get_job_uuid}] instances is nil!"
207
- end
208
-
209
204
  return instances
210
205
  end
211
206
 
@@ -47,6 +47,9 @@ SINCE 2012</p>
47
47
  </tr><tr>
48
48
  <td>Jobs completed:</td>
49
49
  <td><%= count_jobs_done %>
50
+ </tr><tr>
51
+ <td>Jobs being processed:</td>
52
+ <td><%= ChimpDaemon.instance.proc_counter.to_s %>
50
53
  </tr>
51
54
  </table>
52
55
 
@@ -112,7 +115,7 @@ jobs.each do |j|
112
115
 
113
116
  status = j.status
114
117
  id = j.job_id
115
-
118
+
116
119
  server_name = CGI::escapeHTML(j.server.params['nickname']) if j.server
117
120
 
118
121
  if j.exec
@@ -171,4 +174,3 @@ jobs.each do |j|
171
174
  </div>
172
175
 
173
176
  </body></html>
174
-
@@ -1,3 +1,3 @@
1
1
  module Chimp
2
- VERSION = "2.1.0"
2
+ VERSION = "2.1.2"
3
3
  end
data/lib/right_chimp.rb CHANGED
@@ -18,9 +18,6 @@ require 'right_api_client'
18
18
  require 'rest-client'
19
19
  require 'logger'
20
20
 
21
- require "benchmark"
22
-
23
-
24
21
  module Chimp
25
22
  require 'right_chimp/version'
26
23
  require 'right_chimp/Chimp'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: right_chimp
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.0
4
+ version: 2.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - RightScale Operations
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-22 00:00:00.000000000 Z
11
+ date: 2015-05-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake