class Condor::Pool
Attributes
jobs[R]
waiting[R]
Public Class Methods
new()
click to toggle source
# File lib/condor-job/pool.rb, line 6 def initialize @jobs = [] @waiting = {} end
Public Instance Methods
add(cmd, dep = nil, priority = nil, dir = nil)
click to toggle source
run command, given job dependencies
# File lib/condor-job/pool.rb, line 12 def add(cmd, dep = nil, priority = nil, dir = nil) return if !cmd or cmd.empty? c = Job.new(cmd, :priority => priority, :directory => dir) if [dep].flatten.compact.empty? c.run else @waiting[c] = [dep].flatten.compact end @jobs << c update return c end
alive?()
click to toggle source
# File lib/condor-job/pool.rb, line 46 def alive? return true if !@waiting.empty? @jobs.any?(&:done?) end
finalize()
click to toggle source
# File lib/condor-job/pool.rb, line 37 def finalize while alive? sleep 2 update end @jobs.each{|x| x.cleanup} @jobs = [] end
update()
click to toggle source
# File lib/condor-job/pool.rb, line 25 def update Condor::Queue.load(true) @jobs.each do |j| j.update next if !(deps = @waiting[j]) if deps.all?(&:done?) j.run @waiting.delete(j) end end end