X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/31e1d10eb4a54b13f55b3c9638f46032be633ff9..1ab33aed37fdcd448fe224375951089282901c48:/apps/workbench/app/views/pipeline_instances/_show_components_running.html.erb diff --git a/apps/workbench/app/views/pipeline_instances/_show_components_running.html.erb b/apps/workbench/app/views/pipeline_instances/_show_components_running.html.erb index d99ac23ab8..60d4c2abc2 100644 --- a/apps/workbench/app/views/pipeline_instances/_show_components_running.html.erb +++ b/apps/workbench/app/views/pipeline_instances/_show_components_running.html.erb @@ -1,3 +1,7 @@ +<%# Copyright (C) The Arvados Authors. All rights reserved. + +SPDX-License-Identifier: AGPL-3.0 %> + <%# Summary %>
@@ -20,7 +24,6 @@

<% end %> -<% tasks = JobTask.filter([['job_uuid', 'in', job_uuids]]).results %> <% runningtime = determine_wallclock_runtime(pipeline_jobs.map {|j| j[:job]}.compact) %>

@@ -31,6 +34,8 @@ completed in <% elsif @object.state == 'Failed' %> failed after + <% elsif @object.state == 'Cancelled' %> + was cancelled after <% else %> has been active for <% end %> @@ -42,9 +47,9 @@ end %> <%= if walltime > runningtime - render_runtime(walltime, true, false) + render_runtime(walltime, false) else - render_runtime(runningtime, true, false) + render_runtime(runningtime, false) end %><% if @object.finished_at %> at <%= render_localized_date(@object.finished_at) %><% end %>. <% else %> This pipeline is <%= if @object.state.start_with? 'Running' then 'active' else @object.state.downcase end %>. @@ -64,23 +69,39 @@ ran <% end %> for - <% cputime = tasks.map { |task| - if task.started_at - (if task.finished_at then task.finished_at else Time.now() end) - task.started_at - else - 0 - end + <% + cputime = pipeline_jobs.map { |j| + if j[:job][:started_at] + (j[:job][:runtime_constraints].andand[:min_nodes] || 1).to_i * ((j[:job][:finished_at] || Time.now()) - j[:job][:started_at]) + else + 0 + end }.reduce(:+) || 0 %> - <%= render_runtime(runningtime, true, false) %><% if (walltime - runningtime) > 0 %> - (<%= render_runtime(walltime - runningtime, true, false) %> queued)<% end %><% if cputime == 0 %>.<% else %> + <%= render_runtime(runningtime, false) %><% if (walltime - runningtime) > 0 %> + (<%= render_runtime(walltime - runningtime, false) %> queued)<% end %><% if cputime == 0 %>.<% else %> and used - <%= render_runtime(cputime, true, false) %> - of CPU time (<%= (cputime/runningtime).round(1) %>⨯ scaling). + <%= render_runtime(cputime, false) %> + of node allocation time (<%= (cputime/runningtime).round(1) %>⨯ scaling). <% end %>

<%# Components %> +<% + job_uuids = pipeline_jobs.collect {|j| j[:job][:uuid]}.compact + if job_uuids.any? + resource_class = resource_class_for_uuid(job_uuids.first, friendly_name: true) + preload_objects_for_dataclass resource_class, job_uuids + end + + job_collections = pipeline_jobs.collect {|j| j[:job][:output]}.compact + job_collections.concat pipeline_jobs.collect {|j| j[:job][:docker_image_locator]}.uniq.compact + job_collections_pdhs = job_collections.select {|x| !(m = CollectionsHelper.match(x)).nil?}.uniq.compact + job_collections_uuids = job_collections - job_collections_pdhs + preload_collections_for_objects job_collections_uuids if job_collections_uuids.any? + preload_for_pdhs job_collections_pdhs if job_collections_pdhs.any? +%> + <% pipeline_jobs.each_with_index do |pj, i| %> - <%= render partial: 'running_component', locals: {tasks: tasks, pj: pj, i: i, expanded: false} %> + <%= render partial: 'running_component', locals: {pj: pj, i: i, expanded: false, pipeline_display: true} %> <% end %>