X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c400bf1e7a52d5557c2031bdf2c8de9957425577..e20590d485505f58f7745d74a311ca539c9be940:/apps/workbench/app/models/pipeline_instance_work_unit.rb diff --git a/apps/workbench/app/models/pipeline_instance_work_unit.rb b/apps/workbench/app/models/pipeline_instance_work_unit.rb index bc2b3e77a0..1d75f58433 100644 --- a/apps/workbench/app/models/pipeline_instance_work_unit.rb +++ b/apps/workbench/app/models/pipeline_instance_work_unit.rb @@ -1,3 +1,7 @@ +# Copyright (C) The Arvados Authors. All rights reserved. +# +# SPDX-License-Identifier: AGPL-3.0 + class PipelineInstanceWorkUnit < ProxyWorkUnit def children return @my_children if @my_children @@ -5,7 +9,7 @@ class PipelineInstanceWorkUnit < ProxyWorkUnit items = [] jobs = {} - results = Job.where(uuid: @proxied.job_ids.values).results + results = Job.where(uuid: @proxied.job_ids.values).with_count("none").results results.each do |j| jobs[j.uuid] = j end @@ -18,10 +22,10 @@ class PipelineInstanceWorkUnit < ProxyWorkUnit if job[:uuid] and jobs[job[:uuid]] items << jobs[job[:uuid]].work_unit(name) else - items << JobWorkUnit.new(job, name) + items << JobWorkUnit.new(job, name, uuid) end else - items << JobWorkUnit.new(c, name) + items << JobWorkUnit.new(c, name, uuid) end else @unreadable_children = true @@ -32,6 +36,17 @@ class PipelineInstanceWorkUnit < ProxyWorkUnit @my_children = items end + def outputs + items = [] + components = get(:components) + components.each do |name, c| + if c.is_a?(Hash) + items << c[:output_uuid] if c[:output_uuid] + end + end + items + end + def uri uuid = get(:uuid) "/pipeline_instances/#{uuid}" @@ -40,4 +55,26 @@ class PipelineInstanceWorkUnit < ProxyWorkUnit def title "pipeline" end + + def template_uuid + get(:pipeline_template_uuid) + end + + def state_label + if get(:state) != "Failed" + return super + end + if get(:components_summary).andand[:failed].andand > 0 + return super + end + # Show "Cancelled" instead of "Failed" if there are no failed + # components. #12840 + get(:components).each do |_, c| + jstate = c[:job][:state] rescue nil + if jstate == "Failed" + return "Failed" + end + end + "Cancelled" + end end