Support searching jobs by script_version_descends_from. refs #1445
[arvados.git] / app / models / job.rb
index 4b15a91a4e5d76ee8667da7d2ddfdb417e379707..bf2b254bd0481afec62450e531ddb691958ead24 100644 (file)
@@ -6,6 +6,9 @@ class Job < OrvosModel
   serialize :resource_limits, Hash
   serialize :tasks_summary, Hash
   before_create :ensure_unique_submit_id
+  before_create :ensure_script_version_is_commit
+
+  has_many :commit_ancestors, :foreign_key => :descendant, :primary_key => :script_version
 
   class SubmitIdReused < StandardError
   end
@@ -39,6 +42,15 @@ class Job < OrvosModel
 
   protected
 
+  def ensure_script_version_is_commit
+    sha1 = Commit.find_by_commit_ish(self.script_version) rescue nil
+    if sha1
+      self.script_version = sha1
+    else
+      raise ArgumentError.new("Specified script_version does not resolve to a commit")
+    end
+  end
+
   def ensure_unique_submit_id
     if !submit_id.nil?
       if Job.where('submit_id=?',self.submit_id).first