Class: Fog::AWS::AutoScaling::Mock

Inherits:
Object
  • Object
show all
Includes:
CredentialFetcher::ConnectionMethods
Defined in:
lib/fog/aws/auto_scaling.rb,
lib/fog/aws/requests/auto_scaling/delete_tags.rb,
lib/fog/aws/requests/auto_scaling/delete_policy.rb,
lib/fog/aws/requests/auto_scaling/describe_tags.rb,
lib/fog/aws/requests/auto_scaling/execute_policy.rb,
lib/fog/aws/requests/auto_scaling/resume_processes.rb,
lib/fog/aws/requests/auto_scaling/describe_policies.rb,
lib/fog/aws/requests/auto_scaling/suspend_processes.rb,
lib/fog/aws/requests/auto_scaling/put_scaling_policy.rb,
lib/fog/aws/requests/auto_scaling/set_instance_health.rb,
lib/fog/aws/requests/auto_scaling/set_desired_capacity.rb,
lib/fog/aws/requests/auto_scaling/create_or_update_tags.rb,
lib/fog/aws/requests/auto_scaling/delete_scheduled_action.rb,
lib/fog/aws/requests/auto_scaling/create_auto_scaling_group.rb,
lib/fog/aws/requests/auto_scaling/delete_auto_scaling_group.rb,
lib/fog/aws/requests/auto_scaling/describe_adjustment_types.rb,
lib/fog/aws/requests/auto_scaling/enable_metrics_collection.rb,
lib/fog/aws/requests/auto_scaling/update_auto_scaling_group.rb,
lib/fog/aws/requests/auto_scaling/describe_scheduled_actions.rb,
lib/fog/aws/requests/auto_scaling/disable_metrics_collection.rb,
lib/fog/aws/requests/auto_scaling/create_launch_configuration.rb,
lib/fog/aws/requests/auto_scaling/delete_launch_configuration.rb,
lib/fog/aws/requests/auto_scaling/describe_scaling_activities.rb,
lib/fog/aws/requests/auto_scaling/describe_auto_scaling_groups.rb,
lib/fog/aws/requests/auto_scaling/describe_launch_configurations.rb,
lib/fog/aws/requests/auto_scaling/describe_scaling_process_types.rb,
lib/fog/aws/requests/auto_scaling/put_notification_configuration.rb,
lib/fog/aws/requests/auto_scaling/describe_auto_scaling_instances.rb,
lib/fog/aws/requests/auto_scaling/describe_metric_collection_types.rb,
lib/fog/aws/requests/auto_scaling/delete_notification_configuration.rb,
lib/fog/aws/requests/auto_scaling/describe_termination_policy_types.rb,
lib/fog/aws/requests/auto_scaling/put_scheduled_update_group_action.rb,
lib/fog/aws/requests/auto_scaling/describe_notification_configurations.rb,
lib/fog/aws/requests/auto_scaling/describe_auto_scaling_notification_types.rb,
lib/fog/aws/requests/auto_scaling/terminate_instance_in_auto_scaling_group.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from CredentialFetcher::ConnectionMethods

#refresh_credentials_if_expired

Constructor Details

#initialize(options = {}) ⇒ Mock

Returns a new instance of Mock.



253
254
255
256
257
258
259
260
261
# File 'lib/fog/aws/auto_scaling.rb', line 253

def initialize(options={})
  @use_iam_profile = options[:use_iam_profile]
  setup_credentials(options)
  @region = options[:region] || 'us-east-1'

  unless ['ap-northeast-1', 'ap-southeast-1', 'ap-southeast-2', 'eu-west-1', 'sa-east-1', 'us-east-1', 'us-west-1', 'us-west-2'].include?(@region)
    raise ArgumentError, "Unknown region: #{@region.inspect}"
  end
end

Instance Attribute Details

#regionObject

Returns the value of attribute region.



185
186
187
# File 'lib/fog/aws/auto_scaling.rb', line 185

def region
  @region
end

Class Method Details

.dataObject



