mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
87 lines
3.6 KiB
Ruby
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
|