class AWS::AutoScaling::TagCollection

Provides an interface for enumerating tags defined in Auto Scaling.

auto_scaling = AWS::AutoScaling.new
auto_scaling.tags.each do |tag|
   puts "#{tag.key}:#{tag.value}"
end

Filters

You can filter the tags returned using {#filter}:

# returns tags with the key "role"
auto_scaling.filter(:key, 'role').to_a

# returns tags with the key "role" and value "webserver"
auto_scaling.filter(:key, 'role').filter(:value, 'webserver')to_a

# returns tags with the Auto Scaling group name "group1"
auto_scaling.filter(:auto_scaling_group, 'group1').to_a

# returns all tags that propagate at launch
auto_scaling.filter(:propagate_at_launch, true).to_a

Creating Tags

You can create Auto Scaling tags when you:

Both of these methods accept a :tags option.

tags = [
  { :key => 'auto-scaling-instance' },       # tag name only
  { :key => 'role', :value => 'webserver' }, # tag name and value
]

# creating a group with tags
group = auto_scaling.groups.create('group-name', :tags => tags, ...)

# updating a group's tags
group.update(:tags => tags)

Public Class Methods

new(options = {}) click to toggle source

@private

Calls superclass method
# File lib/aws/auto_scaling/tag_collection.rb, line 65
def initialize options = {}
  @filters = options.delete(:filters) || []
  super
end

Public Instance Methods

filter(name, *values) click to toggle source

Filters the tags by the given filter name and value(s).

# return tags with the key "role" and the value "webserver"
auto_scaling.tags.filter(:key, 'role').filer(:value, 'webserver')

@param [Symbol] name Valid filter names include:

* :key
* :value
* :propagate_at_launch
* :auto_scaling_group

@param [Array<String>] values

@return [TagCollection]

# File lib/aws/auto_scaling/tag_collection.rb, line 86
def filter name, *values
  name = name.to_s.gsub(/_/, '-')
  values = values.flatten.map(&:to_s)
  filter = { :name => name, :values => values }
  TagCollection.new(:filters => @filters + [filter], :config => config)
end

Protected Instance Methods

_each_item(next_token, limit, options = {}) { |tag(to_hash.merge(:config => config))| ... } click to toggle source
# File lib/aws/auto_scaling/tag_collection.rb, line 95
def _each_item next_token, limit, options = {}, &block

  options[:next_token] = next_token if next_token
  options[:max_records] = limit if limit
  options[:filters] = @filters unless @filters.empty?

  resp = client.describe_tags(options)
  resp.tags.each do |tag|
    yield(Tag.new(tag.to_hash.merge(:config => config)))
  end

  resp.data[:next_token]

end