18004: Fixes a couple of race condition bugs related to caching remote users.
[arvados.git] / services / api / app / models / job_task.rb
1 # Copyright (C) The Arvados Authors. All rights reserved.
2 #
3 # SPDX-License-Identifier: AGPL-3.0
4
5 class JobTask < ArvadosModel
6   include HasUuid
7   include KindAndEtag
8   include CommonApiTemplate
9   serialize :parameters, Hash
10   before_create :set_default_qsequence
11   after_update :delete_created_job_tasks_if_failed
12   before_create :create_disabled
13   before_update :update_disabled
14
15   api_accessible :user, extend: :common do |t|
16     t.add :job_uuid
17     t.add :created_by_job_task_uuid
18     t.add :sequence
19     t.add :qsequence
20     t.add :parameters
21     t.add :output
22     t.add :progress
23     t.add :success
24     t.add :started_at
25     t.add :finished_at
26   end
27
28   protected
29
30   def delete_created_job_tasks_if_failed
31     if self.success == false and self.success != self.success_was
32       JobTask.delete_all ['created_by_job_task_uuid = ?', self.uuid]
33     end
34   end
35
36   def set_default_qsequence
37     self.qsequence ||= self.class.connection.
38       select_value("SELECT nextval('job_tasks_qsequence_seq')")
39   end
40
41   def create_disabled
42     raise "Disabled"
43   end
44
45   def update_disabled
46     raise "Disabled"
47   end
48 end