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