No <%= current_obj.title %> has been submitted yet.
<% else %>
<table>
- <% keys = [:uuid, :modified_by_user_uuid, :created_at, :started_at, :finished_at, :container_uuid, :priority] %>
+ <% keys = [:uuid, :modified_by_user_uuid, :created_at, :started_at, :finished_at, :container_uuid] %>
<% keys << :log_collection if @object.uuid != current_obj.uuid %>
<% keys << :outputs %>
<% keys.each do |k| %>
object_for_dataclass(Repository, current_obj.repository, :name))
repo = nil unless repo.andand.http_fetch_url
%>
- <% [:script, :repository, :script_version, :supplied_script_version, :nondeterministic,
- :command, :cwd, :environment, :mounts, :output_path].each do |k| %>
+ <% [:priority, :script, :repository, :script_version, :supplied_script_version, :nondeterministic,
+ :runtime_constraints, :requesting_container_uuid].each do |k| %>
<% val = current_obj.send(k) if current_obj.respond_to?(k) %>
<% if val %>
- <tr>
+ <tr valign="top">
<td style="padding-right: 1em">
<%= k.to_s %>:
</td>
<%= link_to val, show_repository_blob_path(id: repo.uuid, commit: current_obj.script_version, path: 'crunch_scripts/'+current_obj.script) %>
<% elsif repo and k == :script_version %>
<%= link_to val, show_repository_commit_path(id: repo.uuid, commit: current_obj.script_version) %>
+ <% elsif k == :runtime_constraints and val.any? %>
+ <%= render partial: 'work_units/show_table_data', locals: {id: current_obj.uuid, name: k, data_map: val} %>
+ <% elsif k.to_s.end_with? 'uuid' %>
+ <%= link_to_arvados_object_if_readable(val, val, friendly_name: true) %>
<% else %>
<%= val %>
<% end %>
</tr>
<% end %>
<% end %>
+
+ <%
+ mounts = current_obj.send(:mounts) if current_obj.respond_to?(:mounts)
+ mount_wf = mounts.andand[:"/var/lib/cwl/workflow.json"]
+ mount_wf = mount_wf[5..-1] if mount_wf.andand.is_a?(String) and mount_wf.start_with?('keep:')
+ mount_wf_cls = resource_class_for_uuid(mount_wf) if mount_wf
+ %>
+ <tr>
+ <% if mount_wf_cls == Collection %>
+ <td style="padding-right: 1em">
+ workflow.json:
+ </td>
+ <td>
+ <%= link_to_if_arvados_object mount_wf, friendly_name: true %>
+ </td>
+ <% end %>
+ </tr>
+
<% if current_obj.runtime_constraints.andand[:docker_image] and current_obj.docker_image %>
<tr>
<td style="padding-right: 1em">
<% end %>
</table>
</div>
+
+ <div class="col-md-12">
+ <table style="width:100%;">
+ <col width="15%" />
+ <col width="85%" />
+ <% [:command].each do |k| %>
+ <% val = current_obj.send(k) if current_obj.respond_to?(k) %>
+ <% if val %>
+ <tr>
+ <td valign="top">
+ <%= k.to_s %>:
+ </td>
+ <td>
+ <% if k == :command %>
+ <div style="max-height:200px; overflow-y:auto;">
+ <%=val%>
+ </div>
+ <% else %>
+ <%= val %>
+ <% end %>
+ </td>
+ </tr>
+ <% end %>
+ <% end %>
+
+ <%
+ mounts = current_obj.send(:mounts) if current_obj.respond_to?(:mounts)
+ input_obj = mounts.andand[:"/var/lib/cwl/cwl.input.json"].andand[:content]
+ mnt_inputs = JSON.pretty_generate(input_obj) if input_obj
+ %>
+ <% if mnt_inputs %>
+ <tr>
+ <td valign="top">
+ cwl.input.json:
+ </td>
+ <td>
+ <div style="max-height:200px; overflow:auto;">
+ <% mnt_inputs.each_line do |l| %>
+ <% text_part = l %>
+ <% match = l.match /(.*)(\"keep:.*?\")/ %>
+ <% if match and match.size == 3 %>
+ <% text_part = match[1] %>
+ <% loc_part = match[2][6..-2] %>
+ <% end %>
+ <span style="white-space: pre-wrap; margin: none;"><%= text_part %><%= if loc_part then link_to_arvados_object_if_readable(loc_part, loc_part, friendly_name: true) end %> <% if loc_part then %> <br/> <% end %></span>
+ <% end %>
+ </div>
+ </td>
+ </tr>
+ <% end %>
+ </table>
+ </div>
+
</div>
<% if current_obj.parameters and !current_obj.parameters.empty? %>
end
end
end
+
+ test "container request display" do
+ use_token 'active'
+
+ cr = api_fixture('container_requests')['completed_with_input_mounts']
+
+ get :show, {id: cr['uuid']}, session_for(:active)
+ assert_response :success
+
+ assert_includes @response.body, CGI.escapeHTML(cr['command'].to_s)
+ assert_includes @response.body, "href=\"\/collections/fa7aeb5140e2848d39b416daeef4ffc5+45%2Ffoo" # mount input1
+ assert_includes @response.body, "href=\"\/collections/fa7aeb5140e2848d39b416daeef4ffc5+45%2Fbar" # mount input2
+ assert_includes @response.body, "href=\"\/collections/1fd08fc162a5c6413070a8bd0bffc818+150" # mount workflow
+ assert_includes @response.body, "href=\"#Log\""
+ assert_includes @response.body, "href=\"#Provenance\""
+ end
end
vcpus: 1
ram: 123
+completed_with_input_mounts:
+ uuid: zzzzz-xvhdp-crwithinputmnts
+ owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz
+ name: completed container request
+ state: Final
+ priority: 1
+ created_at: <%= 24.hour.ago.to_s(:db) %>
+ updated_at: <%= 24.hour.ago.to_s(:db) %>
+ modified_at: <%= 24.hour.ago.to_s(:db) %>
+ modified_by_user_uuid: zzzzz-tpzed-xurymjxw79nv3jz
+ container_image: test
+ cwd: test
+ output_path: test
+ command: ["echo", "hello"]
+ runtime_constraints:
+ vcpus: 1
+ ram: 123
+ container_uuid: zzzzz-dz642-compltcontainer
+ log_uuid: zzzzz-4zz18-y9vne9npefyxh8g
+ output_uuid: zzzzz-4zz18-znfnqtbbv4spc3w
+ mounts:
+ /var/lib/cwl/cwl.input.json:
+ content:
+ input1:
+ basename: foo
+ class: File
+ location: "keep:fa7aeb5140e2848d39b416daeef4ffc5+45/foo"
+ input2:
+ basename: bar
+ class: File
+ location: "keep:fa7aeb5140e2848d39b416daeef4ffc5+45/bar"
+ /var/lib/cwl/workflow.json: "keep:1fd08fc162a5c6413070a8bd0bffc818+150"
+
uncommitted:
uuid: zzzzz-xvhdp-cr4uncommittedc
owner_uuid: zzzzz-tpzed-xurymjxw79nv3jz