Class: EbDeployer::Beanstalk

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

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

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

Returns a new instance of Beanstalk.



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

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

Instance Attribute Details

#clientObject (readonly)

Returns the value of attribute client.



3
4
5
# File 'lib/eb_deployer/beanstalk.rb', line 3

def client
  @client
end

Instance Method Details

#application_exists?(app) ⇒ Boolean

Returns:

  • (Boolean)


16
17
18
# File 'lib/eb_deployer/beanstalk.rb', line 16

def application_exists?(app)
  @client.describe_applications(:application_names => [app])[:applications].any?
end

#application_version_labelsObject



55
56
57
# File 'lib/eb_deployer/beanstalk.rb', line 55

def application_version_labels
  @client.describe_application_versions[:application_versions].map { |apv| apv[:version_label] }
end

#create_application(app) ⇒ Object



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

def create_application(app)
  @client.create_application(:application_name => app)
end

#create_application_version(app_name, version_label, source_bundle) ⇒ Object



49
50
51
52
53
# File 'lib/eb_deployer/beanstalk.rb', line 49

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, settings) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'lib/eb_deployer/beanstalk.rb', line 35

def create_environment(app_name, env_name, stack_name, cname_prefix, version, settings)
  request = {:application_name => app_name,
    :environment_name => env_name,
    :solution_stack_name => stack_name,
    :version_label => version,
    :option_settings => settings }
  request[:cname_prefix] = cname_prefix if cname_prefix
  @client.create_environment(request)
end

#delete_application(app) ⇒ Object



12
13
14
# File 'lib/eb_deployer/beanstalk.rb', line 12

def delete_application(app)
  @client.delete_application(:application_name => app)
end

#delete_environment(app_name, env_name) ⇒ Object



45
46
47
# File 'lib/eb_deployer/beanstalk.rb', line 45

def delete_environment(app_name, env_name)
  @client.terminate_environment(:environment_name => env_name)
end

#environment_cname(app_name, env_name) ⇒ Object



72
73
74
75
# File 'lib/eb_deployer/beanstalk.rb', line 72

def environment_cname(app_name, env_name)
  env = alive_envs(app_name, [env_name]).first
  env && env[:cname]
end

#environment_cname_prefix(app_name, env_name) ⇒ Object



65
66
67
68
69
70
# File 'lib/eb_deployer/beanstalk.rb', line 65

def environment_cname_prefix(app_name, env_name)
  cname = environment_cname(app_name, env_name)
  if cname =~ /^(.+)\.elasticbeanstalk\.com/
    $1
  end
end

#environment_exists?(app_name, env_name) ⇒ Boolean

Returns:

  • (Boolean)


27
28
29
# File 'lib/eb_deployer/beanstalk.rb', line 27

def environment_exists?(app_name, env_name)
  alive_envs(app_name, [env_name]).any?
end

#environment_health_state(app_name, env_name) ⇒ Object



77
78
79
80
# File 'lib/eb_deployer/beanstalk.rb', line 77

def environment_health_state(app_name, env_name)
  env = alive_envs(app_name, [env_name]).first
  env && env[:health]
end

#environment_names_for_application(app_name) ⇒ Object



31
32
33
# File 'lib/eb_deployer/beanstalk.rb', line 31

def environment_names_for_application(app_name)
  alive_envs(app_name).collect { |env| env[:environment_name] }
end

#environment_swap_cname(app_name, env1, env2) ⇒ Object



82
83
84
85
86
# File 'lib/eb_deployer/beanstalk.rb', line 82

def environment_swap_cname(app_name, env1, env2)
  env1_id, env2_id = convert_env_name_to_id(app_name, [env1, env2])
  @client.swap_environment_cnam_es(:source_environment_id => env1_id,
                                   :destination_environment_id => env2_id)
end

#fetch_events(app_name, env_name, params, &block) ⇒ Object



59
60
61
62
63
# File 'lib/eb_deployer/beanstalk.rb', line 59

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

#update_environment(app_name, env_name, version, settings) ⇒ Object



20
21
22
23
24
25
# File 'lib/eb_deployer/beanstalk.rb', line 20

def update_environment(app_name, env_name, version, settings)
  env_id = convert_env_name_to_id(app_name, [env_name]).first
  @client.update_environment(:environment_id => env_id,
                             :version_label => version,
                             :option_settings => settings)
end