X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/9c7a9a6e4660b3e7cc6419e5818ffaa3a78b6d19..3fa4a2b6138e3e9e468dd885a743ca38f08f0755:/services/api/app/models/collection.rb diff --git a/services/api/app/models/collection.rb b/services/api/app/models/collection.rb index 4f774d6f9c..9b081dbd2e 100644 --- a/services/api/app/models/collection.rb +++ b/services/api/app/models/collection.rb @@ -2,6 +2,7 @@ require 'arvados/keep' require 'sweep_trashed_collections' class Collection < ArvadosModel + extend CurrentApiClient extend DbCurrentTime include HasUuid include KindAndEtag @@ -31,6 +32,7 @@ class Collection < ArvadosModel t.add :properties t.add :portable_data_hash t.add :signed_manifest_text, as: :manifest_text + t.add :manifest_text, as: :unsigned_manifest_text t.add :replication_desired t.add :replication_confirmed t.add :replication_confirmed_at @@ -55,6 +57,7 @@ class Collection < ArvadosModel # We need trash_at and is_trashed to determine the # correct timestamp in signed_manifest_text. 'manifest_text' => ['manifest_text', 'trash_at', 'is_trashed'], + 'unsigned_manifest_text' => ['manifest_text'], ) end @@ -370,6 +373,23 @@ class Collection < ArvadosModel find_all_for_docker_image(search_term, search_tag, readers).first end + # If the given pdh is an old-format docker image, old-format images + # aren't supported by the compute nodes according to site config, + # and a migrated new-format image is available, return the migrated + # image's pdh. Otherwise, just return pdh. + def self.docker_migration_pdh(read_users, pdh) + if Rails.configuration.docker_image_formats.include?('v1') + return pdh + end + Collection.readable_by(*read_users). + joins('INNER JOIN links ON head_uuid=portable_data_hash'). + where('tail_uuid=? AND link_class=? AND links.owner_uuid=?', + pdh, 'docker_image_migration', system_user_uuid). + order('links.created_at desc'). + select('portable_data_hash'). + first.andand.portable_data_hash || pdh + end + def self.searchable_columns operator super - ["manifest_text"] end