start lifting job manager over from free factories to crunch
[arvados.git] / services / api / app / models / job_task.rb
index be0456d5764bb8224806a2c1ebbd40315abf5d8b..c951d439f4f9b6916aa015c9889bdfa520bab528 100644 (file)
@@ -3,6 +3,8 @@ class JobTask < ArvadosModel
   include KindAndEtag
   include CommonApiTemplate
   serialize :parameters, Hash
+  after_update :delete_created_job_tasks_if_failed
+  after_update :assign_created_job_tasks_qsequence_if_succeeded
 
   api_accessible :superuser, :extend => :common do |t|
     t.add :job_uuid
@@ -14,4 +16,21 @@ class JobTask < ArvadosModel
     t.add :progress
     t.add :success
   end
+
+  protected
+
+  def delete_created_job_tasks_if_failed
+    if self.success == false and self.success != self.success_was
+      JobTask.destroy_all('created_by_job_task = ?', self.uuid)
+    end
+  end
+
+  def assign_created_job_tasks_qsequence_if_succeeded
+    if self.success == false and self.success != self.success_was
+      # xxx qsequence should be sequential as advertised; for now at
+      # least it's non-decreasing.
+      JobTask.update_all(['qsequence = ?', Time.now.to_f*1000000],
+                         ['created_by_job_task = ?', self.uuid])
+    end
+  end
 end