123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- require 'liquid_migrator'
- class MigrateAgentsToLiquidTemplating < ActiveRecord::Migration[4.2]
- class Agent < ActiveRecord::Base
- include JSONSerializedField
- json_serialize :options, :memory
- end
- class Agents::HipchatAgent < Agent
- end
- class Agents::EventFormattingAgent < Agent
- end
- class Agents::PushbulletAgent < Agent
- end
- class Agents::JabberAgent < Agent
- end
- class Agents::DataOutputAgent < Agent
- end
- class Agents::TranslationAgent < Agent
- end
- class Agents::TwitterPublishAgent < Agent
- end
- class Agents::TriggerAgent < Agent
- end
- class Agents::PeakDetectorAgent < Agent
- end
- class Agents::HumanTaskAgent < Agent
- end
- def up
- Agent.where(:type => 'Agents::HipchatAgent').each do |agent|
- LiquidMigrator.convert_all_agent_options(agent)
- end
- Agent.where(:type => 'Agents::EventFormattingAgent').each do |agent|
- agent.options['instructions'] = LiquidMigrator.convert_hash(agent.options['instructions'], {:merge_path_attributes => true, :leading_dollarsign_is_jsonpath => true})
- agent.save
- end
- Agent.where(:type => 'Agents::PushbulletAgent').each do |agent|
- LiquidMigrator.convert_all_agent_options(agent)
- end
- Agent.where(:type => 'Agents::JabberAgent').each do |agent|
- LiquidMigrator.convert_all_agent_options(agent)
- end
- Agent.where(:type => 'Agents::DataOutputAgent').each do |agent|
- LiquidMigrator.convert_all_agent_options(agent)
- end
- Agent.where(:type => 'Agents::TranslationAgent').each do |agent|
- agent.options['content'] = LiquidMigrator.convert_hash(agent.options['content'], {:merge_path_attributes => true, :leading_dollarsign_is_jsonpath => true})
- agent.save
- end
- Agent.where(:type => 'Agents::TwitterPublishAgent').each do |agent|
- if (message = agent.options.delete('message_path')).present?
- agent.options['message'] = "{{#{message}}}"
- agent.save
- end
- end
- Agent.where(:type => 'Agents::TriggerAgent').each do |agent|
- agent.options['message'] = LiquidMigrator.convert_make_message(agent.options['message'])
- agent.save
- end
- Agent.where(:type => 'Agents::PeakDetectorAgent').each do |agent|
- agent.options['message'] = LiquidMigrator.convert_make_message(agent.options['message'])
- agent.save
- end
- Agent.where(:type => 'Agents::HumanTaskAgent').each do |agent|
- LiquidMigrator.convert_all_agent_options(agent)
- end
- end
- def down
- raise ActiveRecord::IrreversibleMigration, "Cannot revert migration to Liquid templating"
- end
- end
|