projects
/
arvados.git
/ blobdiff
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Merge branch 'master' into 15209-python-arv-deps-pinned
[arvados.git]
/
apps
/
workbench
/
app
/
models
/
proxy_work_unit.rb
diff --git
a/apps/workbench/app/models/proxy_work_unit.rb
b/apps/workbench/app/models/proxy_work_unit.rb
index 6da0f989a903a4da0beb4d274a44dfa20aa449fc..adf0bd7d671db15203b1ba26e2a6188c71cd5815 100644
(file)
--- a/
apps/workbench/app/models/proxy_work_unit.rb
+++ b/
apps/workbench/app/models/proxy_work_unit.rb
@@
-1,3
+1,7
@@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
class ProxyWorkUnit < WorkUnit
require 'time'
class ProxyWorkUnit < WorkUnit
require 'time'
@@
-222,19
+226,26
@@
class ProxyWorkUnit < WorkUnit
state_label == 'Failed'
end
state_label == 'Failed'
end
- def all_children
+ def runtime_contributors
+ contributors = []
if children.any?
if children.any?
- children
+ children.collect{|c| c.all_children}.flatten
+ children
.each{|c| contributors << c.runtime_contributors}
else
else
- []
+ contributors << self
end
end
+ contributors.flatten
end
def runningtime
end
def runningtime
- ApplicationController.helpers.determine_wallclock_runtime
(if children.any? then all_children else [self] end)
+ ApplicationController.helpers.determine_wallclock_runtime
runtime_contributors
end
def show_runtime
end
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 = '<p>'
if started_at
@@
-244,16
+255,14
@@
class ProxyWorkUnit < WorkUnit
if state_label == 'Complete'
resp << "completed in "
elsif state_label == 'Failed'
if state_label == 'Complete'
resp << "completed in "
elsif state_label == 'Failed'
- resp << "failed after "
+ resp << "failed after "
+ elsif state_label == 'Cancelled'
+ resp << "was cancelled after "
else
resp << "has been active for "
end
else
resp << "has been active for "
end
- if walltime > runningtime
- resp << ApplicationController.helpers.render_time(walltime, false)
- else
- resp << ApplicationController.helpers.render_time(runningtime, false)
- end
+ resp << ApplicationController.helpers.render_time(walltime, false)
if finished_at
resp << " at "
if finished_at
resp << " at "
@@
-269,26
+278,24
@@
class ProxyWorkUnit < WorkUnit
end
if is_failed?
end
if is_failed?
- resp << " Check the Log tab for more detail about why it 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
end
resp << "</p>"
resp << "<p>"
if state_label
- resp << "It "
- if state_label == 'Running'
- resp << "has run"
- else
- resp << "ran"
- end
- resp << " for "
+ resp << "It has runtime of "
cpu_time = cputime
cpu_time = cputime
- resp << ApplicationController.helpers.render_time(runningtime, false)
- if (walltime - runningtime) > 0
+ resp << ApplicationController.helpers.render_time(running
_
time, false)
+ if (walltime - running
_
time) > 0
resp << "("
resp << "("
- resp << ApplicationController.helpers.render_time(walltime - runningtime, false)
+ resp << ApplicationController.helpers.render_time(walltime - running
_
time, false)
resp << "queued)"
end
if cpu_time == 0
resp << "queued)"
end
if cpu_time == 0
@@
-297,7
+304,7
@@
class ProxyWorkUnit < WorkUnit
resp << " and used "
resp << ApplicationController.helpers.render_time(cpu_time, false)
resp << " of node allocation time ("
resp << " and used "
resp << ApplicationController.helpers.render_time(cpu_time, false)
resp << " of node allocation time ("
- resp << (cpu_time/runningtime).round(1).to_s
+ resp << (cpu_time/running
_
time).round(1).to_s
resp << "⨯ scaling)."
end
end
resp << "⨯ scaling)."
end
end