class Xronor::Generator::CloudWatchEvents

Public Class Methods

generate(filename, options) click to toggle source
# File lib/xronor/generator/cloud_watch_events.rb, line 5
def generate(filename, options)
  jobs = Xronor::Parser.parse(filename)
  function_arn = lambda.retrieve_function_arn(options[:function])

  current_jobs = cwe.list_jobs(options[:prefix])
  add_jobs, delete_jobs = compare_jobs(options[:prefix], current_jobs, jobs)

  added_rule_arns = add_jobs.map do |job|
    if options[:dry_run]
      puts "[DRYRUN] #{job.name} will be registered to CloudWatch Events"
    else
      arn = cwe.register_job(
        job,
        options[:prefix],
        options[:cluster],
        options[:task_definition],
        options[:container],
        function_arn,
      )
      puts "Registered #{arn}"
      arn
    end
  end

  if options[:dry_run]
  else
    dynamodb.sync_rule_arns(options[:table], added_rule_arns, [])
  end

  delete_jobs.each do |job|
    if options[:dry_run]
      puts "[DRYRUN] #{job} will be deregistered from CloudWatch Events"
    else
      cwe.deregister_job(job)
      puts "Deregistered #{job}"
    end
  end
end

Private Class Methods

compare_jobs(prefix, current_jobs, next_jobs) click to toggle source
# File lib/xronor/generator/cloud_watch_events.rb, line 46
def compare_jobs(prefix, current_jobs, next_jobs)
  add_jobs, delete_jobs = [], []
  next_job_names = next_jobs.map do |job|
    job.cloud_watch_rule_name(prefix)
  end

  next_jobs.each do |job|
    add_jobs << job unless current_jobs.include?(job.cloud_watch_rule_name(prefix))
  end

  current_jobs.each do |job|
    delete_jobs << job unless next_job_names.include?(job)
  end

  return add_jobs, delete_jobs
end
cwe() click to toggle source
# File lib/xronor/generator/cloud_watch_events.rb, line 63
def cwe
  @cwe ||= Xronor::AWS::CloudWatchEvents.new
end
dynamodb() click to toggle source
# File lib/xronor/generator/cloud_watch_events.rb, line 67
def dynamodb
  @dynamodb ||= Xronor::AWS::DynamoDB.new
end
lambda() click to toggle source
# File lib/xronor/generator/cloud_watch_events.rb, line 71
def lambda
  @lambda ||= Xronor::AWS::Lambda.new
end