187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
# File 'lib/fog/aws/auto_scaling.rb', line 187

def self.data
  @data ||= Hash.new do |hash, region|
    owner_id = Fog::AWS::Mock.owner_id
    hash[region] = Hash.new do |region_hash, key|
      region_hash[key] = {
        :adjustment_types => [
          'ChangeInCapacity',
          'ExactCapacity',
          'PercentChangeInCapacity'
        ],
        :auto_scaling_groups => {},
        :scaling_policies => {},
        :health_states => [
          'Healthy',
          'Unhealthy'
        ],
        :launch_configurations => {},
        :metric_collection_types => {
          :granularities => [
            '1Minute'
          ],
          :metrics => [
            'GroupMinSize',
            'GroupMaxSize',
            'GroupDesiredCapacity',
            'GroupInServiceInstances',
            'GroupPendingInstances',
            'GroupTerminatingInstances',
            'GroupTotalInstances'
          ]
        },
        :notification_configurations => {},
        :notification_types => [
          'autoscaling:EC2_INSTANCE_LAUNCH',
          'autoscaling:EC2_INSTANCE_LAUNCH_ERROR',
          'autoscaling:EC2_INSTANCE_TERMINATE',
          'autoscaling:EC2_INSTANCE_TERMINATE_ERROR',
          'autoscaling:TEST_NOTIFICATION'
        ],
        :owner_id => owner_id,
        :process_types => [
          'AZRebalance',
          'AddToLoadBalancer',
          'AlarmNotification',
          'HealthCheck',
          'Launch',
          'ReplaceUnhealthy',
          'ScheduledActions',
          'Terminate'
        ],
        :termination_policy_types => [
          'ClosestToNextInstanceHour',
          'Default',
          'NewestInstance',
          'OldestInstance',
          'OldestLaunchConfiguration'
        ]
      }
    end
  end
end

.resetObject



249
250
251
# File 'lib/fog/aws/auto_scaling.rb', line 249

def self.reset
  @data = nil
end

Instance Method Details

#create_auto_scaling_group(auto_scaling_group_name, availability_zones, launch_configuration_name, max_size, min_size, options = {}) ⇒ Object



