@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_configuration_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).
@return [String]
# File lib/aws/auto_scaling/group.rb, line 51 def initialize name, options = {} @name = name super end
@return [ActivityCollection]
# File lib/aws/auto_scaling/group.rb, line 148 def activities ActivityCollection.new(:group => self) end
@return [Array<AutoScaling::Instance>]
# File lib/aws/auto_scaling/group.rb, line 153 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
@return [Array<EC2::AvailabilityZone>]
# File lib/aws/auto_scaling/group.rb, line 189 def availability_zones availability_zone_names.collect do |az_name| EC2::AvailabilityZone.new(az_name, :config => config) end end
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 384 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
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 396 def delete! delete(:force => true) nil end
Disables all metrics collection for the Auto Scaling group. @return [nil]
# File lib/aws/auto_scaling/group.rb, line 301 def disable_all_metrics_collection disable_metrics_collection end
@param [Array<String>] metrics A list of metrics to collect. @return [nil]
# File lib/aws/auto_scaling/group.rb, line 291 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
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-west-2a').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 176 def ec2_instances instances = EC2::InstanceCollection.new(:config => config) instances.tagged('aws:autoscaling:groupName').tagged_values(name) end
Enables all metrics collection for the Auto Scaling group. @return [nil]
# File lib/aws/auto_scaling/group.rb, line 285 def enable_all_metrics_collection enable_metrics_collection end
@param [Array<String>] metrics A list of metrics to collect. @return [nil]
# File lib/aws/auto_scaling/group.rb, line 274 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
@return [Boolean]
# File lib/aws/auto_scaling/group.rb, line 402 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
@return [LaunchConfiguration]
# File lib/aws/auto_scaling/group.rb, line 143 def launch_configuration LaunchConfiguration.new(launch_configuration_name, :config => config) end
@return [Array,<ELB::LoadBalancer>]
# File lib/aws/auto_scaling/group.rb, line 196 def load_balancers load_balancer_names.collect do |name| ELB::LoadBalancer.new(name, :config => config) end end
@return [NotificationConfigurationCollection]
# File lib/aws/auto_scaling/group.rb, line 125 def notification_configurations NotificationConfigurationCollection.new(:group => self) end
Resumes all processes for this Auto Scaling group. @return [nil]
# File lib/aws/auto_scaling/group.rb, line 268 def resume_all_processes resume_processes end
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 258 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
@return [ScalingPolicyCollection]
# File lib/aws/auto_scaling/group.rb, line 120 def scaling_policies ScalingPolicyCollection.new(self) end
@return [ScheduledActionCollection]
# File lib/aws/auto_scaling/group.rb, line 130 def scheduled_actions actions = ScheduledActionCollection.new(:config => config) actions.filter(:group => self) end
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 217 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
@return [Array<EC2::Subnet>]
# File lib/aws/auto_scaling/group.rb, line 182 def subnets vpc_zone_identifier.to_s.split(/,/).collect do |subnet_id| EC2::Subnet.new(subnet_id, :config => config) end end
Suspends all processes for this Auto Scaling group. @return [nil]
# File lib/aws/auto_scaling/group.rb, line 245 def suspend_all_processes suspend_processes end
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 235 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
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 313 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
# File lib/aws/auto_scaling/group.rb, line 415 def get_resource attr_name = nil client.describe_auto_scaling_groups(:auto_scaling_group_names => [name]) end
# File lib/aws/auto_scaling/group.rb, line 411 def resource_identifiers [[:name, name]] end