[ARVADOS] created: 7ab94b8875b1ada5021e5b494b3f38f7eab5328c
git at public.curoverse.com
git at public.curoverse.com
Sun Jul 27 02:50:13 EDT 2014
at 7ab94b8875b1ada5021e5b494b3f38f7eab5328c (commit)
commit 7ab94b8875b1ada5021e5b494b3f38f7eab5328c
Author: Tom Clegg <tom at curoverse.com>
Date: Sun Jul 27 02:48:30 2014 -0400
3036: Add TODOs for mutable collection uuids
diff --git a/services/api/app/models/collection.rb b/services/api/app/models/collection.rb
index 623952f..59aef67 100644
--- a/services/api/app/models/collection.rb
+++ b/services/api/app/models/collection.rb
@@ -49,6 +49,20 @@ class Collection < ArvadosModel
true
end
+ # TODO (#3036/tom) replace above assign_uuid method with below assign_uuid and self.generate_uuid
+ # def assign_uuid
+ # # Even admins cannot assign collection uuids.
+ # self.uuid = self.class.generate_uuid
+ # end
+ # def self.generate_uuid
+ # # The last 10 characters of a collection uuid are the last 10
+ # # characters of the base-36 SHA256 digest of manifest_text.
+ # [Server::Application.config.uuid_prefix,
+ # self.uuid_prefix,
+ # rand(2**256).to_s(36)[-5..-1] + Digest::SHA256.hexdigest(self.manifest_text).to_i(16).to_s(36)[-10..-1],
+ # ].join '-'
+ # end
+
def data_size
inspect_manifest_text if @data_size.nil? or manifest_text_changed?
@data_size
commit 22b165b48c33239aefee631ffbb00079c5486866
Author: Tom Clegg <tom at curoverse.com>
Date: Sun Jul 27 02:44:55 2014 -0400
3036: Assign collection uuid without complaint if not provided by client.
diff --git a/services/api/app/controllers/arvados/v1/collections_controller.rb b/services/api/app/controllers/arvados/v1/collections_controller.rb
index 97f004e..a0c64aa 100644
--- a/services/api/app/controllers/arvados/v1/collections_controller.rb
+++ b/services/api/app/controllers/arvados/v1/collections_controller.rb
@@ -63,11 +63,11 @@ class Arvados::V1::CollectionsController < ApplicationController
@object.save!
rescue ActiveRecord::RecordNotUnique
logger.debug resource_attrs.inspect
- if resource_attrs[:manifest_text] and resource_attrs[:uuid]
+ if @object.manifest_text and @object.uuid
@existing_object = model_class.
where('uuid=? and manifest_text=?',
- resource_attrs[:uuid],
- resource_attrs[:manifest_text]).
+ @object.uuid,
+ @object.manifest_text).
first
@object = @existing_object || @object
end
diff --git a/services/api/app/models/collection.rb b/services/api/app/models/collection.rb
index e9be28b..623952f 100644
--- a/services/api/app/models/collection.rb
+++ b/services/api/app/models/collection.rb
@@ -30,23 +30,23 @@ class Collection < ArvadosModel
def assign_uuid
if self.manifest_text.nil? and self.uuid.nil?
- super
- elsif self.manifest_text and self.uuid
+ return super
+ elsif not self.manifest_text
+ errors.add :manifest_text, 'not supplied'
+ return false
+ end
+ expect_uuid = Digest::MD5.hexdigest(self.manifest_text)
+ if self.uuid
self.uuid.gsub! /\+.*/, ''
- if self.uuid == Digest::MD5.hexdigest(self.manifest_text)
- self.uuid.gsub! /$/, '+' + self.manifest_text.length.to_s
- true
- else
- errors.add :uuid, 'does not match checksum of manifest_text'
- false
+ if self.uuid != expect_uuid
+ errors.add :uuid, 'must match checksum of manifest_text'
+ return false
end
- elsif self.manifest_text
- errors.add :uuid, 'not supplied (must match checksum of manifest_text)'
- false
else
- errors.add :manifest_text, 'not supplied'
- false
+ self.uuid = expect_uuid
end
+ self.uuid.gsub! /$/, '+' + self.manifest_text.length.to_s
+ true
end
def data_size
@@ -66,15 +66,6 @@ class Collection < ArvadosModel
return
end
- #normalized_manifest = ""
- #IO.popen(['arv-normalize'], 'w+b') do |io|
- # io.write manifest_text
- # io.close_write
- # while buf = io.read(2**20)
- # normalized_manifest += buf
- # end
- #end
-
@data_size = 0
tmp = {}
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list