X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/7e60563ccd6a241f05271f1b558a43f01e79dedc..61dbc4445159c9140b0744bf5526ce0f71f4f374:/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 new file mode 100644 index 0000000000..889fa1a7f3 --- /dev/null +++ b/apps/workbench/app/models/pipeline_instance_work_unit.rb @@ -0,0 +1,54 @@ +class PipelineInstanceWorkUnit < ProxyWorkUnit + def children + return @my_children if @my_children + + items = [] + + jobs = {} + results = Job.where(uuid: @proxied.job_ids.values).results + results.each do |j| + jobs[j.uuid] = j + end + + components = get(:components) + components.each do |name, c| + if c.is_a?(Hash) + job = c[:job] + if job + if job[:uuid] and jobs[job[:uuid]] + items << jobs[job[:uuid]].work_unit(name) + else + items << JobWorkUnit.new(job, name) + end + else + items << JobWorkUnit.new(c, name) + end + else + @unreadable_children = true + break + end + end + + @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}" + end + + def title + "pipeline" + end +end