X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/5020e0513d41d5dc3d8860c7d8c46c5a79dfe249..0f537bcaa60b8a1496010bc9d4a943484e69081c:/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 4616e9f8b6..b181e76ccf 100644 --- a/services/api/app/models/job_task.rb +++ b/services/api/app/models/job_task.rb @@ -1,36 +1,48 @@ +# 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 + 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 = ?', self.uuid] + 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 = ?', 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