end
def index
- @links = Link.eager.limit(100).where(head_kind: 'arvados#collection') |
- Link.eager.limit(100).where(tail_kind: 'arvados#collection')
@collections = Collection.limit(100).to_hash
+ @links = Link.eager.limit(100).where(head_kind: 'arvados#collection', link_class: 'resources', name: 'wants') |
+ Link.eager.limit(100).where(tail_kind: 'arvados#collection', link_class: 'data_origin')
@collections.merge!(Collection.
limit(100).
where(uuid: @links.select{|x|x.head_kind=='arvados#collection'}.collect(&:head_uuid) |
end
if l.tail_kind == 'arvados#collection'
c = (@collection_info[l.tail_uuid] ||= {uuid: l.tail_uuid})
- if l.link_class == 'group' and l.name == 'member_of'
- c[:groups] ||= {}
- c[:groups][l.tail_uuid] = true
- end
if l.link_class == 'data_origin'
c[:origin] = l
end
@output2colorindex = {}
@sourcedata = {params[:uuid] => {uuid: params[:uuid]}}
@protected = {}
- whence = `whence #{params[:uuid]}`
- colorindex = -1
- whence.split("\n").each do |line|
- if line.match /^(\#\d+@\S+)$/
- job = Job.where(submit_id: line).first
- @provenance << {job: job, target: line}
- elsif (re = line.match /^ +output *= *(\S+)/)
- if !@provenance.empty?
- @provenance[-1][:output] = re[1]
- @output2job[re[1]] = @provenance[-1][:job]
- if !@output2colorindex[re[1]]
- @output2colorindex[re[1]] = (colorindex += 1) % 10
- end
- @sourcedata.delete re[1]
- end
- elsif (re = line.match /^([0-9a-f]{32}\b)/)
- @sourcedata[re[1]] ||= {uuid: re[1]}
- end
- end
+
+ # TODO: compile provenance data using Job.where(...)
+
Link.where(head_uuid: @sourcedata.keys | @output2job.keys).each do |link|
if link.link_class == 'resources' and link.name == 'wants'
@protected[link.head_uuid] = true