api_accessible :user, extend: :common do |t|
t.add :data_size
t.add :files
+ t.add :manifest_text
end
- api_accessible :with_data, extend: :user do |t|
- t.add :manifest_text
+ def self.attributes_required_columns
+ super.merge({ "data_size" => ["manifest_text"],
+ "files" => ["manifest_text"],
+ })
end
def redundancy_status
joins("JOIN collections ON links.head_uuid = collections.uuid").
order("links.created_at DESC")
- # If the search term is a Collection locator with an associated
- # Docker image hash link, return that Collection.
- coll_matches = base_search.
- where(link_class: "docker_image_hash", collections: {uuid: search_term})
- if match = coll_matches.first
- return [match.head_uuid]
+ # If the search term is a Collection locator that contains one file
+ # that looks like a Docker image, return it.
+ if loc = Locator.parse(search_term)
+ loc.strip_hints!
+ coll_match = readable_by(*readers).where(uuid: loc.to_s).first
+ if coll_match and (coll_match.files.size == 1) and
+ (coll_match.files[0][1] =~ /^[0-9A-Fa-f]{64}\.tar$/)
+ return [loc.to_s]
+ end
end
# Find Collections with matching Docker image repository+tag pairs.