X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/d44a5c508cfa664134daad806d7be9a7cb0bd6ee..0561bd0c3c07257fd58ded6c7cfa5feeae97af57:/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 acaf9d34f4..1cd9445a5a 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,5 +1,22 @@ +<%# Copyright (C) The Arvados Authors. All rights reserved. + +SPDX-License-Identifier: AGPL-3.0 %> + <%# Summary %> +
+ Current state: + <% if @object.state == "RunningOnServer" %> + Active + <% else %> + <%= @object.state %> + <% end %> +   +
+ +<% pipeline_jobs = render_pipeline_jobs %> +<% job_uuids = pipeline_jobs.map { |j| j[:job].andand[:uuid] }.compact %> + <% if @object.state == 'Paused' %>

This pipeline is paused. Jobs that are @@ -7,13 +24,12 @@

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

<% if @object.started_at %> This pipeline started at <%= render_localized_date(@object.started_at) %>. - It + It <% if @object.state == 'Complete' %> completed in <% elsif @object.state == 'Failed' %> @@ -27,11 +43,11 @@ else Time.now - @object.started_at end %> - - <%= if walltime > runningtime - render_runtime(walltime, true, false) - else - render_runtime(runningtime, true, false) + + <%= if walltime > runningtime + render_runtime(walltime, false) + else + 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 %>. @@ -51,23 +67,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 %> -<% render_pipeline_jobs.each_with_index do |pj, i| %> - <%= render partial: 'running_component', locals: {tasks: tasks, pj: pj, i: i, expanded: false} %> +<% + 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: {pj: pj, i: i, expanded: false, pipeline_display: true} %> <% end %>