class AWS::AutoScaling::Group

@attr_reader [String] arn

@attr_reader [Array<String>] availability_zone_names

@attr_reader [Time] created_time

@attr_reader [Integer] default_cooldown

@attr_reader [Integer] desired_capacity

@attr_reader [Array<Hash>] enabled_metrics Returns a hash of enabled

metric names (keys) and granularities (values).

@attr_reader [Integer] health_check_grace_period

@attr_reader [Symbol] health_check_type Returns :ec2 or :vpc.

@attr_reader [String] launch_configuraiton_name

@attr_reader [Array<String>] load_balancer_names

@attr_reader [Integer] min_size

@attr_reader [Integer] max_size

@attr_reader [String,nil] placement_group

@attr_reader [Hash] suspended_processes A hash of suspended process

names (keys) and reasons (values).

Attributes

name[R]

@return [String]

Public Class Methods

new(name, options = {}) click to toggle source
# File lib/aws/auto_scaling/group.rb, line 51
def initialize name, options = {}
  @name = name
  super
end

Public Instance Methods

activities() click to toggle source

@return [ActivityCollection]

# File lib/aws/auto_scaling/group.rb, line 146
def activities
  ActivityCollection.new(:group => self)
end
auto_scaling_instances() click to toggle source

@return [Array<AutoScaling::Instance>]

# File lib/aws/auto_scaling/group.rb, line 151
def auto_scaling_instances
  instances.collect do |details|
    Instance.new_from(
      :describe_auto_scaling_groups, 
      details,
      details.instance_id, 
      :auto_scaling_group_name => name, # not provided by the response
      :config => config)
  end
end
availability_zones() click to toggle source

@return [Array<EC2::AvailabilityZone>]

# File lib/aws/auto_scaling/group.rb, line 187
def availability_zones
  availability_zone_names.collect do |az_name|
    EC2::AvailabilityZone.new(az_name, :config => config)
  end
end
delete(options = {}) click to toggle source

Deletes the Auto Scaling group. If you pass :force as true then all the instances associated with this group will also be terminated.

@see delete!

@param [Hash] options

@option options [Boolean] :force (false) When true, the Auto Scaling

group will be deleted along with all instances associated with 
the group, without waiting for all instances to be terminated.

@return [nil]

# File lib/aws/auto_scaling/group.rb, line 383
def delete options = {}
  client_opts = {}
  client_opts[:force_delete] = options[:force] == true
  client_opts[:auto_scaling_group_name] = name
  client.delete_auto_scaling_group(client_opts)
  nil
end
delete!() click to toggle source

Deletes the Auto Scaling group along with all instances associated with the group, without waiting for all instances to be terminated. @return [nil]

# File lib/aws/auto_scaling/group.rb, line 395
def delete!
  delete(:force => true)
  nil
end
delete_all_tags() click to toggle source

Removes all tags from this Auto Scaling group. @return [nil]

# File lib/aws/auto_scaling/group.rb, line 364
def delete_all_tags
  delete_tags(self.tags)
  nil
end
delete_tags(*tags) click to toggle source

Deletes specific tags from this Auto Scaling group.

group.delete_tags([
  { :key => 'role', :value => 'webserver' },
])

You may also pass {Tag} objects.

@param [Array<Tag,Hash>] tags An array of {Tag} objects or

tag hashes to remove. If you pass hashes they should have
the following keys:

* +:key+
* +:value+
* +:propagate_at_launch+

@return [nil]

# File lib/aws/auto_scaling/group.rb, line 352
def delete_tags *tags
  tags = tags.flatten.collect do |tag|
    tag.to_hash.merge(
      :resource_type => 'auto-scaling-group',
      :resource_id => name)
  end
  client.delete_tags(:tags => tags)
  nil
end
disable_all_metrics_collection() click to toggle source

Disables all metrics collection for the Auto Scaling group. @return [nil]

# File lib/aws/auto_scaling/group.rb, line 299
def disable_all_metrics_collection
  disable_metrics_collection
end
disable_metrics_collection(*metrics) click to toggle source

@param [Array<String>] metrics A list of metrics to collect. @return [nil]

# File lib/aws/auto_scaling/group.rb, line 289
def disable_metrics_collection *metrics
  client_opts = {}
  client_opts[:auto_scaling_group_name] = name
  client_opts[:metrics] = metrics.flatten
  client.disable_metrics_collection(client_opts)
  nil
end
ec2_instances() click to toggle source

Returns a collection that represents the instances belonging to this Auto Scaling group. You can use this collection to further refine the instances you are interested in:

group.ec2_instances.filter('availability-zone', 'us-east-1a').each do |i|
  puts instance.id
end

@return [EC2::InstanceCollection] Returns an instance collection

(without making a request) that represents the instances 
belonging to this Auto Scaling group.
# File lib/aws/auto_scaling/group.rb, line 174
def ec2_instances
  instances = EC2::InstanceCollection.new(:config => config)
  instances.tagged('aws:autoscaling:groupName').tagged_values(name)
end
enable_all_metrics_collection() click to toggle source

Enables all metrics collection for the Auto Scaling group. @return [nil]

# File lib/aws/auto_scaling/group.rb, line 283
def enable_all_metrics_collection
  enable_metrics_collection
end
enable_metrics_collection(*metrics) click to toggle source

@param [Array<String>] metrics A list of metrics to collect. @return [nil]

# File lib/aws/auto_scaling/group.rb, line 272
def enable_metrics_collection *metrics
  client_opts = {}
  client_opts[:auto_scaling_group_name] = name
  client_opts[:granularity] = '1Minute'
  client_opts[:metrics] = metrics.flatten
  client.enable_metrics_collection(client_opts)
  nil
