class EbDeployer::AWSDriver::Beanstalk

Constants

TIERS

Attributes

client[R]

Public Class Methods

new(client=Aws::ElasticBeanstalk::Client.new) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 7
def initialize(client=Aws::ElasticBeanstalk::Client.new)
  @client = client
end

Public Instance Methods

application_exists?(app) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 19
def application_exists?(app)
  @client.describe_applications(:application_names => [app])[:applications].any?
end
application_version_labels(app_name) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 82
def application_version_labels(app_name)
  application_versions(app_name).map { |apv| apv[:version_label] }
end
application_versions(app_name) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 86
def application_versions(app_name)
  request = { :application_name => app_name }
  @client.describe_application_versions(request)[:application_versions]
end
create_application(app) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 11
def create_application(app)
  @client.create_application(:application_name => app)
end
create_application_version(app_name, version_label, source_bundle) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 76
def create_application_version(app_name, version_label, source_bundle)
  @client.create_application_version(:application_name => app_name,
                                     :source_bundle => source_bundle,
                                     :version_label => version_label)
end
create_environment(app_name, env_name, stack_name, cname_prefix, version, tier, tags, settings, template_name) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 48
def create_environment(app_name, env_name, stack_name, cname_prefix, version, tier, tags, settings, template_name)
  request = reject_nil({
    :application_name => app_name,
    :environment_name => env_name,
    :solution_stack_name => stack_name,
    :version_label => version,
    :option_settings => settings,
    :tier => environment_tier(tier),
    :cname_prefix => cname_prefix,
    :tags => tags,
    :template_name => template_name
  })
  @client.create_environment(request)
end
delete_application(app) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 15
def delete_application(app)
  @client.delete_application(:application_name => app)
end
delete_application_version(app_name, version, delete_source_bundle) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 67
def delete_application_version(app_name, version, delete_source_bundle)
  request = {
    :application_name => app_name,
    :version_label => version,
    :delete_source_bundle => delete_source_bundle
  }
  @client.delete_application_version(request)
end
delete_environment(app_name, env_name) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 63
def delete_environment(app_name, env_name)
  @client.terminate_environment(:environment_name => env_name)
end
environment_cname(app_name, env_name) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 104
def environment_cname(app_name, env_name)
  get_environment_attribute(app_name, env_name, :cname)
end
environment_cname_prefix(app_name, env_name) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 97
def environment_cname_prefix(app_name, env_name)
  cname = environment_cname(app_name, env_name)
  if cname =~ /^([^\.]+)(?:\.(?:[a-z0-9\-]+))?\.elasticbeanstalk\.com/i
    $1
  end
end
environment_exists?(app_name, env_name) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 40
def environment_exists?(app_name, env_name)
  alive_envs(app_name, [env_name]).any?
end
environment_health_state(app_name, env_name) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 108
def environment_health_state(app_name, env_name)
  get_environment_attribute(app_name, env_name, :health)
end
environment_names_for_application(app_name) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 44
def environment_names_for_application(app_name)
  alive_envs(app_name).collect { |env| env[:environment_name] }
end
environment_status(app_name, env_name) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 112
def environment_status(app_name, env_name)
  get_environment_attribute(app_name, env_name, :status)
end
environment_swap_cname(app_name, env1, env2) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 120
def environment_swap_cname(app_name, env1, env2)
  env1_id, env2_id = convert_env_name_to_id(app_name, [env1, env2])
  @client.swap_environment_cnames(:source_environment_id => env1_id,
                                   :destination_environment_id => env2_id)
end
environment_verion_label(app_name, env_name) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 116
def environment_verion_label(app_name, env_name)
  get_environment_attribute(app_name, env_name, :version_label)
end
fetch_events(app_name, env_name, params, &block) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 91
def fetch_events(app_name, env_name, params, &block)
  response = @client.describe_events(params.merge(:application_name => app_name,
                                                  :environment_name => env_name))
  return [response[:events], response[:next_token]]
end
list_solution_stack_names() click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 126
def list_solution_stack_names
  @client.list_available_solution_stacks[:solution_stacks]
end
update_environment(app_name, env_name, version, tier, settings, template_name) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 28
def update_environment(app_name, env_name, version, tier, settings, template_name)
  env_id = convert_env_name_to_id(app_name, [env_name]).first
  request = reject_nil({
    :environment_id => env_id,
    :version_label => version,
    :option_settings => settings,
    :tier => environment_tier(tier),
    :template_name => template_name
  })
  @client.update_environment(request)
end
update_environment_settings(app, env, settings) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 23
def update_environment_settings(app, env, settings)
  env_id = convert_env_name_to_id(app, [env]).first
  @client.update_environment(:environment_id => env_id, :option_settings => settings)
end

Private Instance Methods

alive_envs(app_name, env_names=[]) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 151
def alive_envs(app_name, env_names=[])
  envs = @client.describe_environments(:application_name => app_name, :environment_names => env_names)[:environments]

  envs.select {|e| e[:status] != 'Terminated' }
end
convert_env_name_to_id(app_name, env_names) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 146
def convert_env_name_to_id(app_name, env_names)
  envs = alive_envs(app_name, env_names)
  envs.map { |env| env[:environment_id] }
end
environment_tier(name) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 142
def environment_tier(name)
  TIERS.find {|t| t[:name].downcase == name.downcase} || raise("No tier found with name #{name.inspect}")
end
get_environment_attribute(app_name, env_name, attribute) click to toggle source
# File lib/eb_deployer/aws_driver/beanstalk.rb, line 137
def get_environment_attribute(app_name, env_name, attribute)
  env = alive_envs(app_name, [env_name]).first
  env && env[attribute]
end