Merge branch '19146-can-write-manage'
[arvados.git] / services / api / app / models / job_task.rb
index e2f7930087bbc4e6e131c33fbde9aada5966b7df..b181e76ccf33ca1e0923e2d8f566f64b2debad03 100644 (file)
@@ -1,12 +1,18 @@
+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
 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
-  after_update :assign_created_job_tasks_qsequence_if_succeeded
+  before_create :create_disabled
+  before_update :update_disabled
 
-  api_accessible :superuser, :extend => :common do |t|
+  api_accessible :user, extend: :common do |t|
     t.add :job_uuid
     t.add :created_by_job_task_uuid
     t.add :sequence
@@ -15,6 +21,8 @@ class JobTask < ArvadosModel
     t.add :output
     t.add :progress
     t.add :success
+    t.add :started_at
+    t.add :finished_at
   end
 
   protected
@@ -25,12 +33,16 @@ class JobTask < ArvadosModel
     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*10000000).to_i],
-                         ['created_by_job_task_uuid = ?', self.uuid])
-    end
+  def set_default_qsequence
+    self.qsequence ||= self.class.connection.
+      select_value("SELECT nextval('job_tasks_qsequence_seq')")
+  end
+
+  def create_disabled
+    raise "Disabled"
+  end
+
+  def update_disabled
+    raise "Disabled"
   end
 end