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