2012-04-21 03:09:21 -04:00
module Fog
module AWS
class AutoScaling
class Real
require 'fog/aws/parsers/auto_scaling/put_notification_configuration'
2012-09-22 11:36:58 -04:00
# Creates a notification configuration for an Auto Scaling group. To
# update an existing policy, overwrite the existing notification
# configuration name and set the parameter(s) you want to change.
2012-04-21 03:09:21 -04:00
#
# ==== Parameters
2012-09-22 11:36:58 -04:00
# * auto_scaling_group_name<~String> - The name of the Auto Scaling
# group.
# * notification_types<~Array> - The type of events that will trigger
# the notification.
# * topic_arn<~String> - The Amazon Resource Name (ARN) of the Amazon
2012-04-21 03:09:21 -04:00
# Simple Notification Service (SNS) topic.
# ==== Returns
# * response<~Excon::Response>:
# * body<~Hash>:
# * 'ResponseMetadata'<~Hash>:
# * 'RequestId'<~String> - Id of request
#
# ==== See Also
# http://docs.amazonwebservices.com/AutoScaling/latest/APIReference/API_PutNotificationConfiguration.html
#
def put_notification_configuration ( auto_scaling_group_name , notification_types , topic_arn )
2012-09-23 14:24:16 -04:00
params = AWS . indexed_param ( 'NotificationTypes.member.%d' , [ * notification_types ] )
2012-04-21 03:09:21 -04:00
request ( {
'Action' = > 'PutNotificationConfiguration' ,
'AutoScalingGroupName' = > auto_scaling_group_name ,
'TopicARN' = > topic_arn ,
:parser = > Fog :: Parsers :: AWS :: AutoScaling :: PutNotificationConfiguration . new
2012-09-23 14:24:16 -04:00
} . merge! ( params ) )
2012-04-21 03:09:21 -04:00
end
end
class Mock
def put_notification_configuration ( auto_scaling_group_name , notification_types , topic_arn )
2012-09-23 14:24:16 -04:00
unless self . data [ :auto_scaling_groups ] . has_key? ( auto_scaling_group_name )
raise Fog :: AWS :: AutoScaling :: ValidationError . new ( " AutoScalingGroup name not found - #{ auto_scaling_group_name } " )
end
if notification_types . to_a . empty?
raise Fog :: AWS :: AutoScaling :: ValidationError . new ( " 1 validation error detected: Value null at 'notificationTypes' failed to satisfy constraint: Member must not be null " )
end
invalid_types = notification_types . to_a - self . data [ :notification_types ]
unless invalid_types . empty?
raise Fog :: AWS :: AutoScaling :: ValidationError . new ( " " #{ invalid_types . first } " is not a valid Notification Type. " )
end
self . data [ :notification_configurations ] [ auto_scaling_group_name ] || = { }
self . data [ :notification_configurations ] [ auto_scaling_group_name ] [ topic_arn ] = notification_types . to_a . uniq
response = Excon :: Response . new
response . status = 200
response . body = {
'ResponseMetadata' = > { 'RequestId' = > Fog :: AWS :: Mock . request_id }
}
response
2012-04-21 03:09:21 -04:00
end
end
end
end
end