Merge branch '4887-invalidate-duplicate-ip-on-old-compute-nodes'
[arvados.git] / services / api / app / models / arvados_model.rb
index 2a98591a36ee10bae8826ff492840c7544f7a40f..a170fb9b54368e3d8f77689604e2d1d5dd7ff301 100644 (file)
@@ -36,19 +36,18 @@ class ArvadosModel < ActiveRecord::Base
     end
   end
 
-  class UnauthorizedError < StandardError
+  class AlreadyLockedError < StandardError
     def http_status
-      401
+      403
     end
   end
 
-  class ConflictError < StandardError
+  class UnauthorizedError < StandardError
     def http_status
-      409
+      401
     end
   end
 
-
   def self.kind_class(kind)
     kind.match(/^arvados\#(.+)$/)[1].classify.safe_constantize rescue nil
   end
@@ -111,7 +110,8 @@ class ArvadosModel < ActiveRecord::Base
     unless (owner_uuid == current_user.uuid or
             current_user.is_admin or
             (current_user.groups_i_can(:manage) & [uuid, owner_uuid]).any?)
-      if current_user.groups_i_can(:write).index(uuid)
+      if ((current_user.groups_i_can(:write) + [current_user.uuid]) &
+          [uuid, owner_uuid]).any?
         return [owner_uuid, current_user.uuid]
       else
         return [owner_uuid]
@@ -445,6 +445,10 @@ class ArvadosModel < ActiveRecord::Base
     "_____-#{uuid_prefix}-_______________"
   end
 
+  def self.uuid_regex
+    %r/[a-z0-9]{5}-#{uuid_prefix}-[a-z0-9]{15}/
+  end
+
   def ensure_valid_uuids
     specials = [system_user_uuid]
 
@@ -527,7 +531,6 @@ class ArvadosModel < ActiveRecord::Base
     log = Log.new(event_type: event_type).fill_object(self)
     yield log
     log.save!
-    connection.execute "NOTIFY logs, '#{log.id}'"
     log_start_state
   end