99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
# File 'lib/fog/aws/requests/auto_scaling/create_auto_scaling_group.rb', line 99

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
  unless self.data[:launch_configurations].has_key?(launch_configuration_name)
    raise Fog::AWS::AutoScaling::ValidationError.new('Launch configuration name not found - null')
  end
  self.data[:auto_scaling_groups][auto_scaling_group_name] = {
    'AutoScalingGroupARN'     => Fog::AWS::Mock.arn('autoscaling', self.data[:owner_id], "autoScalingGroup:00000000-0000-0000-0000-000000000000:autoScalingGroupName/#{auto_scaling_group_name}", @region),
    'AutoScalingGroupName'    => auto_scaling_group_name,
    'AvailabilityZones'       => [*availability_zones],
    'CreatedTime'             => Time.now.utc,
    'DefaultCooldown'         => 300,
    'DesiredCapacity'         => 0,
    'EnabledMetrics'          => [],
    'HealthCheckGracePeriod'  => 0,
    'HealthCheckType'         => 'EC2',
    'Instances'               => [],
    'LaunchConfigurationName' => launch_configuration_name,
    'LoadBalancerNames'       => [],
    'MaxSize'                 => max_size,
    'MinSize'                 => min_size,
    'PlacementGroup'          => nil,
    'SuspendedProcesses'      => [],
    'Tags'                    => [],
    'TerminationPolicies'     => ['Default'],
    'VPCZoneIdentifier'       => nil
  }.merge!(options)

  response = Excon::Response.new
  response.status = 200
  response.body = {
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#create_launch_configuration(image_id, instance_type, launch_configuration_name, options = {}) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/fog/aws/requests/auto_scaling/create_launch_configuration.rb', line 81

def create_launch_configuration(image_id, instance_type, launch_configuration_name, options = {})
  if self.data[:launch_configurations].has_key?(launch_configuration_name)
    raise Fog::AWS::AutoScaling::IdentifierTaken.new("Launch Configuration by this name already exists - A launch configuration already exists with the name #{launch_configuration_name}")
  end
  self.data[:launch_configurations][launch_configuration_name] = {
    'BlockDeviceMappings'     => [],
    'CreatedTime'             => Time.now.utc,
    'ImageId'                 => image_id,
    'InstanceMonitoring'      => {'Enabled' => true},
    'InstanceType'            => instance_type,
    'KernelId'                => nil,
    'KeyName'                 => nil,
    'LaunchConfigurationARN'  => Fog::AWS::Mock.arn('autoscaling', self.data[:owner_id], "launchConfiguration:00000000-0000-0000-0000-000000000000:launchConfigurationName/#{launch_configuration_name}", @region),
    'LaunchConfigurationName' => launch_configuration_name,
    'RamdiskId'               => nil,
    'SecurityGroups'          => [],
    'UserData'                => nil
  }.merge!(options)

  response = Excon::Response.new
  response.status = 200
  response.body = {
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#create_or_update_tags(tags) ⇒ Object

Raises:

  • (Fog::Mock::NotImplementedError)


52
53
54
55
56
57
# File 'lib/fog/aws/requests/auto_scaling/create_or_update_tags.rb', line 52

def create_or_update_tags(tags)
  if tags.to_a.empty?
    raise Fog::AWS::AutoScaling::ValidationError.new("1 validation error detected: Value null at 'tags' failed to satisfy constraint: Member must not be null")
  end
  raise Fog::Mock::NotImplementedError
end

#dataObject



267
268
269
# File 'lib/fog/aws/auto_scaling.rb', line 267

def data
  self.region_data[@aws_access_key_id]
end

#delete_auto_scaling_group(auto_scaling_group_name, options = {}) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/fog/aws/requests/auto_scaling/delete_auto_scaling_group.rb', line 42

def delete_auto_scaling_group(auto_scaling_group_name, options = {})
  unless self.data[:auto_scaling_groups].delete(auto_scaling_group_name)
    raise Fog::AWS::AutoScaling::ValidationError, "The auto scaling group '#{auto_scaling_group_name}' does not exist."
  end

  self.data[:notification_configurations].delete(auto_scaling_group_name)

  response = Excon::Response.new
  response.status = 200
  response.body = {
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#delete_launch_configuration(launch_configuration_name) ⇒ Object



40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/fog/aws/requests/auto_scaling/delete_launch_configuration.rb', line 40

def delete_launch_configuration(launch_configuration_name)
  unless self.data[:launch_configurations].delete(launch_configuration_name)
    raise Fog::AWS::AutoScaling::NotFound, "The launch configuration '#{launch_configuration_name}' does not exist."
  end

  response = Excon::Response.new
  response.status = 200
  response.body = {
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#delete_notification_configuration(auto_scaling_group_name, topic_arn) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
# File 'lib/fog/aws/requests/auto_scaling/delete_notification_configuration.rb', line 39

def delete_notification_configuration(auto_scaling_group_name, topic_arn)
  unless self.data[:notification_configurations].has_key?(auto_scaling_group_name)
    raise Fog::AWS::AutoScaling::ValidationError.new('AutoScalingGroup name not found - %s' % auto_scaling_group_name)
  end
  unless self.data[:notification_configurations][auto_scaling_group_name].has_key?(topic_arn)
    raise Fog::AWS::AutoScaling::ValidationError.new("Notification Topic '#{topic_arn}' doesn't exist for '#{self.data[:owner_id]}'")
  end

  self.data[:notification_configurations][auto_scaling_group_name].delete(topic_arn)
  if self.data[:notification_configurations][auto_scaling_group_name].empty?
    self.data[:notification_configurations].delete(auto_scaling_group_name)
  end

  response = Excon::Response.new
  response.status = 200
  response.body = {
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#delete_policy(auto_scaling_group_name, policy_name) ⇒ Object



39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/fog/aws/requests/auto_scaling/delete_policy.rb', line 39

def delete_policy(auto_scaling_group_name, policy_name)
  unless self.data[:scaling_policies].delete(policy_name)
    raise Fog::AWS::AutoScaling::NotFound, "The scaling policy '#{policy_name}' does not exist."
  end

  response = Excon::Response.new
  response.status = 200
  response.body = {
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#delete_scheduled_action(auto_scaling_group_name, scheduled_action_name) ⇒ Object



40
41
42
# File 'lib/fog/aws/requests/auto_scaling/delete_scheduled_action.rb', line 40

def delete_scheduled_action(auto_scaling_group_name, scheduled_action_name)
  Fog::Mock.not_implemented
end

#delete_tags(tags) ⇒ Object

Raises:

  • (Fog::Mock::NotImplementedError)


52
53
54
55
56
57
# File 'lib/fog/aws/requests/auto_scaling/delete_tags.rb', line 52

def delete_tags(tags)
  if tags.to_a.empty?
    raise Fog::AWS::AutoScaling::ValidationError.new("1 validation error detected: Value null at 'tags' failed to satisfy constraint: Member must not be null")
  end
  raise Fog::Mock::NotImplementedError
end

#describe_adjustment_typesObject



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/fog/aws/requests/auto_scaling/describe_adjustment_types.rb', line 36

def describe_adjustment_types()
  results = { 'AdjustmentTypes' => [] }
  self.data[:adjustment_types].each do |adjustment_type|
    results['AdjustmentTypes'] << { 'AdjustmentType' => adjustment_type }
  end
  response = Excon::Response.new
  response.status = 200
  response.body = {
    'DescribeAdjustmentTypesResult' => results,
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#describe_auto_scaling_groups(options = {}) ⇒ Object



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
# File 'lib/fog/aws/requests/auto_scaling/describe_auto_scaling_groups.rb', line 112

def describe_auto_scaling_groups(options = {})
  results = { 'AutoScalingGroups' => [] }
  asg_set = self.data[:auto_scaling_groups]

  if !options["AutoScalingGroupNames"].nil?
    asg_set = asg_set.reject do |asg_name, asg_data|
      ![*options["AutoScalingGroupNames"]].include?(asg_name)
    end
  end

  asg_set.each do |asg_name, asg_data|
    results['AutoScalingGroups'] << {
      'AutoScalingGroupName' => asg_name
    }.merge!(asg_data)
  end
  response = Excon::Response.new
  response.status = 200
  response.body = {
    'DescribeAutoScalingGroupsResult' => results,
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#describe_auto_scaling_instances(options = {}) ⇒ Object



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/fog/aws/requests/auto_scaling/describe_auto_scaling_instances.rb', line 73

def describe_auto_scaling_instances(options = {})
  results = { 'AutoScalingInstances' => [] }
  self.data[:auto_scaling_groups].each do |asg_name, asg_data|
    asg_data['Instances'].each do |instance|
      results['AutoScalingInstances'] << {
        'AutoScalingGroupName' => asg_name
      }.merge!(instance)
    end
  end
  response = Excon::Response.new
  response.status = 200
  response.body = {
    'DescribeAutoScalingInstancesResult' => results,
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#describe_auto_scaling_notification_typesObject



36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'lib/fog/aws/requests/auto_scaling/describe_auto_scaling_notification_types.rb', line 36

def describe_auto_scaling_notification_types()
  results = {
    'AutoScalingNotificationTypes' => [],
  }
  self.data[:notification_types].each do |notification_type|
    results['AutoScalingNotificationTypes'] << notification_type
  end
  response = Excon::Response.new
  response.status = 200
  response.body = {
    'DescribeAutoScalingNotificationTypesResult' => results,
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#describe_launch_configurations(options = {}) ⇒ Object



88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# File 'lib/fog/aws/requests/auto_scaling/describe_launch_configurations.rb', line 88

def describe_launch_configurations(options = {})
  launch_configuration_names = options.delete('LaunchConfigurationNames')
  # even a nil object will turn into an empty array
  lc = [*launch_configuration_names]

  launch_configurations = 
     if lc.any?
       lc.map do |lc_name|
         l_conf = self.data[:launch_configurations].find { |name, data| name == lc_name }
         #raise Fog::AWS::AutoScaling::NotFound unless l_conf
         l_conf[1].dup if l_conf
       end.compact
     else
       self.data[:launch_configurations].map { |lc, values| values.dup }
     end

  response = Excon::Response.new
  response.status = 200
  response.body = {
    'DescribeLaunchConfigurationsResult' => { 'LaunchConfigurations' => launch_configurations },
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#describe_metric_collection_typesObject



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/fog/aws/requests/auto_scaling/describe_metric_collection_types.rb', line 38

def describe_metric_collection_types()
  results = {
    'Granularities' => [],
    'Metrics' => []
  }
  self.data[:metric_collection_types][:granularities].each do |granularity|
    results['Granularities'] << { 'Granularity' => granularity }
  end
  self.data[:metric_collection_types][:metrics].each do |metric|
    results['Metrics'] << { 'Metric' => metric }
  end
  response = Excon::Response.new
  response.status = 200
  response.body = {
    'DescribeMetricCollectionTypesResult' => results,
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#describe_notification_configurations(options = {}) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/fog/aws/requests/auto_scaling/describe_notification_configurations.rb', line 52

def describe_notification_configurations(options = {})
  results = { 'NotificationConfigurations' => [] }
  (options['AutoScalingGroupNames']||self.data[:notification_configurations].keys).each do |asg_name|
    (self.data[:notification_configurations][asg_name]||{}).each do |topic_arn, notification_types|
      notification_types.each do |notification_type|
        results['NotificationConfigurations'] << {
          'AutoScalingGroupName' => asg_name,
          'NotificationType'     => notification_type,
          'TopicARN'             => topic_arn,
        }
      end
    end
  end

  response = Excon::Response.new
  response.status = 200
  response.body = {
    'DescribeNotificationConfigurationsResult' => results,
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#describe_policies(options = {}) ⇒ Object



77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/fog/aws/requests/auto_scaling/describe_policies.rb', line 77

def describe_policies(options = {})
  results = { 'ScalingPolicies' => [] }
  policy_set = self.data[:scaling_policies]

  for opt_key, opt_value in options
    if opt_key == "PolicyNames" && opt_value != nil && opt_value != ""
      policy_set = policy_set.reject do |asp_name, asp_data|
        ![*options["PolicyNames"]].include?(asp_name)
      end
    elsif opt_key == "AutoScalingGroupName" && opt_value != nil && opt_value != ""
      policy_set = policy_set.reject do |asp_name, asp_data|
        options["AutoScalingGroupName"] != asp_data["AutoScalingGroupName"]
      end
    end
  end

  policy_set.each do |asp_name, asp_data|
    results['ScalingPolicies'] << {
      'PolicyName' => asp_name
    }.merge!(asp_data)
  end
  response = Excon::Response.new
  response.status = 200
  response.body = {
    'DescribePoliciesResult' => results,
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#describe_scaling_activities(options = {}) ⇒ Object



80
81
82
# File 'lib/fog/aws/requests/auto_scaling/describe_scaling_activities.rb', line 80

def describe_scaling_activities(options = {})
  Fog::Mock.not_implemented
end

#describe_scaling_process_typesObject



37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/fog/aws/requests/auto_scaling/describe_scaling_process_types.rb', line 37

def describe_scaling_process_types()
  results = { 'Processes' => [] }
  self.data[:process_types].each do |process_type|
    results['Processes'] << { 'ProcessName' => process_type }
  end
  response = Excon::Response.new
  response.status = 200
  response.body = {
    'DescribeScalingProcessTypesResult' => results,
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#describe_scheduled_actions(options = {}) ⇒ Object



80
81
82
# File 'lib/fog/aws/requests/auto_scaling/describe_scheduled_actions.rb', line 80

def describe_scheduled_actions(options = {})
  Fog::Mock.not_implemented
end

#describe_tags(options = {}) ⇒ Object

Raises:

  • (Fog::Mock::NotImplementedError)


66
67
68
# File 'lib/fog/aws/requests/auto_scaling/describe_tags.rb', line 66

def describe_tags(options={})
  raise Fog::Mock::NotImplementedError
end

#describe_termination_policy_typesObject



35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/fog/aws/requests/auto_scaling/describe_termination_policy_types.rb', line 35

def describe_termination_policy_types()
  results = { 'TerminationPolicyTypes' => [] }
  self.data[:termination_policy_types].each do |termination_policy_type|
    results['TerminationPolicyTypes'] << termination_policy_type
  end
  response = Excon::Response.new
  response.status = 200
  response.body = {
    'DescribeTerminationPolicyTypesResult' => results,
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#disable_metrics_collection(auto_scaling_group_name, options = {}) ⇒ Object



44
45
46
47
48
49
50
# File 'lib/fog/aws/requests/auto_scaling/disable_metrics_collection.rb', line 44

def disable_metrics_collection(auto_scaling_group_name, options = {})
  unless self.data[:auto_scaling_groups].has_key?(auto_scaling_group_name)
    Fog::AWS::AutoScaling::ValidationError.new("Group #{auto_scaling_group_name} not found")
  end

  Fog::Mock.not_implemented
end

#enable_metrics_collection(auto_scaling_group_name, granularity, options = {}) ⇒ Object



51
52
53
54
55
56
57
58
59
60
# File 'lib/fog/aws/requests/auto_scaling/enable_metrics_collection.rb', line 51

def enable_metrics_collection(auto_scaling_group_name, granularity, options = {})
  unless self.data[:auto_scaling_groups].has_key?(auto_scaling_group_name)
    Fog::AWS::AutoScaling::ValidationError.new("Group #{auto_scaling_group_name} not found")
  end
  unless self.data[:metric_collection_types][:granularities].include?(granularity)
    Fog::AWS::AutoScaling::ValidationError.new('Valid metrics granularity type is: [1Minute].')
  end

  Fog::Mock.not_implemented
end

#execute_policy(policy_name, options = {}) ⇒ Object



42
43
44
# File 'lib/fog/aws/requests/auto_scaling/execute_policy.rb', line 42

def execute_policy(policy_name, options = {})
  Fog::Mock.not_implemented
end

#put_notification_configuration(auto_scaling_group_name, notification_types, topic_arn) ⇒ Object



43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/fog/aws/requests/auto_scaling/put_notification_configuration.rb', line 43

def put_notification_configuration(auto_scaling_group_name, notification_types, topic_arn)
  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("&quot;#{invalid_types.first}&quot; 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
end

#put_scaling_policy(adjustment_type, auto_scaling_group_name, policy_name, scaling_adjustment, options = {}) ⇒ Object



58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/fog/aws/requests/auto_scaling/put_scaling_policy.rb', line 58

def put_scaling_policy(adjustment_type, auto_scaling_group_name, policy_name, scaling_adjustment, options = {})
  unless self.data[:auto_scaling_groups].has_key?(auto_scaling_group_name)
    raise Fog::AWS::AutoScaling::ValidationError.new('Auto Scaling Group name not found - null')
  end
  self.data[:scaling_policies][policy_name] = {
    'AdjustmentType'       => adjustment_type,
    'Alarms'               => [],
    'AutoScalingGroupName' => auto_scaling_group_name,
    'Cooldown'             => 0,
    'MinAdjustmentStep'    => 0,
    'PolicyARN'            => Fog::AWS::Mock.arn('autoscaling', self.data[:owner_id], "scalingPolicy:00000000-0000-0000-0000-000000000000:autoScalingGroupName/#{auto_scaling_group_name}:policyName/#{policy_name}", self.region),
    'PolicyName'           => policy_name,
    'ScalingAdjustment'    => scaling_adjustment
  }.merge!(options)

  response = Excon::Response.new
  response.status = 200
  response.body = {
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#put_scheduled_update_group_action(auto_scaling_group_name, scheduled_policy_name, time, options = {}) ⇒ Object



62
63
64
# File 'lib/fog/aws/requests/auto_scaling/put_scheduled_update_group_action.rb', line 62

def put_scheduled_update_group_action(auto_scaling_group_name, scheduled_policy_name, time, options = {})
  Fog::Mock.not_implemented
end

#region_dataObject



263
264
265
# File 'lib/fog/aws/auto_scaling.rb', line 263

def region_data
  self.class.data[@region]
end

#reset_dataObject



271
272
273
# File 'lib/fog/aws/auto_scaling.rb', line 271

def reset_data
  self.region_data.delete(@aws_access_key_id)
end

#resume_processes(auto_scaling_group_name, options = {}) ⇒ Object



42
43
44
45
46
47
48
49
50
51
52
53
# File 'lib/fog/aws/requests/auto_scaling/resume_processes.rb', line 42

def resume_processes(auto_scaling_group_name, options = {})
  unless self.data[:auto_scaling_groups].has_key?(auto_scaling_group_name)
    raise Fog::AWS::AutoScaling::ValidationError.new("AutoScalingGroup name not found - no such group: #{auto_scaling_group_name}")
  end

  response = Excon::Response.new
  response.status = 200
  response.body = {
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#set_desired_capacity(auto_scaling_group_name, desired_capacity, options = {}) ⇒ Object



69
70
71
72
73
74
75
76
77
78
79
80
81
# File 'lib/fog/aws/requests/auto_scaling/set_desired_capacity.rb', line 69

def set_desired_capacity(auto_scaling_group_name, desired_capacity, options = {})
  unless self.data[:auto_scaling_groups].has_key?(auto_scaling_group_name)
    Fog::AWS::AutoScaling::ValidationError.new('AutoScalingGroup name not found - null')
  end
  self.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

#set_instance_health(health_status, instance_id, options = {}) ⇒ Object



43
44
45
46
47
48
49
# File 'lib/fog/aws/requests/auto_scaling/set_instance_health.rb', line 43

def set_instance_health(health_status, instance_id, options = {})
  unless self.data[:health_states].include?(health_status)
    raise Fog::AWS::AutoScaling::ValidationError.new('Valid instance health states are: [#{self.data[:health_states].join(", ")}].')
  end

  Fog::Mock.not_implemented
end

#setup_credentials(options) ⇒ Object



275
276
277
# File 'lib/fog/aws/auto_scaling.rb', line 275

def setup_credentials(options)
  @aws_access_key_id = options[:aws_access_key_id]
end

#suspend_processes(auto_scaling_group_name, options = {}) ⇒ Object



45
46
47
48
49
50
51
52
53
54
55
56
# File 'lib/fog/aws/requests/auto_scaling/suspend_processes.rb', line 45

def suspend_processes(auto_scaling_group_name, options = {})
  unless self.data[:auto_scaling_groups].has_key?(auto_scaling_group_name)
    raise Fog::AWS::AutoScaling::ValidationError.new("AutoScalingGroup name not found - no such group: #{auto_scaling_group_name}")
  end

  response = Excon::Response.new
  response.status = 200
  response.body = {
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end

#terminate_instance_in_auto_scaling_group(instance_id, should_decrement_desired_capacity) ⇒ Object



57
58
59
# File 'lib/fog/aws/requests/auto_scaling/terminate_instance_in_auto_scaling_group.rb', line 57

def terminate_instance_in_auto_scaling_group(instance_id, should_decrement_desired_capacity)
  Fog::Mock.not_implemented
end

#update_auto_scaling_group(auto_scaling_group_name, options = {}) ⇒ Object



75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/fog/aws/requests/auto_scaling/update_auto_scaling_group.rb', line 75

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
  self.data[:auto_scaling_groups][auto_scaling_group_name].merge!(options)

  response = Excon::Response.new
  response.status = 200
  response.body = {
    'ResponseMetadata' => { 'RequestId' => Fog::AWS::Mock.request_id }
  }
  response
end