31 lines
		
	
	
		
			663 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			663 B
		
	
	
	
		
			Ruby
		
	
	
	
	
	
| require 'db/mongo/models/job_task'
 | |
| require 'workers/worker'
 | |
| 
 | |
| module Devops
 | |
|   module Helpers
 | |
|     class JobWaiter
 | |
|       class TimeoutReached < StandardError; end
 | |
| 
 | |
|       INTERVAL = 5
 | |
| 
 | |
|       def initialize(job_id, timeout=5000)
 | |
|         @job_id, @timeout = job_id, timeout
 | |
|       end
 | |
| 
 | |
|       def wait
 | |
|         (@timeout / INTERVAL).times do
 | |
|           sleep(INTERVAL)
 | |
|           task = Devops::Model::JobTask.find(@job_id)
 | |
|           case task.status
 | |
|           when Worker::STATUS::COMPLETED
 | |
|             return 0
 | |
|           when Worker::STATUS::FAILED
 | |
|             return task.job_result_code
 | |
|           end
 | |
|         end
 | |
|         raise TimeoutReached
 | |
|       end
 | |
|     end
 | |
|   end
 | |
| end
 | 
