From: Tim Pierce Date: Thu, 25 Sep 2014 19:08:18 +0000 (-0400) Subject: 3901: allow job to be either Hash or Job X-Git-Tag: 1.1.0~2154^2~3 X-Git-Url: https://git.arvados.org/arvados.git/commitdiff_plain/bbaaeabfc2d28c8a24f106b81e6677832cd68b3d 3901: allow job to be either Hash or Job Refactoring to ensure that a component "job" data structure may either be a Hash (parsed directly from the component's JSON representation) or a real Job object retrieved from the database. When rendering a pipeline, parse the :started_at and :finished_at timestamp fields, respectively, if necessary. --- diff --git a/apps/workbench/app/helpers/pipeline_instances_helper.rb b/apps/workbench/app/helpers/pipeline_instances_helper.rb index 7e5324be7a..7c6e5f01ba 100644 --- a/apps/workbench/app/helpers/pipeline_instances_helper.rb +++ b/apps/workbench/app/helpers/pipeline_instances_helper.rb @@ -102,8 +102,16 @@ module PipelineInstancesHelper end if c[:job] and c[:job][:uuid] and job[c[:job][:uuid]] pj[:job] = job[c[:job][:uuid]] + elsif c[:job].is_a?(Hash) + pj[:job] = c[:job] + if pj[:job][:started_at].is_a? String + pj[:job][:started_at] = Time.parse(pj[:job][:started_at]) + end + if pj[:job][:finished_at].is_a? String + pj[:job][:finished_at] = Time.parse(pj[:job][:finished_at]) + end else - pj[:job] = c[:job].is_a?(Hash) ? c[:job] : {} + pj[:job] = {} end pj[:percent_done] = 0 pj[:percent_running] = 0 @@ -160,7 +168,7 @@ module PipelineInstancesHelper pj[:nondeterministic] = pj[:job][:nondeterministic] || c[:nondeterministic] pj[:output] = pj[:job][:output] pj[:output_uuid] = c[:output_uuid] - pj[:finished_at] = (Time.parse(pj[:job][:finished_at]) rescue nil) + pj[:finished_at] = pj[:job][:finished_at] ret << pj end ret diff --git a/apps/workbench/app/views/pipeline_instances/_running_component.html.erb b/apps/workbench/app/views/pipeline_instances/_running_component.html.erb index 1d52e281f6..a10218a98f 100644 --- a/apps/workbench/app/views/pipeline_instances/_running_component.html.erb +++ b/apps/workbench/app/views/pipeline_instances/_running_component.html.erb @@ -18,9 +18,9 @@
<% if current_job[:started_at] %> - <% walltime = ((if current_job.finished_at then current_job.finished_at else Time.now() end) - 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.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 @@ -35,7 +35,7 @@
<% if pj[:output_uuid] %> <%= link_to_if_arvados_object pj[:output_uuid], friendly_name: true %> - <% elsif current_job.andand[:output] %> + <% elsif current_job[:output] %> <%= link_to_if_arvados_object current_job[:output], link_text: "Output of #{pj[:name]}" %> <% else %> No output. @@ -46,7 +46,7 @@ <%= pj[:progress_bar] %>
- <%= form_tag "/jobs/#{current_job.uuid}/cancel", style: "display:inline; padding-left: 1em" do |f| %> + <%= 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"} %>
@@ -56,12 +56,12 @@ <% queuetime = Time.now - current_job[:created_at] %> Queued for <%= render_runtime(queuetime, true) %>. <% begin %> - <% if current_job.queue_position == 0 %> + <% if current_job[:queue_position] == 0 %> This job is next in the queue to run. - <% elsif current_job.queue_position == 1 %> + <% 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. + There are <%= current_job[:queue_position] %> jobs in the queue ahead of this one. <% end %> <% rescue %> <% end %>