module AWS::EC2::FilteredCollection
def collection_with(options = {})
def collection_with(options = {}) self.class.new(preserved_options.merge(options)) end
def filter filter_name, *values
character.
* '*' matches one or more characters and '?' matches any one
value conditions together.
* Supply multiple values to a singler #filter call to OR those
together.
* Chain multiple calls of #filter together to AND multiple conditions
by provided filters.
A subsequent call to #each will limit the results returned
Specify one or more criteria to filter elastic IP addresses by.
def filter filter_name, *values filters = @filters.dup filters << { :name => filter_name, :values => values.flatten } collection_with(:filters => filters) end
def filter_value_for filter_name
def filter_value_for filter_name @filters.each do |filter| return filter[:values].first if filter[:name] == filter_name end nil end
def filtered_request client_method, options = {}, &block
- Private: -
def filtered_request client_method, options = {}, &block options[:filters] = @filters unless @filters.empty? client.send(client_method, options) end
def initialize options = {}
def initialize options = {} @filters = options[:filters] || [] super end
def preserved_options
def preserved_options { :config => config, :filters => @filters } end
def subnet_id_option options
def subnet_id_option options subnet_id = options.delete(:subnet) subnet_id ||= options[:subnet_id] subnet_id ||= filter_value_for('subnet-id') subnet_id = subnet_id.id if subnet_id.is_a?(Subnet) subnet_id end
def vpc_id_option options
def vpc_id_option options vpc_id = options[:vpc] vpc_id ||= options[:vpc_id] vpc_id ||= filter_value_for('vpc-id') vpc_id = vpc_id.id if vpc_id.is_a?(VPC) vpc_id end