11789: Added tests.
[arvados.git] / services / api / app / models / job_task.rb
index be0456d5764bb8224806a2c1ebbd40315abf5d8b..5f83fbe162568dd7694e35fe8a3e3d43ec37406e 100644 (file)
@@ -1,17 +1,34 @@
 class JobTask < ArvadosModel
-  include AssignUuid
+  include HasUuid
   include KindAndEtag
   include CommonApiTemplate
   serialize :parameters, Hash
+  before_create :set_default_qsequence
+  after_update :delete_created_job_tasks_if_failed
 
-  api_accessible :superuser, :extend => :common do |t|
+  api_accessible :user, extend: :common do |t|
     t.add :job_uuid
-    t.add :created_by_job_task
+    t.add :created_by_job_task_uuid
     t.add :sequence
     t.add :qsequence
     t.add :parameters
     t.add :output
     t.add :progress
     t.add :success
+    t.add :started_at
+    t.add :finished_at
+  end
+
+  protected
+
+  def delete_created_job_tasks_if_failed
+    if self.success == false and self.success != self.success_was
+      JobTask.delete_all ['created_by_job_task_uuid = ?', self.uuid]
+    end
+  end
+
+  def set_default_qsequence
+    self.qsequence ||= self.class.connection.
+      select_value("SELECT nextval('job_tasks_qsequence_seq')")
   end
 end