class AWS::ELB::AvailabilityZoneCollection

A collection that help maanage the availability zones for a load balancer.

load_balancer = AWS::ELB.new.load_balancers['my-load-balancer']

zones = load_balancer.availability_zones

# adding zones
zones.enable('us-east-1b', 'us-east-1c')

# removing zones
zones.disable('us-east-1b')

# enumerating enabled zones
zones.each do |zone|
  puts zone.name
end

Attributes

load_balancer[R]

@return [LoadBalancer] Returns the load balancer this list describes.

Public Class Methods

new(load_balancer, options = {}) click to toggle source

@param [LoadBalancer] The load balancer this list of availability

zones belongs to.
# File lib/aws/elb/availability_zone_collection.rb, line 41
def initialize load_balancer, options = {}
  @load_balancer = load_balancer
  super
end

Public Instance Methods

disable(*availability_zones) click to toggle source

Removes the specified EC2 availability zones from the set of configured availability zones for the load balancer.

load_balancer.availability_zones.disable("us-east-1a", "us-east-1b")

You can also pass {EC2::AvailabilityZone} objects:

# disable all availabilty zones
zones = AWS::EC2.new.availability_zones.to_a
load_balancer.availability_zones.disable(zones)

There must be at least one availability zone registered with a load balancer at all times. A client cannot remove all the availability zones from a load balancer. Once an availability zone is removed, all the instances registered with the load balancer that are in the removed availability zone go into the out of service state.

Upon availability zone removal, the load balancer attempts to equally balance the traffic among its remaining usable availability zones. Trying to remove an availability zone that was not associated with the load balancer does nothing.

@param [String,EC2::AvailabilityZone] availability_zones One or more

availability zone names (strings) or objects {EC2::AvailabilityZone}.

@return [nil]

# File lib/aws/elb/availability_zone_collection.rb, line 110
def disable *availability_zones

  names = availability_zones.flatten.collect do |av|
    av.is_a?(EC2::AvailabilityZone) ? av.name : av.to_s
  end

  client.disable_availability_zones_for_load_balancer(
    :load_balancer_name => load_balancer.name,
    :availability_zones => names)

  nil

end
enable(*availability_zones) click to toggle source

Adds one or more EC2 Availability Zones to the load balancer.

load_balancer.availability_zones.enable("us-east-1a", "us-east-1b")

You can also pass {EC2::AvailabilityZone} objects:

# enable all availabilty zones for this region
zones = AWS::EC2.new.availability_zones.to_a
load_balancer.availability_zones.enable(zones)

The load balancer evenly distributes requests across all its registered availability zones that contain instances. As a result, the client must ensure that its load balancer is appropriately scaled for each registered Availability Zone.

@param [String,EC2::AvailabilityZone] availability_zones One or more

availability zone names (strings) or objects {EC2::AvailabilityZone}.

@return [nil]

# File lib/aws/elb/availability_zone_collection.rb, line 69
def enable *availability_zones

  names = availability_zones.flatten.collect do |av|
    av.is_a?(EC2::AvailabilityZone) ? av.name : av.to_s
  end

  client.enable_availability_zones_for_load_balancer(
    :load_balancer_name => load_balancer.name,
    :availability_zones => names)

  nil

end

Protected Instance Methods

_each_item(options = {}) { |availability_zone| ... } click to toggle source
# File lib/aws/elb/availability_zone_collection.rb, line 125
def _each_item options = {}, &block
  load_balancer.availability_zone_names.each do |az_name|

    availability_zone = EC2::AvailabilityZone.new(
      az_name, :config => config)

    yield(availability_zone)

  end
end