X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/c51634cad3c68d0a8400f1b1c47da9eef5307e06..45b556d1a204f694b69ca26d115cd6786ca585f3:/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 18ae9b08cf..6fa409a1ce 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,18 @@ <%# 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,31 +20,36 @@

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

<% if @object.started_at %> - Started at <%= @object.started_at %>. - <% end %> + This pipeline started at <%= render_localized_date(@object.started_at) %>. + It + <% if @object.state == 'Complete' %> + completed in + <% elsif @object.state == 'Failed' %> + failed after + <% else %> + has been active for + <% end %> - <% if @object.state == 'Complete' %> - Completed in - <% elsif @object.state == 'Failed' %> - Failed after - <% else %> - Has been active for - <% end %> + <% walltime = if @object.finished_at then + @object.finished_at - @object.started_at + else + Time.now - @object.started_at + end %> - <% walltime = if @object.started_at - if @object.finished_at - @object.finished_at - @object.started_at + <%= if walltime > runningtime + render_runtime(walltime, true, false) else - Time.now - @object.started_at - end - else - 0 - end - %> - - <%= runtime(walltime, true) %><% if @object.finished_at %> at <%= @object.finished_at %><% end %>. + render_runtime(runningtime, true, 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 %>. + <% walltime = 0%> + <% end %> <% if @object.state == 'Failed' %> Check the Log tab for more detail about why this pipeline failed. @@ -39,201 +57,45 @@

- <% 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]}) %> - + This pipeline <% if @object.state.start_with? 'Running' %> - Has run - <% else %> - Ran + has run + <% else %> + ran <% end %> for - <%= runtime(runningtime, true) %> (<%= runtime(walltime - runningtime, true) %> queued)<% if tasks.size == 0 %>.<% else %> + <% 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 + }.reduce(:+) || 0 %> + <%= render_runtime(runningtime, true, false) %><% if (walltime - runningtime) > 0 %> + (<%= render_runtime(walltime - runningtime, true, false) %> queued)<% end %><% if cputime == 0 %>.<% else %> and used - <% cputime = tasks.map { |task| - puts "started at #{task.started_at}" - if task.started_at - (if task.finished_at then task.finished_at else Time.now() end) - task.started_at - else - 0 - end - }.reduce(:+) %> - <%= runtime(cputime, true) %> + <%= render_runtime(cputime, true, false) %> of CPU time (<%= (cputime/runningtime).round(1) %>⨯ scaling). <% end %>

<%# Components %> -<% render_pipeline_jobs.each_index do |i| %> - <% pj = render_pipeline_jobs[i] %> - <% current_job = pj[:job] if pj[:job] != {} %> -
-
-
-
- - - <% puts current_job.inspect %> +<% + 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 - <% if current_job %> -
- <%= render(partial: 'job_status_label', locals: { j: current_job }) %> -
+ 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? +%> -
- <% if current_job[:started_at] %> - <% walltime = ((if current_job.finished_at then current_job.finished_at else Time.now() end) - current_job.started_at) %> - <% cputime = tasks.map { |task| - if task.started_at and task.job_uuid == current_job.uuid - (if task.finished_at then task.finished_at else Time.now() end) - task.started_at - else - 0 - end - }.reduce(:+) %> - <%= runtime(walltime, false) %> / <%= runtime(cputime, false) %> (<%= (cputime/walltime).round(1) %>⨯) - <% end %> -
- - <% if Job::state(current_job).in? ["Completed", "Failed", "Canceled"] %> -
- <% if pj[:output_uuid] %> - <%= link_to_if_arvados_object pj[:output_uuid] %> - <% elsif current_job.andand[:output] %> - <%= link_to_if_arvados_object current_job[:output], link_text: "Output of #{pj[:name]}" %> - <% else %> - No output. - <% end %> -
- <% elsif Job::state(current_job) == "Running" %> -
- <%= pj[:progress_bar] %> -
-
- <%= form_tag "/jobs/#{current_job.uuid}/cancel", style: "display:inline; padding-left: 1em" do |f| %> - <%= hidden_field_tag :return_to, url_for(@object) %> - <%= button_tag "Cancel", {class: 'btn btn-xs btn-danger', id: "cancel-job-button"} %> -
- <% end %> - <% elsif Job::state(current_job) == "Queued" %> -
- <% queuetime = Time.now - current_job[:created_at] %> - Queued for <%= runtime(queuetime, true) %>. - <% begin %> - <% if current_job.queue_position == 0 %> - This job is next in the queue to run. - <% elsif current_job.queue_position == 1 %> - There is 1 job in the queue ahead of this one. - <% else %> - There are <%= current_job.queue_position %> jobs in the queue ahead of this one. - <% end %> - <% rescue %> - <% end %> -
- <% end %> - <% else %> -
- Not ready -
-<% end %> -
-
-
- -
-
-
- <% current_component = (if current_job then current_job else pj end) %> -
-
- - <% [:script, :repository, :script_version, :supplied_script_version, :nondeterministic].each do |k| %> - - - - - <% end %> - <% if current_component[:runtime_constraints].andand[:docker_image] and current_component[:docker_image_locator] %> - - - - - - - - - <% else %> - - - - - <% end %> -
- <%= k.to_s %>: - - <%= current_component[k] %> -
- docker_image: - - <%= current_component[:runtime_constraints][:docker_image] %> -
- docker_image_locator: - - <%= link_to_if_arvados_object current_component[:docker_image_locator] %> -
- docker_image: - - Not run in Docker -
-
-
- - <% [:uuid, :modified_by_user_uuid, :priority, :created_at, :started_at, :finished_at].each do |k| %> - - - - - <% end %> -
- <%= k.to_s %>: - - <% if k.to_s.end_with? 'uuid' %> - <%= link_to_if_arvados_object current_component[k], friendly_name: true %> - <% elsif k.to_s.end_with? '_at' %> - <%= current_component[k] %> - <% else %> - <%= current_component[k] %> - <% end %> -
-
-
-
-
-

script_parameters:

-
<%= JSON.pretty_generate(current_component[:script_parameters]) rescue nil %>
-
- <% if current_component[:tasks_summary] %> -
- - <% [:done, :running, :failed, :todo].each do |d| %> - - - - - - <% end %> -
<%= 'tasks:' if d == :done %><%= d.to_s %><%= current_component[:tasks_summary][d] %>
-
- <% end %> -
-
-
-
-
+<% pipeline_jobs.each_with_index do |pj, i| %> + <%= render partial: 'running_component', locals: {tasks: tasks, pj: pj, i: i, expanded: false} %> <% end %>