Merge branch '9623-reuse-containers'
[arvados.git] / services / api / app / models / arvados_model.rb
index 38bd5cfb344aff33a4831985fe64973568528cff..7d1c30cdaf63b418086a265c5129a103d168cb67 100644 (file)
@@ -42,7 +42,13 @@ class ArvadosModel < ActiveRecord::Base
 
   class AlreadyLockedError < StandardError
     def http_status
-      403
+      422
+    end
+  end
+
+  class InvalidStateTransitionError < StandardError
+    def http_status
+      422
     end
   end
 
@@ -265,6 +271,18 @@ class ArvadosModel < ActiveRecord::Base
 
   protected
 
+  def self.deep_sort_hash(x)
+    if x.is_a? Hash
+      x.sort.collect do |k, v|
+        [k, deep_sort_hash(v)]
+      end.to_h
+    elsif x.is_a? Array
+      x.collect { |v| deep_sort_hash(v) }
+    else
+      x
+    end
+  end
+
   def ensure_ownership_path_leads_to_user
     if new_record? or owner_uuid_changed?
       uuid_in_path = {owner_uuid => true, uuid => true}