Class: Fog::AWS::ElasticBeanstalk::Environment

Inherits:
Model
  • Object
show all
Defined in:
lib/fog/aws/models/beanstalk/environment.rb

Instance Attribute Summary

Attributes inherited from Model

#collection, #service

Instance Method Summary collapse

Methods inherited from Model

#initialize, #inspect, #reload, #symbolize_keys, #to_json, #wait_for

Methods included from Fog::Attributes::ClassMethods

#_load, #aliases, #attribute, #attributes, #identity, #ignore_attributes, #ignored_attributes

Methods included from Core::DeprecatedConnectionAccessors

#connection, #connection=, #prepare_service_value

Methods included from Fog::Attributes::InstanceMethods

#_dump, #attributes, #dup, #identity, #identity=, #merge_attributes, #new_record?, #persisted?, #requires, #requires_one

Constructor Details

This class inherits a constructor from Fog::Model

Instance Method Details

#destroyObject



117
118
119
120
121
# File 'lib/fog/aws/models/beanstalk/environment.rb', line 117

def destroy
  requires :id
  service.terminate_environment({'EnvironmentId' => id})
  true
end

#eventsObject

Return events related to this version



59
60
61
62
# File 'lib/fog/aws/models/beanstalk/environment.rb', line 59

def events
  requires :id
  service.events.all({'EnvironmentId' => id})
end

#healthy?Boolean

Returns:

  • (Boolean)


28
29
30
# File 'lib/fog/aws/models/beanstalk/environment.rb', line 28

def healthy?
  health == 'Green'
end

#live_resourcesObject

Returns the current live resources for this environment



41
42
43
44
45
46
# File 'lib/fog/aws/models/beanstalk/environment.rb', line 41

def live_resources
  requires :id
  data = service.describe_environment_resources({'EnvironmentId' => id}).body['DescribeEnvironmentResourcesResult']['EnvironmentResources']
  data.delete('EnvironmentName') # Delete the environment name from the result, only return actual resources
  data
end

#load_balancer(elb_connection = Fog::AWS[:elb]) ⇒ Object

Returns the load balancer object associated with the environment.



49
50
51
52
53
54
55
56
# File 'lib/fog/aws/models/beanstalk/environment.rb', line 49

def load_balancer(elb_connection = Fog::AWS[:elb])

  if resources.nil?
    elb_connection.load_balancers.get(live_resources['LoadBalancers'].first['Name'])
  else
    elb_connection.load_balancers.get(resources['LoadBalancer']['LoadBalancerName'])
  end
end

#ready?Boolean

Returns:

  • (Boolean)


32
33
34
# File 'lib/fog/aws/models/beanstalk/environment.rb', line 32

def ready?
  status == 'Ready'
end

#rebuildObject

Rebuilds the environment



72
73
74
75
76
# File 'lib/fog/aws/models/beanstalk/environment.rb', line 72

def rebuild
  requires :id
  service.rebuild_environment({'EnvironmentId' => id})
  reload
end

#restart_app_serverObject

Restarts the app servers in this environment



65
66
67
68
69
# File 'lib/fog/aws/models/beanstalk/environment.rb', line 65

def restart_app_server
  requires :id
  service.restart_app_server({'EnvironmentId' => id})
  reload
end

#saveObject



123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# File 'lib/fog/aws/models/beanstalk/environment.rb', line 123

def save
  requires :name, :application_name
  requires_one :template_name, :solution_stack_name

  options = {
      'ApplicationName' => application_name,
      'CNAMEPrefix' => cname_prefix,
      'Description' => description,
      'EnvironmentName' => name,
      'OptionSettings' => option_settings,
      'OptionsToRemove' => options_to_remove,
      'SolutionStackName' => solution_stack_name,
      'TemplateName' => template_name,
      'VersionLabel' => version_label
  }
  options.delete_if {|key, value| value.nil?}

  data = service.create_environment(options).body['CreateEnvironmentResult']
  merge_attributes(data)
  true
end

#swap_cnames(source) ⇒ Object



78
79
80
81
82
83
84
85
86
# File 'lib/fog/aws/models/beanstalk/environment.rb', line 78

def swap_cnames(source)
  requires :name
  service.swap_environment_cnames({
      'SourceEnvironmentName' => source.name,
      'DestinationEnvironmentName' => name
                                     })
  source.reload
  reload
end

#terminated?Boolean

Returns:

  • (Boolean)


36
37
38
# File 'lib/fog/aws/models/beanstalk/environment.rb', line 36

def terminated?
  status == 'Terminated'
end

#versionObject

Return the version object for this environment



89
90
91
92
# File 'lib/fog/aws/models/beanstalk/environment.rb', line 89

def version
  requires :application_name, :version_label
  service.versions.get(application_name, version_label)
end

#version=(new_version) ⇒ Object

Update the running version of this environment



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/fog/aws/models/beanstalk/environment.rb', line 95

def version=(new_version)
  requires :id
  if new_version.is_a?(String)
    new_version_label = new_version
  elsif new_version.is_a?(Fog::AWS::ElasticBeanstalk::Version)
    new_version_label = new_version.label
  else
    raise "Unknown type for new_version, must be either String or Fog::AWS::ElasticBeanstalk::Version"
  end

  if new_version.nil?
    raise "Version label not specified."
  end

  data = service.update_environment({
      'EnvironmentId' => id,
      'VersionLabel' => new_version_label
                                }).body['UpdateEnvironmentResult']

  merge_attributes(data)
end