end
exists?() click to toggle source

@return [Boolean]

# File lib/aws/auto_scaling/group.rb, line 401
def exists?
  client_opts = {}
  client_opts[:auto_scaling_group_names] = [name]
  resp = client.describe_auto_scaling_groups(client_opts)  
  !resp.auto_scaling_groups.empty?
end
launch_configuration() click to toggle source

@return [LaunchConfiguration]

# File lib/aws/auto_scaling/group.rb, line 141
def launch_configuration
  LaunchConfiguration.new(launch_configuration_name, :config => config)
end
load_balancers() click to toggle source

@return [Array,<ELB::LoadBalancer>]

# File lib/aws/auto_scaling/group.rb, line 194
def load_balancers
  load_balancer_names.collect do |name|
    ELB::LoadBalancer.new(name, :config => config)
  end
end
notification_configurations() click to toggle source

@return [NotificationConfigurationCollection]

# File lib/aws/auto_scaling/group.rb, line 123
def notification_configurations
  NotificationConfigurationCollection.new(:group => self)
end
resume_all_processes() click to toggle source

Resumes all processes for this Auto Scaling group. @return [nil]

# File lib/aws/auto_scaling/group.rb, line 266
def resume_all_processes
  resume_processes
end
resume_processes(*processes) click to toggle source

Resumes processes for this Auto Scaling group.

# resume two processes by name
auto_scaling_group.suspend_processes 'Launch', 'AZRebalance'

@param [Array<String>] processes A list of process to resume.

@return [nil]

# File lib/aws/auto_scaling/group.rb, line 256
def resume_processes *processes
  client_opts = {}
  client_opts[:auto_scaling_group_name] = name
  client_opts[:scaling_processes] = processes.flatten
  client.resume_processes(client_opts)
  nil
end
scaling_policies() click to toggle source

@return [ScalingPolicyCollection]

# File lib/aws/auto_scaling/group.rb, line 118
def scaling_policies
  ScalingPolicyCollection.new(self)
end
scheduled_actions() click to toggle source

@return [ScheduledActionCollection]

# File lib/aws/auto_scaling/group.rb, line 128
def scheduled_actions
  actions = ScheduledActionCollection.new(:config => config)
  actions.filter(:group => self)
end
set_desired_capacity(capacity, options = {}) click to toggle source

Adjusts the desired size of the Auto Scaling group by initiating scaling activities. When reducing the size of the group, it is not possible to define which Amazon EC2 instances will be terminated. This applies to any Auto Scaling decisions that might result in terminating instances.

@param [Integer] capacity The new capacity setting for this Auto

Scaling group.

@param [Hash] options

@option options [Boolean] :honor_cooldown (false)

@return [nil]

# File lib/aws/auto_scaling/group.rb, line 215
def set_desired_capacity capacity, options = {}
  client_opts = {}
  client_opts[:auto_scaling_group_name] = name
  client_opts[:desired_capacity] = capacity
  client_opts[:honor_cooldown] = options[:honor_cooldown] == true
  client.set_desired_capacity(client_opts)
  nil
end
subnets() click to toggle source

@return [Array<EC2::Subnet>]

# File lib/aws/auto_scaling/group.rb, line 180
def subnets
  vpc_zone_identifier.to_s.split(%r,/).collect do |subnet_id|
    EC2::Subnet.new(subnet_id, :config => config)
  end
end
suspend_all_processes() click to toggle source

Suspends all processes for this Auto Scaling group. @return [nil]

# File lib/aws/auto_scaling/group.rb, line 243
def suspend_all_processes
  suspend_processes
end
suspend_processes(*processes) click to toggle source

Suspends processes for this Auto Scaling group.

# suspend two processes by name
auto_scaling_group.suspend_processes 'Launch', 'AZRebalance'

@param [Array<String>] processes A list of process to suspend.

@return [nil]

# File lib/aws/auto_scaling/group.rb, line 233
def suspend_processes *processes
  client_opts = {}
  client_opts[:auto_scaling_group_name] = name
  client_opts[:scaling_processes] = processes.flatten
  client.suspend_processes(client_opts)
  nil
end
tags() click to toggle source

@return [Tag]

# File lib/aws/auto_scaling/group.rb, line 134
def tags
  tag_details.collect do |tag|
    Tag.new(tag.to_hash.merge(:config => config))
  end
end
update(options = {}) click to toggle source

Update one or more attributes on the Auto Scaling group.

@param (see AWS::AutoScaling::GroupOptions#group_options)

@option (see AWS::AutoScaling::GroupOptions#group_options)

@return [nil]

# File lib/aws/auto_scaling/group.rb, line 311
def update options = {}

  group_opts = group_options(options) 

  # tags must be updated using a separate request from the
  # other attributes, *sigh*
  if tags = group_opts.delete(:tags)
    tags.map(&:to_hash).each do |tag|
      tag[:resource_type] = 'auto-scaling-group'
      tag[:resource_id] = name
    end
    client.create_or_update_tags(:tags => tags)
  end

  unless group_opts.empty?
    client_opts = group_opts.merge(:auto_scaling_group_name => name)
    client.update_auto_scaling_group(client_opts)
  end

  nil

end

Protected Instance Methods

get_resource(attr_name = nil) click to toggle source
# File lib/aws/auto_scaling/group.rb, line 414
def get_resource attr_name = nil
  client.describe_auto_scaling_groups(:auto_scaling_group_names => [name])  
end
resource_identifiers() click to toggle source
# File lib/aws/auto_scaling/group.rb, line 410
def resource_identifiers
  [[:name, name]]
end