X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/6fb70ef1e1398c30137580c8417e98693dfbfc1d..eae48c31bb338689ec67fbc6a14a2e0b1fb5e3b6:/apps/workbench/app/models/container_work_unit.rb diff --git a/apps/workbench/app/models/container_work_unit.rb b/apps/workbench/app/models/container_work_unit.rb index 1ed182c35f..88aab306ce 100644 --- a/apps/workbench/app/models/container_work_unit.rb +++ b/apps/workbench/app/models/container_work_unit.rb @@ -1,7 +1,7 @@ class ContainerWorkUnit < ProxyWorkUnit attr_accessor :container - def initialize proxied, label + def initialize proxied, label, parent super if @proxied.is_a?(ContainerRequest) container_uuid = get(:container_uuid) @@ -12,7 +12,7 @@ class ContainerWorkUnit < ProxyWorkUnit end def children - return self.my_children if self.my_children + return @my_children if @my_children container_uuid = nil container_uuid = if @proxied.is_a?(Container) then uuid else get(:container_uuid) end @@ -25,7 +25,7 @@ class ContainerWorkUnit < ProxyWorkUnit end end - self.my_children = items + @my_children = items end def title @@ -46,13 +46,17 @@ class ContainerWorkUnit < ProxyWorkUnit end def can_cancel? - @proxied.is_a?(ContainerRequest) && state_label.in?(["Queued", "Locked", "Running"]) && priority > 0 + @proxied.is_a?(ContainerRequest) && @proxied.state == "Committed" && @proxied.priority > 0 && @proxied.editable? end def container_uuid get(:container_uuid) end + def priority + @proxied.priority + end + # For the following properties, use value from the @container if exists # This applies to a ContainerRequest with container_uuid @@ -75,7 +79,15 @@ class ContainerWorkUnit < ProxyWorkUnit end def state_label - get_combined(:state) + ec = exit_code + return "Failed" if (ec && ec != 0) + state = get_combined(:state) + return "Ready" if ((priority == 0) and (["Queued", "Locked"].include?(state))) + state + end + + def exit_code + get_combined(:exit_code) end def docker_image @@ -86,10 +98,6 @@ class ContainerWorkUnit < ProxyWorkUnit get_combined(:runtime_constraints) end - def priority - get_combined(:priority) - end - def log_collection get_combined(:log) end @@ -125,14 +133,7 @@ class ContainerWorkUnit < ProxyWorkUnit end def log_object_uuids - [get_combined(:uuid), get(:uuid)].uniq - end - - def live_log_lines(limit=2000) - event_types = ["stdout", "stderr", "arv-mount", "crunch-run"] - log_lines = Log.where(event_type: event_types, object_uuid: log_object_uuids).order("id DESC").limit(limit) - log_lines.results.reverse. - flat_map { |log| log.properties[:text].split("\n") rescue [] } + [get(:uuid, @container), get(:uuid, @proxied)].compact end def render_log @@ -145,11 +146,11 @@ class ContainerWorkUnit < ProxyWorkUnit def template_uuid properties = get(:properties) if properties - properties[:workflow_uuid] + properties[:template_uuid] end end - # End combined propeties + # End combined properties protected def get_combined key