+ def show_runtime
+ walltime = 0
+ running_time = runningtime
+ if started_at
+ walltime = if finished_at then (finished_at - started_at) else (Time.now - started_at) end
+ end
+ resp = '<p>'
+
+ if started_at
+ resp << "This #{title} started at "
+ resp << ApplicationController.helpers.render_localized_date(started_at)
+ resp << ". It "
+ if state_label == 'Complete'
+ resp << "completed in "
+ elsif state_label == 'Failed'
+ resp << "failed after "
+ elsif state_label == 'Cancelled'
+ resp << "was cancelled after "
+ else
+ resp << "has been active for "
+ end
+
+ resp << ApplicationController.helpers.render_time(walltime, false)
+
+ if finished_at
+ resp << " at "
+ resp << ApplicationController.helpers.render_localized_date(finished_at)
+ end
+ resp << "."
+ else
+ if state_label
+ resp << "This #{title} is "
+ resp << if state_label == 'Running' then 'active' else state_label.downcase end
+ resp << "."
+ end
+ end
+
+ if is_failed?
+ if runtime_status.andand[:error]
+ resp << " Check the error information below."
+ else
+ resp << " Check the Log tab for more detail about why it failed."
+ end
+ end
+ resp << "</p>"
+
+ resp << "<p>"
+ if state_label
+ resp << "It has runtime of "
+
+ cpu_time = cputime
+
+ resp << ApplicationController.helpers.render_time(running_time, false)
+ if (walltime - running_time) > 0
+ resp << "("
+ resp << ApplicationController.helpers.render_time(walltime - running_time, false)
+ resp << "queued)"
+ end
+ if cpu_time == 0
+ resp << "."
+ else
+ resp << " and used "
+ resp << ApplicationController.helpers.render_time(cpu_time, false)
+ resp << " of node allocation time ("
+ resp << (cpu_time/running_time).round(1).to_s
+ resp << "⨯ scaling)."
+ end
+ end
+ resp << "</p>"
+
+ resp
+ end
+
+ def log_object_uuids
+ [uuid]