# the job's current state")
c_already_finished = (c[:job] &&
c[:job][:uuid] &&
- ["Complete", "Failed", "Cancelled"].include? c[:job][:state])
+ ["Complete", "Failed", "Cancelled"].include?(c[:job][:state]))
if !c[:job] and
c[:script_parameters].select { |pname, p| p.is_a? Hash and p[:output_of]}.empty?
# No job yet associated with this component and is component inputs
:owner_uuid => owner_uuid,
:is_locked_by_uuid => (@options[:run_jobs_here] ? owner_uuid : nil),
:submit_id => my_submit_id,
- :state => (if @options[:run_jobs_here] then "Running" else "Queued")
+ :state => (if @options[:run_jobs_here] then "Running" else "Queued" end)
}, {
# This is the right place to put these attributes when
# dealing with new API servers.
end
if c[:job] and c[:job][:uuid]
- if c[:job][:state] == "Running"
- # Job is running so update copy of job record
+ if ["Running", "Queued"].include?(c[:job][:state])
+ # Job is running (or may be soon) so update copy of job record
c[:job] = JobCache.get(c[:job][:uuid])
end
elsif c[:job][:state] == "Running"
# Job is still running
moretodo = true
- elsif c[:job][:cancelled_at]
+ elsif c[:job][:state] == "Cancelled"
debuglog "component #{cname} job #{c[:job][:uuid]} cancelled."
+ moretodo = false
+ elsif c[:job][:state] == "Failed"
+ moretodo = false
end
end
end
end
end
- ended = @components.map { |cname, c|
- if c[:job] and ["Complete", "Failed", "Cancelled"].include? c[:job][:state] then 1 else 0 end
- }.reduce(:+) || 0
-
- succeeded = @components.map { |cname, c|
- if c[:job] and ["Complete"].include? c[:job][:state] then 1 else 0 end
- }.reduce(:+) || 0
-
- failed = @components.map { |cname, c|
- if c[:job] and ["Failed", "Cancelled"].include? c[:job][:state] then 1 else 0 end
- }.reduce(:+) || 0
+ c_in_state = @components.values.group_by { |c|
+ c[:job] and c[:job][:state]
+ }
+ succeeded = c_in_state["Complete"].count
+ failed = c_in_state["Failed"].count + c_in_state["Cancelled"].count
+ ended = succeeded + failed
success = (succeeded == @components.length)
@components.each do |cname, c|
jstatus = if !c[:job]
"-"
- elsif c[:job][:state] == "Running"
- "#{c[:job][:tasks_summary].inspect}"
- elsif c[:job][:state] == "Complete"
- c[:job][:output]
- elsif c[:job][:state] == "Cancelled"
- "cancelled #{c[:job][:cancelled_at]}"
- elsif c[:job][:state] == "Failed"
- "failed #{c[:job][:finished_at]}"
- elsif c[:job][:state] == "Queued"
- "queued #{c[:job][:created_at]}"
+ else case c[:job][:state]
+ when "Running"
+ "#{c[:job][:tasks_summary].inspect}"
+ when "Complete"
+ c[:job][:output]
+ when "Cancelled"
+ "cancelled #{c[:job][:cancelled_at]}"
+ when "Failed"
+ "failed #{c[:job][:finished_at]}"
+ when "Queued"
+ "queued #{c[:job][:created_at]}"
+ end
end
f.puts "#{cname.to_s.ljust namewidth} #{c[:job] ? c[:job][:uuid] : '-'.ljust(27)} #{jstatus}"
end