1
0
Fork 0
mirror of https://github.com/fog/fog.git synced 2022-11-09 13:51:43 -05:00
fog--fog/lib/fog/aws/requests/auto_scaling/set_desired_capacity.rb
2011-06-12 21:07:42 +01:00

87 lines
3.6 KiB
Ruby

module Fog
module AWS
class AutoScaling
class Real
require 'fog/aws/parsers/auto_scaling/basic'
# Adjusts the desired size of the AutoScalingGroup by initiating
# scaling activities. When reducing the size of the group, it is not
# possible to define which EC2 instances will be terminated. This
# applies to any auto-scaling decisions that might result in
# terminating instances.
#
# There are two common use cases for set_desired_capacity: one for
# users of the Auto Scaling triggering system, and another for
# developers who write their own triggering systems. Both use cases
# relate to the concept of cooldown.
#
# In the first case, if you use the Auto Scaling triggering system,
# set_desired_capacity changes the size of your Auto Scaling group
# without regard to the cooldown period. This could be useful, for
# example, if Auto Scaling did something unexpected for some reason. If
# your cooldown period is 10 minutes, Auto Scaling would normally
# reject requests to change the size of the group for that entire 10
# minute period. The set_desired_capacity command allows you to
# circumvent this restriction and change the size of the group before
# the end of the cooldown period.
#
# In the second case, if you write your own triggering system, you can
# use set_desired_capacity to control the size of your Auto Scaling
# group. If you want the same cooldown functionality that Auto Scaling
# offers, you can configure set_desired_capacity to honor cooldown by
# setting the HonorCooldown parameter to true.
#
# ==== Parameters
# * auto_scaling_group_name<~String> - The name of the Auto Scaling
# group.
# * desired_capacity<~Integer> - The new capacity setting for the Auto
# Scaling group.
# * options<~Hash>:
# * 'HonorCooldown'<~Boolean> - By default, set_desired_capacity
# overrides any cooldown period. Set to true if you want Auto
# Scaling to reject this request if the Auto Scaling group is in
# cooldown.
#
# ==== Returns
# * response<~Excon::Response>:
# * body<~Hash>:
# * 'ResponseMetadata'<~Hash>:
# * 'RequestId'<~String> - Id of request
#
# ==== See Also
# http://docs.amazonwebservices.com/AutoScaling/latest/APIReference/API_SetDesiredCapacity.html
#
def set_desired_capacity(auto_scaling_group_name, desired_capacity, options = {})
request({
'Action' => 'SetDesiredCapacity',
'AutoScalingGroupName' => auto_scaling_group_name,
'DesiredCapacity' => desired_capacity,
:parser => Fog::Parsers::AWS::AutoScaling::Basic.new
}.merge!(options))
end
end
class Mock
def set_desired_capacity(auto_scaling_group_name, desired_capacity, options = {})
unless data[:auto_scaling_groups].has_key?(auto_scaling_group_name)
Fog::AWS::AutoScaling::ValidationError.new('AutoScalingGroup name not found - null')
end
data[:auto_scaling_groups][auto_scaling_group_name]['DesiredCapacity'] = desired_capacity
response = Excon::Response.new
response.status = 200
response.body = {
'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
}
response
end
end
end
end
end