1 class ContainerWorkUnit < ProxyWorkUnit
2 attr_accessor :container
4 def initialize proxied, label
6 if @proxied.is_a?(ContainerRequest)
7 container_uuid = get(:container_uuid)
9 @container = Container.where(uuid: container_uuid).first
15 return self.my_children if self.my_children
19 if @proxied.is_a?(Container)
20 # If @proxied is a container, get all containter_requests where this is
21 # requesting_container_uuid and containers for their container_uuids
23 reqs = ContainerRequest.where(requesting_container_uuid: uuid).results
24 reqs.each { |cr| crs[cr.container_uuid] = cr.name }
26 containers = Container.where(uuid: crs.keys).results
27 containers.each do |c|
28 items << c.work_unit(crs[c.uuid] || 'this container')
31 self.my_children = items
33 # Else for a container_request, get all container_requests whose
34 # requesting_container_uuid is this container_request's container_uuid.
35 container_uuid = get(:container_uuid)
37 reqs = ContainerRequest.where(requesting_container_uuid: container_uuid).results
39 items << cr.work_unit(cr.name || 'this container')
44 self.my_children = items
53 "/#{@proxied.class.table_name}/#{uuid}" rescue nil
58 @proxied.is_a?(ContainerRequest) && state_label.in?(["Queued", "Locked", "Running"]) && priority > 0
65 # For the following properties, use value from the @container if exists
66 # This applies to a ContainerRequest with container_uuid
69 t = get_combined(:started_at)
70 t = Time.parse(t) if (t.is_a? String)
75 t = get_combined(:modified_at)
76 t = Time.parse(t) if (t.is_a? String)
81 t = get_combined(:finished_at)
82 t = Time.parse(t) if (t.is_a? String)
91 get_combined(:container_image)
94 def runtime_constraints
95 get_combined(:runtime_constraints)
99 get_combined(:priority)
108 items << get_combined(:output) if get_combined(:output)
113 get_combined(:command)
121 env = get_combined(:environment)
122 env = nil if env.andand.empty?
127 mnt = get_combined(:mounts)
128 mnt = nil if mnt.andand.empty?
133 get_combined(:output_path)
136 # End combined propeties
140 get(key, @container) || get(key, @proxied)