X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/247c69eae2f2f37171032be889ebf414830350c3..d07a96a0f0c11b98ecc927f0b3e0b052f8ef99f7:/services/api/app/models/job_task.rb diff --git a/services/api/app/models/job_task.rb b/services/api/app/models/job_task.rb index be0456d576..7d568e952a 100644 --- a/services/api/app/models/job_task.rb +++ b/services/api/app/models/job_task.rb @@ -3,10 +3,12 @@ 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| + 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 @@ -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.delete_all ['created_by_job_task_uuid = ?', 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*10000000).to_i], + ['created_by_job_task_uuid = ?', self.uuid]) + end + end end