mirror of
https://github.com/fog/fog.git
synced 2022-11-09 13:51:43 -05:00
Merge pull request #1874 from mikehale/asg-exclude-instances
[AWS | AutoScaling] Do not send Instances for update_auto_scaling_group
This commit is contained in:
commit
7f3e8a2df6
5 changed files with 46 additions and 4 deletions
|
@ -60,6 +60,8 @@ module Fog
|
|||
model :policy
|
||||
collection :policies
|
||||
|
||||
ExpectedOptions = {}
|
||||
|
||||
class Real
|
||||
include Fog::AWS::CredentialFetcher::ConnectionMethods
|
||||
|
||||
|
|
|
@ -111,8 +111,7 @@ module Fog
|
|||
requires :launch_configuration_name
|
||||
requires :max_size
|
||||
requires :min_size
|
||||
|
||||
service.create_auto_scaling_group(id, availability_zones, launch_configuration_name, max_size, min_size, options)
|
||||
service.create_auto_scaling_group(id, availability_zones, launch_configuration_name, max_size, min_size, filtered_options(:create_auto_scaling_group))
|
||||
reload
|
||||
end
|
||||
|
||||
|
@ -132,10 +131,14 @@ module Fog
|
|||
|
||||
def update
|
||||
requires :id
|
||||
service.update_auto_scaling_group(id, options)
|
||||
service.update_auto_scaling_group(id, filtered_options(:update_auto_scaling_group) )
|
||||
reload
|
||||
end
|
||||
|
||||
def filtered_options(method)
|
||||
Hash[options.select{|k,_| ExpectedOptions[method].include?(k)}]
|
||||
end
|
||||
|
||||
def options
|
||||
ret = Hash[self.class.aliases.map { |key, value| [key, send(value)] }]
|
||||
ret.delete_if { |key, value| value.nil? }
|
||||
|
|
|
@ -63,6 +63,9 @@ module Fog
|
|||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/AutoScaling/latest/APIReference/API_CreateAutoScalingGroup.html
|
||||
#
|
||||
|
||||
ExpectedOptions[:create_auto_scaling_group] = %w[DefaultCooldown DesiredCapacity HealthCheckGracePeriod HealthCheckType LoadBalancerNames PlacementGroup Tags TerminationPolicies VPCZoneIdentifier]
|
||||
|
||||
def create_auto_scaling_group(auto_scaling_group_name, availability_zones, launch_configuration_name, max_size, min_size, options = {})
|
||||
options.merge!(AWS.indexed_param('AvailabilityZones.member.%d', [*availability_zones]))
|
||||
options.delete('AvailabilityZones')
|
||||
|
@ -94,6 +97,11 @@ module Fog
|
|||
class Mock
|
||||
|
||||
def create_auto_scaling_group(auto_scaling_group_name, availability_zones, launch_configuration_name, max_size, min_size, options = {})
|
||||
unexpected_options = options.keys - ExpectedOptions[:create_auto_scaling_group]
|
||||
unless unexpected_options.empty?
|
||||
raise Fog::AWS::AutoScaling::ValidationError.new("Options #{unexpected_options.join(',')} should not be included in request")
|
||||
end
|
||||
|
||||
if self.data[:auto_scaling_groups].has_key?(auto_scaling_group_name)
|
||||
raise Fog::AWS::AutoScaling::IdentifierTaken.new("AutoScalingGroup by this name already exists - A group with the name #{auto_scaling_group_name} already exists")
|
||||
end
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
module Fog
|
||||
module AWS
|
||||
class AutoScaling
|
||||
|
||||
class Real
|
||||
|
||||
require 'fog/aws/parsers/auto_scaling/basic'
|
||||
|
@ -52,6 +51,9 @@ module Fog
|
|||
# ==== See Also
|
||||
# http://docs.amazonwebservices.com/AutoScaling/latest/APIReference/API_UpdateAutoScalingGroup.html
|
||||
#
|
||||
|
||||
ExpectedOptions[:update_auto_scaling_group] = %w[AvailabilityZones DefaultCooldown DesiredCapacity HealthCheckGracePeriod HealthCheckType LaunchConfigurationName MaxSize MinSize PlacementGroup TerminationPolicies VPCZoneIdentifier]
|
||||
|
||||
def update_auto_scaling_group(auto_scaling_group_name, options = {})
|
||||
if availability_zones = options.delete('AvailabilityZones')
|
||||
options.merge!(AWS.indexed_param('AvailabilityZones.member.%d', [*availability_zones]))
|
||||
|
@ -71,6 +73,11 @@ module Fog
|
|||
class Mock
|
||||
|
||||
def update_auto_scaling_group(auto_scaling_group_name, options = {})
|
||||
unexpected_options = options.keys - ExpectedOptions[:update_auto_scaling_group]
|
||||
unless unexpected_options.empty?
|
||||
raise Fog::AWS::AutoScaling::ValidationError.new("Options #{unexpected_options.join(',')} should not be included in request")
|
||||
end
|
||||
|
||||
unless self.data[:auto_scaling_groups].has_key?(auto_scaling_group_name)
|
||||
raise Fog::AWS::AutoScaling::ValidationError.new('AutoScalingGroup name not found - null')
|
||||
end
|
||||
|
|
22
tests/aws/models/auto_scaling/groups_test.rb
Normal file
22
tests/aws/models/auto_scaling/groups_test.rb
Normal file
|
@ -0,0 +1,22 @@
|
|||
Shindo.tests('AWS::AutoScaling | group', ['aws', 'auto_scaling_m']) do
|
||||
|
||||
params = {
|
||||
:id => uniq_id,
|
||||
:auto_scaling_group_name => "name",
|
||||
:availability_zones => [],
|
||||
:launch_configuration_name => "lc"
|
||||
}
|
||||
|
||||
lc_params = {
|
||||
:id => params[:launch_configuration_name],
|
||||
:image_id => "image-id",
|
||||
:instance_type => "instance-type",
|
||||
}
|
||||
|
||||
Fog::AWS[:auto_scaling].configurations.new(lc_params).save
|
||||
|
||||
model_tests(Fog::AWS[:auto_scaling].groups, params, true) do
|
||||
@instance.update
|
||||
end
|
||||
|
||||
end
|
Loading…
Add table
Reference in a new issue