Class: AWS::ELB::InstanceCollection
- Inherits:
-
Object
- Object
- AWS::ELB::InstanceCollection
- Includes:
- Core::Collection::Simple
- Defined in:
- lib/aws/elb/instance_collection.rb
Instance Attribute Summary collapse
-
#load_balancer ⇒ LoadBalancer
readonly
Returns the load balancer this collection belongs to.
Instance Method Summary collapse
-
#[](instance_id) ⇒ EC2::Instance
Returns an AWS::EC2::Instance object with 3 extra methods added:.
- #deregister(*instances) ⇒ Object (also: #remove)
-
#health(*instances) ⇒ Array<Hash>
Returns an array of instance health descriptions.
-
#initialize(load_balancer, options = {}) ⇒ InstanceCollection
constructor
A new instance of InstanceCollection.
- #register(*instances) ⇒ Object (also: #add)
Methods included from Core::Collection
#each, #each_batch, #enum, #first, #in_groups_of, #page
Constructor Details
#initialize(load_balancer, options = {}) ⇒ InstanceCollection
Returns a new instance of InstanceCollection.
21 22 23 24 |
# File 'lib/aws/elb/instance_collection.rb', line 21 def initialize load_balancer, = {} @load_balancer = load_balancer super end |
Instance Attribute Details
#load_balancer ⇒ LoadBalancer (readonly)
Returns the load balancer this collection belongs to.
125 126 127 |
# File 'lib/aws/elb/instance_collection.rb', line 125 def load_balancer @load_balancer end |
Instance Method Details
#[](instance_id) ⇒ EC2::Instance
Returns an AWS::EC2::Instance object with 3 extra methods added:
#load_balancer
#remove_from_load_balancer
#elb_health
See #health for more information about what #elb_health
returns.
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/aws/elb/instance_collection.rb', line 37 def [] instance_id load_balancer = self.load_balancer instance = EC2.new(:config => config).instances[instance_id] Core::MetaUtils.extend_method(instance, :load_balancer) do load_balancer end Core::MetaUtils.extend_method(instance, :elb_health) do health = load_balancer.instances.health(id).first health.delete(:instance) health end Core::MetaUtils.extend_method(instance, :remove_from_load_balancer) do load_balancer.instances.deregister(self) end instance end |
#deregister(*instances) ⇒ Object Also known as: remove
138 139 140 141 142 143 144 145 146 |
# File 'lib/aws/elb/instance_collection.rb', line 138 def deregister *instances client.deregister_instances_from_load_balancer( :load_balancer_name => load_balancer.name, :instances => instance_ids(instances)) nil end |
#health(*instances) ⇒ Array<Hash>
Returns an array of instance health descriptions. Each description is a hash with the following entries:
:instance
- The AWS::EC2::Instance being described.:description
- Provides a description of the instance.:state
- Specifies the current state of the instance.:reason_code
- Provides information about the cause of OutOfService instances. Specifically, it indicates whether the cause is Elastic Load Balancing or the instance behind the load balancer.
You can get the health of all instances for this load balancer by passing no arguments to this method:
# get the health of all instances in the collection
load_balancer.instances.health.each do |instance_health|
puts "Instance: " + instance_health[:instance].id
puts "description: " + instance_health[:description]
puts "state: " + instance_health[:state]
puts "reason code: " + instance_health[:reason_code]
end
If you want the health of a specific list of instances, pass instance ids or instance objects to this method:
# get the health for a few specific instances
load_balancer.instances.health('i-12345', 'i-67890').each{|h| ... }
Health for a Single Instance
If you want the health of a single instance you can use the #[] instead:
load_balancer.instances['i-123456'].elb_health
# => { :state => ..., :reason_code => ..., :description => ... }
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 |
# File 'lib/aws/elb/instance_collection.rb', line 104 def health *instances instance_ids = instance_ids(instances) opts = {} opts[:load_balancer_name] = load_balancer.name opts[:instances] = instance_ids unless instance_ids.empty? client.describe_instance_health(opts).instance_states.map do |state| { :instance => self[state.instance_id], :description => state.description, :state => state.state, :reason_code => state.reason_code, } end end |
#register(*instances) ⇒ Object Also known as: add
127 128 129 130 131 132 133 134 135 |
# File 'lib/aws/elb/instance_collection.rb', line 127 def register *instances client.register_instances_with_load_balancer( :load_balancer_name => load_balancer.name, :instances => instance_ids(instances)) nil end |