+# Copyright (C) The Arvados Authors. All rights reserved.
+#
+# SPDX-License-Identifier: AGPL-3.0
+
class Workflow < ArvadosModel
include HasUuid
include KindAndEtag
include CommonApiTemplate
- validate :validate_workflow
+ validate :validate_definition
before_save :set_name_and_description
api_accessible :user, extend: :common do |t|
t.add :name
t.add :description
- t.add :workflow
+ t.add :definition
end
- def validate_workflow
+ def validate_definition
begin
- @workflow_yaml = YAML.load self.workflow if !workflow.nil?
- rescue
- errors.add :validate_workflow, "#{self.workflow} is not valid yaml"
+ @definition_yaml = YAML.load self.definition if !definition.nil?
+ rescue => e
+ errors.add :definition, "is not valid yaml: #{e.message}"
end
end
def set_name_and_description
+ old_wf = {}
begin
- old_wf = {}
- old_wf = YAML.load self.workflow_was if !self.workflow_was.nil?
- ['name', 'description'].each do |a|
- if !self.changes.include?(a)
- v = self.read_attribute(a)
- if !v.present? or v == old_wf[a]
- val = @workflow_yaml[a] if self.workflow and @workflow_yaml
- self[a] = val
- end
+ old_wf = YAML.load self.definition_was if !self.definition_was.nil?
+ rescue => e
+ logger.warn "set_name_and_description error: #{e.message}"
+ return
+ end
+
+ ['name', 'description'].each do |a|
+ if !self.changes.include?(a)
+ v = self.read_attribute(a)
+ if !v.present? or v == old_wf[a]
+ val = @definition_yaml[a] if self.definition and @definition_yaml
+ self[a] = val
end
end
- rescue ActiveRecord::RecordInvalid
- errors.add :set_name_and_description, "#{self.workflow_was} is not valid yaml"
end
end
+
+ def self.full_text_searchable_columns
+ super - ["definition"]
+ end
+
+ def self.limit_index_columns_read
+ ["definition"]
+ end
end