class Condor::Queue

Public Class Methods

[](job_id) click to toggle source
# File lib/condor-job/queue.rb, line 16
def self.[](job_id)
  instance[job_id]
end
load(force = false) click to toggle source
# File lib/condor-job/queue.rb, line 12
def self.load(force = false)
  instance.load(force)
end
new() click to toggle source
# File lib/condor-job/queue.rb, line 24
def initialize
  load
end

Public Instance Methods

[](job_id) click to toggle source
# File lib/condor-job/queue.rb, line 20
def [](job_id)
  @queue.detect{|job| job_id == job.global_job_id.split('#')[1]}
end
load(force = false) click to toggle source
# File lib/condor-job/queue.rb, line 28
def load(force = false)
  @queue = nil if force
  @queue ||= begin
    queue = []
  
    data = `condor_q -global -xml 2>&1`
    n_retries = 0
    while data.include?("condor_collector") # retry!
      data = `condor_q -global -xml 2>&1`
      sleep rand
      (n_retries += 1) < 10 or raise "Could not retrieve the queue!"
    end
  
    xml = Nokogiri::XML("<condor>#{data}</condor>")
    xml.root.css("c").each do |e|
      job = {}
      e.css("a").each do |ee|
        key = ee.attributes["n"].to_s
        if ee.children.first
          val = ee.children.first.text
          job[key.underscore] = val
        end
      end

      queue << QueueEntry.new(job)
    end
    @queue = queue
  end
  @queue
end