class Dogscaler::Cli

Public Instance Methods

apply() click to toggle source
# File lib/dogscaler/cli.rb, line 39
def apply
  Settings.load!(File.expand_path(options[:config])) if options[:config]

  if options[:debug]
    self.class.logger.level = Logger::DEBUG
  elsif options[:terse]
    self.class.logger.level = Logger::ERROR
  elsif options[:verbose]
    self.class.logger.level = Logger::INFO
  else
    self.class.logger.level = Logger::WARN
  end

  instances = []
  Settings.instances.each do |k,v|
    instance = Dogscaler::Instance.new
    instance.attributes = v.symbolize_keys
    instance.process_checks
    instances << instance
  end
  state = Dogscaler::State.new
  begin
    slack = Dogscaler::SlackClient.new(Settings.slack['api_token'], Settings.slack['channel'])
  rescue NoMethodError
    # Slack not configured
    slack = false
  end
  instances.each do |instance|
    if instance.preflight_checks(state)
      message = "Scaling #{instance.autoscalegroupname} from #{instance.capacity} to #{instance.change}"
      logger.info(message)
      if options[:dryrun]
        logger.info "Not updating due to dry run mode"
      else
        slack.send_message(message) if slack
        state.update(instance.autoscalegroupname)
        instance.update_capacity(options)
      end
    end
  end
  state.save!
end
config() click to toggle source
# File lib/dogscaler/cli.rb, line 34
def config
  Dogscaler::Config.new.generate
end
debug() click to toggle source
# File lib/dogscaler/cli.rb, line 23
def debug
  Settings.load!(File.expand_path(options[:config])) if options[:config]
  Settings.instances.each do |i|
    instance = Dogscaler::Instance.new
    instance.attributes = i.symbolize_keys
    dd_client = Dogscaler::Datadog.new(Settings.datadog)
    dd_client.process(instance)
  end
end