@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 146 def activities ActivityCollection.new(:group => self) end
@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
@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
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
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
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
@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
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
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
@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
@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
@return [LaunchConfiguration]
# File lib/aws/auto_scaling/group.rb, line 141 def launch_configuration LaunchConfiguration.new(launch_configuration_name, :config => config) end
@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
@return [NotificationConfigurationCollection]
# File lib/aws/auto_scaling/group.rb, line 123 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 266 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 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
@return [ScalingPolicyCollection]
# File lib/aws/auto_scaling/group.rb, line 118 def scaling_policies ScalingPolicyCollection.new(self) end
@return [ScheduledActionCollection]
# File lib/aws/auto_scaling/group.rb, line 128 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 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
@return [Array<EC2::Subnet>]
# File lib/aws/auto_scaling/group.rb, line 180 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 243 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 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
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
# 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
# File lib/aws/auto_scaling/group.rb, line 410 def resource_identifiers [[:name, name]] end