X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/e02bf11203b85a6baac31584b9ba451c92be21b3..695702b379a7be5abd96742ffee7f4f4bfcef2a8:/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 d817bba3a4..feab5d8eb4 100644 --- a/apps/workbench/app/models/proxy_work_unit.rb +++ b/apps/workbench/app/models/proxy_work_unit.rb @@ -23,21 +23,31 @@ class ProxyWorkUnit < WorkUnit get(:modified_by_user_uuid) end + def owner_uuid + get(:owner_uuid) + end + def created_at t = get(:created_at) - t = Time.parse(t) if (t.andand.class == String) + t = Time.parse(t) if (t.is_a? String) t end def started_at t = get(:started_at) - t = Time.parse(t) if (t.andand.class == String) + t = Time.parse(t) if (t.is_a? String) + t + end + + def modified_at + t = get(:modified_at) + t = Time.parse(t) if (t.is_a? String) t end def finished_at t = get(:finished_at) - t = Time.parse(t) if (t.andand.class == String) + t = Time.parse(t) if (t.is_a? String) t end @@ -45,13 +55,15 @@ class ProxyWorkUnit < WorkUnit state = get(:state) if ["Running", "RunningOnServer", "RunningOnClient"].include? state "Running" + elsif state == 'New' + "Not started" else state end end def state_bootstrap_class - state = get(:state) + state = state_label case state when 'Complete' 'success' @@ -65,7 +77,7 @@ class ProxyWorkUnit < WorkUnit end def success? - state = get(:state) + state = state_label if state == 'Complete' true elsif state == 'Failed' or state == 'Cancelled' @@ -123,7 +135,7 @@ class ProxyWorkUnit < WorkUnit end def progress - state = get(:state) + state = state_label if state == 'Complete' return 1.0 elsif state == 'Failed' or state == 'Cancelled' @@ -150,14 +162,7 @@ class ProxyWorkUnit < WorkUnit end def outputs - items = [] - children.each do |c| - items << c.output if c.output - end - if !items.any? - items << get(:output) if get(:output) - end - items + [] end def title @@ -215,14 +220,6 @@ class ProxyWorkUnit < WorkUnit end end - def show_child_summary - if state_label == "Running" - if child_summary - child_summary_str - end - end - end - def is_running? state_label == 'Running' end @@ -239,39 +236,8 @@ class ProxyWorkUnit < WorkUnit state_label == 'Failed' end - def ran_for_str - ran_for = nil - if state_label - ran_for = "It " - if state_label == 'Running' - ran_for << "has run" - else - ran_for << "ran" - end - ran_for << " for" - end - ran_for - end - - def started_and_active_for_str - active_for = nil - - if started_at - active_for_1 = "This #{title} started at " - active_for_2 = "It " - if state_label == 'Complete' - active_for_2 << "completed in " - elsif state_label == 'Failed' - active_for_2 << "failed after " - else - active_for_2 << "has been active for " - end - [active_for_1, active_for_2] - end - end - def show_runtime - runningtime = ApplicationController.helpers.determine_wallclock_runtime(children) + runningtime = ApplicationController.helpers.determine_wallclock_runtime(if children.any? then children else [self] end) walltime = 0 if started_at @@ -326,13 +292,20 @@ class ProxyWorkUnit < WorkUnit end resp << " for " - cpu_time = children.map { |c| - if c.started_at - (c.runtime_constraints.andand[:min_nodes] || 1) * ((c.finished_at || Time.now()) - c.started_at) - else - 0 + cpu_time = 0 + if children.any? + cpu_time = children.map { |c| + if c.started_at + (c.runtime_constraints.andand[:min_nodes] || 1) * ((c.finished_at || Time.now()) - c.started_at) + else + 0 + end + }.reduce(:+) || 0 + else + if started_at + cpu_time = (runtime_constraints.andand[:min_nodes] || 1) * ((finished_at || Time.now()) - started_at) end - }.reduce(:+) || 0 + end resp << ApplicationController.helpers.render_time(runningtime, false) if (walltime - runningtime) > 0 @@ -355,13 +328,17 @@ class ProxyWorkUnit < WorkUnit resp end + def log_object_uuids + [uuid] + end + protected - def get key - if @proxied.respond_to? key - @proxied.send(key) - elsif @proxied.is_a?(Hash) - @proxied[key] + def get key, obj=@proxied + if obj.respond_to? key + obj.send(key) + elsif obj.is_a?(Hash) + obj[key] end end end