# Copyright 2011-2012 Amazon.com, Inc. or its affiliates. All Rights Reserved. # # Licensed under the Apache License, Version 2.0 (the "License"). You # may not use this file except in compliance with the License. A copy of # the License is located at # # http://aws.amazon.com/apache2.0/ # # or in the "license" file accompanying this file. This file is # distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF # ANY KIND, either express or implied. See the License for the specific # language governing permissions and limitations under the License. module AWS class EC2 class ElasticIpCollection < Collection def create response = client.allocate_address ElasticIp.new(response.public_ip, :config => config) end alias_method :allocate, :create # @param [String] public_ip The public IP address of an elastic ip. # @return [ElasticIp] The elastic IP with the given address. def [] public_ip super end # Specify one or more criteria to filter elastic IP addresses by. # A subsequent call to #each will limit the resutls returned # by provided filters. # # * Chain multiple calls of #filter together to AND multiple conditions # together. # # * Supply multiple values to a singler #filter call to OR those # value conditions together. # # * '*' matches one or more characters and '?' matches any one # character. # # === Valid Filters # # * domain - Whether the address is a EC2 address, or a VPC address. # Valid values include 'standard' and 'vpc' # * instance-id - Instance the address is associated with (if any). # * public-ip - The Elastic IP address. # * allocation-id - Allocation ID for the address. For VPC addresses # only. # * association-id - Association ID for the address. For VPC addresses # only. # # @return [ElasticIpCollection] A new collection that represents # a subset of the elastic IP addresses associated with this account. # Yields once for each elastic IP address. # # @yield [elastic_ip] # @yieldparam [ElasticIp] elastic_ip def each &block response = filtered_request(:describe_addresses) response.addresses_set.each do |address| options = {} options[:config] = config options[:instance_id] = address.instance_id elastic_ip = ElasticIp.new(address.public_ip, options) yield(elastic_ip) end end protected def member_class ElasticIp end end end end