+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
module PipelineInstancesHelper
def pipeline_jobs object=nil
timestamps << [started_at, finished_at]
end
- # Accept a list of objects with [:started_at] and [:finshed_at] keys and
+ # Accept a list of objects with [:started_at] and [:finished_at] keys and
# merge overlapping ranges to compute the time spent running after periods of
# overlapping execution are factored out.
def determine_wallclock_runtime jobs
timestamps = []
jobs.each do |j|
- insert_at = 0
- started_at = j[:started_at]
- finished_at = (if j[:finished_at] then j[:finished_at] else Time.now end)
+ started_at = (j.started_at if j.respond_to?(:started_at)) || (j[:started_at] if j.is_a?(Hash))
+ finished_at = (j.finished_at if j.respond_to?(:finished_at)) || (j[:finished_at] if j.is_a?(Hash)) || Time.now
if started_at
timestamps = merge_range timestamps, started_at, finished_at
end
c[:job][:uuid] if c.is_a?(Hash) and c[:job].is_a?(Hash)
}.compact
job = {}
- Job.where(uuid: jobuuids).each do |j|
+ Job.where(uuid: jobuuids).with_count("none").each do |j|
job[j[:uuid]] = j
end
end
else
if step[:progress] and
- (re = step[:progress].match /^(\d+)\+(\d+)\/(\d+)$/)
+ (re = step[:progress].match(/^(\d+)\+(\d+)\/(\d+)$/))
pj[:progress] = (((re[1].to_f + re[2].to_f/2) / re[3].to_f) rescue 0.5)
else
pj[:progress] = 0.0