Class: EbDeployer::AWSDriver::Beanstalk

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
lib/eb_deployer/aws_driver/beanstalk.rb

Constant Summary

Constants included from Utils

Utils::BACKOFF_INITIAL_SLEEP

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils

#backoff, #reject_nil, #symbolize_keys

Constructor Details

#initialize(client = Aws::ElasticBeanstalk::Client.new) ⇒ Beanstalk

Returns a new instance of Beanstalk.



7
8
9
# File 'lib/eb_deployer/aws_driver/beanstalk.rb', line 7

def initialize(client=Aws::ElasticBeanstalk::Client.new)
  @client = client
end

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



5
6
7
# File 'lib/eb_deployer/aws_driver/beanstalk.rb', line 5

def client
  @client
end

Instance Method Details

#application_exists?(app) ⇒ Boolean

Returns:

  • (Boolean)


19
20
21
# 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) ⇒ Object



82
83
84
# 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) ⇒ Object



86
87
88
89
# 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) ⇒ Object



11
12
13
# 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) ⇒ Object



76
77
78
79
80
# 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) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
# 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) ⇒ Object



15
16
17
# 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) ⇒ Object



67
68
69
70
71
72
73
74
# 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) ⇒ Object



63
64
65
# 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) ⇒ Object



104
105
106
# 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) ⇒ Object



97
98
99
100
101
102
# 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) ⇒ Boolean

Returns:

  • (Boolean)


40
41
42
# 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) ⇒ Object



108
109
110
# 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) ⇒ Object



44
45
46
# 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) ⇒ Object



112
113
114
# 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) ⇒ Object



120
121
122
123
124
# 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) ⇒ Object



116
117
118
# 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) ⇒ Object



91
92
93
94
95
# 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_namesObject



126
127
128
# 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) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
# 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) ⇒ Object



23
24
25
26
# 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