aws-sdk-autoscaling 1.0.0.rc1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 51fa29a246960d90fc1addf4f1aedd5aaee57379
4
+ data.tar.gz: a8950dc540ad4c7676ea2360137cff3a6b7d0e60
5
+ SHA512:
6
+ metadata.gz: 4c4b06cf492a2b19f35cd2b27839e19832bf2efe6242d408e8889a1395f017a69a6bdfc367cbe4e5c8004fd7e67acf6c07acb1df3499463c59c169294d184c50
7
+ data.tar.gz: f0c3fcc8e9c9cabb74eb73fdd53287bccfb36494946ae2db55ff1f9bd468af049da64c9500688b31a6970c36438623bd34d6080b9881a69e518952b0fd868c5f
@@ -0,0 +1,58 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ require 'aws-sdk-core'
9
+ require 'aws-sigv4'
10
+
11
+ require_relative 'aws-sdk-autoscaling/types'
12
+ require_relative 'aws-sdk-autoscaling/client_api'
13
+ require_relative 'aws-sdk-autoscaling/client'
14
+ require_relative 'aws-sdk-autoscaling/errors'
15
+ require_relative 'aws-sdk-autoscaling/waiters'
16
+ require_relative 'aws-sdk-autoscaling/resource'
17
+ require_relative 'aws-sdk-autoscaling/activity'
18
+ require_relative 'aws-sdk-autoscaling/auto_scaling_group'
19
+ require_relative 'aws-sdk-autoscaling/instance'
20
+ require_relative 'aws-sdk-autoscaling/launch_configuration'
21
+ require_relative 'aws-sdk-autoscaling/lifecycle_hook'
22
+ require_relative 'aws-sdk-autoscaling/load_balancer'
23
+ require_relative 'aws-sdk-autoscaling/notification_configuration'
24
+ require_relative 'aws-sdk-autoscaling/scaling_policy'
25
+ require_relative 'aws-sdk-autoscaling/scheduled_action'
26
+ require_relative 'aws-sdk-autoscaling/tag'
27
+ require_relative 'aws-sdk-autoscaling/customizations'
28
+
29
+ # This module provides support for Auto Scaling. This module is available in the
30
+ # `aws-sdk-autoscaling` gem.
31
+ #
32
+ # # Client
33
+ #
34
+ # The {Client} class provides one method for each API operation. Operation
35
+ # methods each accept a hash of request parameters and return a response
36
+ # structure.
37
+ #
38
+ # See {Client} for more information.
39
+ #
40
+ # # Errors
41
+ #
42
+ # Errors returned from Auto Scaling all
43
+ # extend {Errors::ServiceError}.
44
+ #
45
+ # begin
46
+ # # do stuff
47
+ # rescue Aws::AutoScaling::Errors::ServiceError
48
+ # # rescues all service API errors
49
+ # end
50
+ #
51
+ # See {Errors} for more information.
52
+ #
53
+ # @service
54
+ module Aws::AutoScaling
55
+
56
+ GEM_VERSION = '1.0.0.rc1'
57
+
58
+ end
@@ -0,0 +1,161 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ module Aws
9
+ module AutoScaling
10
+ class Activity
11
+
12
+ extend Aws::Deprecations
13
+
14
+ # @overload def initialize(id, options = {})
15
+ # @param [String] id
16
+ # @option options [Client] :client
17
+ # @overload def initialize(options = {})
18
+ # @option options [required, String] :id
19
+ # @option options [Client] :client
20
+ def initialize(*args)
21
+ options = Hash === args.last ? args.pop.dup : {}
22
+ @id = extract_id(args, options)
23
+ @data = options.delete(:data)
24
+ @client = options.delete(:client) || Client.new(options)
25
+ end
26
+
27
+ # @!group Read-Only Attributes
28
+
29
+ # @return [String]
30
+ def id
31
+ @id
32
+ end
33
+ alias :activity_id :id
34
+
35
+ # The name of the Auto Scaling group.
36
+ # @return [String]
37
+ def auto_scaling_group_name
38
+ data.auto_scaling_group_name
39
+ end
40
+
41
+ # A friendly, more verbose description of the activity.
42
+ # @return [String]
43
+ def description
44
+ data.description
45
+ end
46
+
47
+ # The reason the activity began.
48
+ # @return [String]
49
+ def cause
50
+ data.cause
51
+ end
52
+
53
+ # The start time of the activity.
54
+ # @return [Time]
55
+ def start_time
56
+ data.start_time
57
+ end
58
+
59
+ # The end time of the activity.
60
+ # @return [Time]
61
+ def end_time
62
+ data.end_time
63
+ end
64
+
65
+ # The current status of the activity.
66
+ # @return [String]
67
+ def status_code
68
+ data.status_code
69
+ end
70
+
71
+ # A friendly, more verbose description of the activity status.
72
+ # @return [String]
73
+ def status_message
74
+ data.status_message
75
+ end
76
+
77
+ # A value between 0 and 100 that indicates the progress of the activity.
78
+ # @return [Integer]
79
+ def progress
80
+ data.progress
81
+ end
82
+
83
+ # The details about the activity.
84
+ # @return [String]
85
+ def details
86
+ data.details
87
+ end
88
+
89
+ # @!endgroup
90
+
91
+ # @return [Client]
92
+ def client
93
+ @client
94
+ end
95
+
96
+ # Loads, or reloads {#data} for the current {Activity}.
97
+ # Returns `self` making it possible to chain methods.
98
+ #
99
+ # activity.reload.data
100
+ #
101
+ # @return [self]
102
+ def load
103
+ resp = @client.describe_scaling_activities(activity_ids: [@id])
104
+ @data = resp.activities[0]
105
+ self
106
+ end
107
+ alias :reload :load
108
+
109
+ # @return [Types::Activity]
110
+ # Returns the data for this {Activity}. Calls
111
+ # {Client#describe_scaling_activities} if {#data_loaded?} is `false`.
112
+ def data
113
+ load unless @data
114
+ @data
115
+ end
116
+
117
+ # @return [Boolean]
118
+ # Returns `true` if this resource is loaded. Accessing attributes or
119
+ # {#data} on an unloaded resource will trigger a call to {#load}.
120
+ def data_loaded?
121
+ !!@data
122
+ end
123
+
124
+ # @!group Associations
125
+
126
+ # @return [AutoScalingGroup, nil]
127
+ def group
128
+ if data.auto_scaling_group_name
129
+ AutoScalingGroup.new(
130
+ name: data.auto_scaling_group_name,
131
+ client: @client
132
+ )
133
+ else
134
+ nil
135
+ end
136
+ end
137
+
138
+ # @deprecated
139
+ # @api private
140
+ def identifiers
141
+ { id: @id }
142
+ end
143
+ deprecated(:identifiers)
144
+
145
+ private
146
+
147
+ def extract_id(args, options)
148
+ value = args[0] || options.delete(:id)
149
+ case value
150
+ when String then value
151
+ when nil then raise ArgumentError, "missing required option :id"
152
+ else
153
+ msg = "expected :id to be a String, got #{value.class}"
154
+ raise ArgumentError, msg
155
+ end
156
+ end
157
+
158
+ class Collection < Aws::Resources::Collection; end
159
+ end
160
+ end
161
+ end
@@ -0,0 +1,1045 @@
1
+ # WARNING ABOUT GENERATED CODE
2
+ #
3
+ # This file is generated. See the contributing for info on making contributions:
4
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
5
+ #
6
+ # WARNING ABOUT GENERATED CODE
7
+
8
+ module Aws
9
+ module AutoScaling
10
+ class AutoScalingGroup
11
+
12
+ extend Aws::Deprecations
13
+
14
+ # @overload def initialize(name, options = {})
15
+ # @param [String] name
16
+ # @option options [Client] :client
17
+ # @overload def initialize(options = {})
18
+ # @option options [required, String] :name
19
+ # @option options [Client] :client
20
+ def initialize(*args)
21
+ options = Hash === args.last ? args.pop.dup : {}
22
+ @name = extract_name(args, options)
23
+ @data = options.delete(:data)
24
+ @client = options.delete(:client) || Client.new(options)
25
+ end
26
+
27
+ # @!group Read-Only Attributes
28
+
29
+ # @return [String]
30
+ def name
31
+ @name
32
+ end
33
+ alias :auto_scaling_group_name :name
34
+
35
+ # The Amazon Resource Name (ARN) of the group.
36
+ # @return [String]
37
+ def auto_scaling_group_arn
38
+ data.auto_scaling_group_arn
39
+ end
40
+
41
+ # The name of the associated launch configuration.
42
+ # @return [String]
43
+ def launch_configuration_name
44
+ data.launch_configuration_name
45
+ end
46
+
47
+ # The minimum size of the group.
48
+ # @return [Integer]
49
+ def min_size
50
+ data.min_size
51
+ end
52
+
53
+ # The maximum size of the group.
54
+ # @return [Integer]
55
+ def max_size
56
+ data.max_size
57
+ end
58
+
59
+ # The desired size of the group.
60
+ # @return [Integer]
61
+ def desired_capacity
62
+ data.desired_capacity
63
+ end
64
+
65
+ # The amount of time, in seconds, after a scaling activity completes
66
+ # before another scaling activity can start.
67
+ # @return [Integer]
68
+ def default_cooldown
69
+ data.default_cooldown
70
+ end
71
+
72
+ # One or more Availability Zones for the group.
73
+ # @return [Array<String>]
74
+ def availability_zones
75
+ data.availability_zones
76
+ end
77
+
78
+ # One or more load balancers associated with the group.
79
+ # @return [Array<String>]
80
+ def load_balancer_names
81
+ data.load_balancer_names
82
+ end
83
+
84
+ # The Amazon Resource Names (ARN) of the target groups for your load
85
+ # balancer.
86
+ # @return [Array<String>]
87
+ def target_group_arns
88
+ data.target_group_arns
89
+ end
90
+
91
+ # The service to use for the health checks. The valid values are `EC2`
92
+ # and `ELB`.
93
+ # @return [String]
94
+ def health_check_type
95
+ data.health_check_type
96
+ end
97
+
98
+ # The amount of time, in seconds, that Auto Scaling waits before
99
+ # checking the health status of an EC2 instance that has come into
100
+ # service.
101
+ # @return [Integer]
102
+ def health_check_grace_period
103
+ data.health_check_grace_period
104
+ end
105
+
106
+ # The date and time the group was created.
107
+ # @return [Time]
108
+ def created_time
109
+ data.created_time
110
+ end
111
+
112
+ # The suspended processes associated with the group.
113
+ # @return [Array<Types::SuspendedProcess>]
114
+ def suspended_processes
115
+ data.suspended_processes
116
+ end
117
+
118
+ # The name of the placement group into which you'll launch your
119
+ # instances, if any. For more information, see [Placement Groups][1] in
120
+ # the *Amazon Elastic Compute Cloud User Guide*.
121
+ #
122
+ #
123
+ #
124
+ # [1]: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html
125
+ # @return [String]
126
+ def placement_group
127
+ data.placement_group
128
+ end
129
+
130
+ # One or more subnet IDs, if applicable, separated by commas.
131
+ #
132
+ # If you specify `VPCZoneIdentifier` and `AvailabilityZones`, ensure
133
+ # that the Availability Zones of the subnets match the values for
134
+ # `AvailabilityZones`.
135
+ # @return [String]
136
+ def vpc_zone_identifier
137
+ data.vpc_zone_identifier
138
+ end
139
+
140
+ # The metrics enabled for the group.
141
+ # @return [Array<Types::EnabledMetric>]
142
+ def enabled_metrics
143
+ data.enabled_metrics
144
+ end
145
+
146
+ # The current state of the group when DeleteAutoScalingGroup is in
147
+ # progress.
148
+ # @return [String]
149
+ def status
150
+ data.status
151
+ end
152
+
153
+ # The termination policies for the group.
154
+ # @return [Array<String>]
155
+ def termination_policies
156
+ data.termination_policies
157
+ end
158
+
159
+ # Indicates whether newly launched instances are protected from
160
+ # termination by Auto Scaling when scaling in.
161
+ # @return [Boolean]
162
+ def new_instances_protected_from_scale_in
163
+ data.new_instances_protected_from_scale_in
164
+ end
165
+
166
+ # @!endgroup
167
+
168
+ # @return [Client]
169
+ def client
170
+ @client
171
+ end
172
+
173
+ # Loads, or reloads {#data} for the current {AutoScalingGroup}.
174
+ # Returns `self` making it possible to chain methods.
175
+ #
176
+ # auto_scaling_group.reload.data
177
+ #
178
+ # @return [self]
179
+ def load
180
+ resp = @client.describe_auto_scaling_groups(auto_scaling_group_names: [@name])
181
+ @data = resp.autoscalinggroups[0]
182
+ self
183
+ end
184
+ alias :reload :load
185
+
186
+ # @return [Types::AutoScalingGroup]
187
+ # Returns the data for this {AutoScalingGroup}. Calls
188
+ # {Client#describe_auto_scaling_groups} if {#data_loaded?} is `false`.
189
+ def data
190
+ load unless @data
191
+ @data
192
+ end
193
+
194
+ # @return [Boolean]
195
+ # Returns `true` if this resource is loaded. Accessing attributes or
196
+ # {#data} on an unloaded resource will trigger a call to {#load}.
197
+ def data_loaded?
198
+ !!@data
199
+ end
200
+
201
+ # @param [Hash] options ({})
202
+ # @return [Boolean]
203
+ # Returns `true` if the AutoScalingGroup exists.
204
+ def exists?(options = {})
205
+ begin
206
+ wait_until_exists(options.merge(max_attempts: 1))
207
+ true
208
+ rescue Aws::Waiters::Errors::UnexpectedError => e
209
+ raise e.error
210
+ rescue Aws::Waiters::Errors::WaiterFailed
211
+ false
212
+ end
213
+ end
214
+
215
+ # @param [Hash] options ({})
216
+ # @option options [Integer] :max_attempts (10)
217
+ # @option options [Float] :delay (5)
218
+ # @option options [Proc] :before_attempt
219
+ # @option options [Proc] :before_wait
220
+ # @return [AutoScalingGroup]
221
+ def wait_until_exists(options = {})
222
+ options, params = separate_params_and_options(options)
223
+ waiter = Waiters::GroupExists.new(options)
224
+ yield_waiter_and_warn(waiter, &Proc.new) if block_given?
225
+ waiter.wait(params.merge(auto_scaling_group_names: [@name]))
226
+ AutoScalingGroup.new({
227
+ name: @name,
228
+ client: @client
229
+ })
230
+ end
231
+
232
+ # @param [Hash] options ({})
233
+ # @option options [Integer] :max_attempts (40)
234
+ # @option options [Float] :delay (15)
235
+ # @option options [Proc] :before_attempt
236
+ # @option options [Proc] :before_wait
237
+ # @return [AutoScalingGroup]
238
+ def wait_until_in_service(options = {})
239
+ options, params = separate_params_and_options(options)
240
+ waiter = Waiters::GroupInService.new(options)
241
+ yield_waiter_and_warn(waiter, &Proc.new) if block_given?
242
+ waiter.wait(params.merge(auto_scaling_group_names: [@name]))
243
+ AutoScalingGroup.new({
244
+ name: @name,
245
+ client: @client
246
+ })
247
+ end
248
+
249
+ # @param [Hash] options ({})
250
+ # @option options [Integer] :max_attempts (40)
251
+ # @option options [Float] :delay (15)
252
+ # @option options [Proc] :before_attempt
253
+ # @option options [Proc] :before_wait
254
+ # @return [AutoScalingGroup]
255
+ def wait_until_not_exists(options = {})
256
+ options, params = separate_params_and_options(options)
257
+ waiter = Waiters::GroupNotExists.new(options)
258
+ yield_waiter_and_warn(waiter, &Proc.new) if block_given?
259
+ waiter.wait(params.merge(auto_scaling_group_names: [@name]))
260
+ AutoScalingGroup.new({
261
+ name: @name,
262
+ client: @client
263
+ })
264
+ end
265
+
266
+ # @!group Actions
267
+
268
+ # @example Request syntax with placeholder values
269
+ #
270
+ # auto_scaling_group.attach_instances({
271
+ # instance_ids: ["XmlStringMaxLen19"],
272
+ # })
273
+ # @param [Hash] options ({})
274
+ # @option options [Array<String>] :instance_ids
275
+ # One or more instance IDs.
276
+ # @return [EmptyStructure]
277
+ def attach_instances(options = {})
278
+ options = options.merge(auto_scaling_group_name: @name)
279
+ resp = @client.attach_instances(options)
280
+ resp.data
281
+ end
282
+
283
+ # @example Request syntax with placeholder values
284
+ #
285
+ # auto_scaling_group.delete({
286
+ # force_delete: false,
287
+ # })
288
+ # @param [Hash] options ({})
289
+ # @option options [Boolean] :force_delete
290
+ # Specifies that the group will be deleted along with all instances
291
+ # associated with the group, without waiting for all instances to be
292
+ # terminated. This parameter also deletes any lifecycle actions
293
+ # associated with the group.
294
+ # @return [EmptyStructure]
295
+ def delete(options = {})
296
+ options = options.merge(auto_scaling_group_name: @name)
297
+ resp = @client.delete_auto_scaling_group(options)
298
+ resp.data
299
+ end
300
+
301
+ # @example Request syntax with placeholder values
302
+ #
303
+ # activity = auto_scaling_group.detach_instances({
304
+ # instance_ids: ["XmlStringMaxLen19"],
305
+ # should_decrement_desired_capacity: false, # required
306
+ # })
307
+ # @param [Hash] options ({})
308
+ # @option options [Array<String>] :instance_ids
309
+ # One or more instance IDs.
310
+ # @option options [required, Boolean] :should_decrement_desired_capacity
311
+ # If `True`, the Auto Scaling group decrements the desired capacity
312
+ # value by the number of instances detached.
313
+ # @return [Activity::Collection]
314
+ def detach_instances(options = {})
315
+ batch = []
316
+ options = options.merge(auto_scaling_group_name: @name)
317
+ resp = @client.detach_instances(options)
318
+ resp.data.activities.each do |a|
319
+ batch << Activity.new(
320
+ id: a.activity_id,
321
+ data: a,
322
+ client: @client
323
+ )
324
+ end
325
+ Activity::Collection.new([batch], size: batch.size)
326
+ end
327
+
328
+ # @example Request syntax with placeholder values
329
+ #
330
+ # auto_scaling_group.disable_metrics_collection({
331
+ # metrics: ["XmlStringMaxLen255"],
332
+ # })
333
+ # @param [Hash] options ({})
334
+ # @option options [Array<String>] :metrics
335
+ # One or more of the following metrics. If you omit this parameter, all
336
+ # metrics are disabled.
337
+ #
338
+ # * `GroupMinSize`
339
+ #
340
+ # * `GroupMaxSize`
341
+ #
342
+ # * `GroupDesiredCapacity`
343
+ #
344
+ # * `GroupInServiceInstances`
345
+ #
346
+ # * `GroupPendingInstances`
347
+ #
348
+ # * `GroupStandbyInstances`
349
+ #
350
+ # * `GroupTerminatingInstances`
351
+ #
352
+ # * `GroupTotalInstances`
353
+ # @return [EmptyStructure]
354
+ def disable_metrics_collection(options = {})
355
+ options = options.merge(auto_scaling_group_name: @name)
356
+ resp = @client.disable_metrics_collection(options)
357
+ resp.data
358
+ end
359
+
360
+ # @example Request syntax with placeholder values
361
+ #
362
+ # auto_scaling_group.enable_metrics_collection({
363
+ # metrics: ["XmlStringMaxLen255"],
364
+ # granularity: "XmlStringMaxLen255", # required
365
+ # })
366
+ # @param [Hash] options ({})
367
+ # @option options [Array<String>] :metrics
368
+ # One or more of the following metrics. If you omit this parameter, all
369
+ # metrics are enabled.
370
+ #
371
+ # * `GroupMinSize`
372
+ #
373
+ # * `GroupMaxSize`
374
+ #
375
+ # * `GroupDesiredCapacity`
376
+ #
377
+ # * `GroupInServiceInstances`
378
+ #
379
+ # * `GroupPendingInstances`
380
+ #
381
+ # * `GroupStandbyInstances`
382
+ #
383
+ # * `GroupTerminatingInstances`
384
+ #
385
+ # * `GroupTotalInstances`
386
+ # @option options [required, String] :granularity
387
+ # The granularity to associate with the metrics to collect. The only
388
+ # valid value is `1Minute`.
389
+ # @return [EmptyStructure]
390
+ def enable_metrics_collection(options = {})
391
+ options = options.merge(auto_scaling_group_name: @name)
392
+ resp = @client.enable_metrics_collection(options)
393
+ resp.data
394
+ end
395
+
396
+ # @example Request syntax with placeholder values
397
+ #
398
+ # scalingpolicy = auto_scaling_group.put_scaling_policy({
399
+ # policy_name: "XmlStringMaxLen255", # required
400
+ # policy_type: "XmlStringMaxLen64",
401
+ # adjustment_type: "XmlStringMaxLen255", # required
402
+ # min_adjustment_step: 1,
403
+ # min_adjustment_magnitude: 1,
404
+ # scaling_adjustment: 1,
405
+ # cooldown: 1,
406
+ # metric_aggregation_type: "XmlStringMaxLen32",
407
+ # step_adjustments: [
408
+ # {
409
+ # metric_interval_lower_bound: 1.0,
410
+ # metric_interval_upper_bound: 1.0,
411
+ # scaling_adjustment: 1, # required
412
+ # },
413
+ # ],
414
+ # estimated_instance_warmup: 1,
415
+ # })
416
+ # @param [Hash] options ({})
417
+ # @option options [required, String] :policy_name
418
+ # The name of the policy.
419
+ # @option options [String] :policy_type
420
+ # The policy type. Valid values are `SimpleScaling` and `StepScaling`.
421
+ # If the policy type is null, the value is treated as `SimpleScaling`.
422
+ # @option options [required, String] :adjustment_type
423
+ # The adjustment type. Valid values are `ChangeInCapacity`,
424
+ # `ExactCapacity`, and `PercentChangeInCapacity`.
425
+ #
426
+ # For more information, see [Dynamic Scaling][1] in the *Auto Scaling
427
+ # User Guide*.
428
+ #
429
+ #
430
+ #
431
+ # [1]: http://docs.aws.amazon.com/autoscaling/latest/userguide/as-scale-based-on-demand.html
432
+ # @option options [Integer] :min_adjustment_step
433
+ # Available for backward compatibility. Use `MinAdjustmentMagnitude`
434
+ # instead.
435
+ # @option options [Integer] :min_adjustment_magnitude
436
+ # The minimum number of instances to scale. If the value of
437
+ # `AdjustmentType` is `PercentChangeInCapacity`, the scaling policy
438
+ # changes the `DesiredCapacity` of the Auto Scaling group by at least
439
+ # this many instances. Otherwise, the error is `ValidationError`.
440
+ # @option options [Integer] :scaling_adjustment
441
+ # The amount by which to scale, based on the specified adjustment type.
442
+ # A positive value adds to the current capacity while a negative number
443
+ # removes from the current capacity.
444
+ #
445
+ # This parameter is required if the policy type is `SimpleScaling` and
446
+ # not supported otherwise.
447
+ # @option options [Integer] :cooldown
448
+ # The amount of time, in seconds, after a scaling activity completes and
449
+ # before the next scaling activity can start. If this parameter is not
450
+ # specified, the default cooldown period for the group applies.
451
+ #
452
+ # This parameter is not supported unless the policy type is
453
+ # `SimpleScaling`.
454
+ #
455
+ # For more information, see [Auto Scaling Cooldowns][1] in the *Auto
456
+ # Scaling User Guide*.
457
+ #
458
+ #
459
+ #
460
+ # [1]: http://docs.aws.amazon.com/autoscaling/latest/userguide/Cooldown.html
461
+ # @option options [String] :metric_aggregation_type
462
+ # The aggregation type for the CloudWatch metrics. Valid values are
463
+ # `Minimum`, `Maximum`, and `Average`. If the aggregation type is null,
464
+ # the value is treated as `Average`.
465
+ #
466
+ # This parameter is not supported if the policy type is `SimpleScaling`.
467
+ # @option options [Array<Types::StepAdjustment>] :step_adjustments
468
+ # A set of adjustments that enable you to scale based on the size of the
469
+ # alarm breach.
470
+ #
471
+ # This parameter is required if the policy type is `StepScaling` and not
472
+ # supported otherwise.
473
+ # @option options [Integer] :estimated_instance_warmup
474
+ # The estimated time, in seconds, until a newly launched instance can
475
+ # contribute to the CloudWatch metrics. The default is to use the value
476
+ # specified for the default cooldown period for the group.
477
+ #
478
+ # This parameter is not supported if the policy type is `SimpleScaling`.
479
+ # @return [ScalingPolicy]
480
+ def put_scaling_policy(options = {})
481
+ options = options.merge(auto_scaling_group_name: @name)
482
+ resp = @client.put_scaling_policy(options)
483
+ ScalingPolicy.new(
484
+ name: options[:policy_name],
485
+ client: @client
486
+ )
487
+ end
488
+
489
+ # @example Request syntax with placeholder values
490
+ #
491
+ # scheduledaction = auto_scaling_group.put_scheduled_update_group_action({
492
+ # scheduled_action_name: "XmlStringMaxLen255", # required
493
+ # time: Time.now,
494
+ # start_time: Time.now,
495
+ # end_time: Time.now,
496
+ # recurrence: "XmlStringMaxLen255",
497
+ # min_size: 1,
498
+ # max_size: 1,
499
+ # desired_capacity: 1,
500
+ # })
501
+ # @param [Hash] options ({})
502
+ # @option options [required, String] :scheduled_action_name
503
+ # The name of this scaling action.
504
+ # @option options [Time,DateTime,Date,Integer,String] :time
505
+ # This parameter is deprecated.
506
+ # @option options [Time,DateTime,Date,Integer,String] :start_time
507
+ # The time for this action to start, in "YYYY-MM-DDThh:mm:ssZ" format
508
+ # in UTC/GMT only (for example, `2014-06-01T00:00:00Z`).
509
+ #
510
+ # If you specify `Recurrence` and `StartTime`, Auto Scaling performs the
511
+ # action at this time, and then performs the action based on the
512
+ # specified recurrence.
513
+ #
514
+ # If you try to schedule your action in the past, Auto Scaling returns
515
+ # an error message.
516
+ # @option options [Time,DateTime,Date,Integer,String] :end_time
517
+ # The time for the recurring schedule to end. Auto Scaling does not
518
+ # perform the action after this time.
519
+ # @option options [String] :recurrence
520
+ # The recurring schedule for this action, in Unix cron syntax format.
521
+ # For more information, see [Cron][1] in Wikipedia.
522
+ #
523
+ #
524
+ #
525
+ # [1]: http://en.wikipedia.org/wiki/Cron
526
+ # @option options [Integer] :min_size
527
+ # The minimum size for the Auto Scaling group.
528
+ # @option options [Integer] :max_size
529
+ # The maximum size for the Auto Scaling group.
530
+ # @option options [Integer] :desired_capacity
531
+ # The number of EC2 instances that should be running in the group.
532
+ # @return [ScheduledAction]
533
+ def put_scheduled_update_group_action(options = {})
534
+ options = options.merge(auto_scaling_group_name: @name)
535
+ resp = @client.put_scheduled_update_group_action(options)
536
+ ScheduledAction.new(
537
+ name: options[:scheduled_action_name],
538
+ client: @client
539
+ )
540
+ end
541
+
542
+ # @example Request syntax with placeholder values
543
+ #
544
+ # auto_scaling_group.resume_processes({
545
+ # scaling_processes: ["XmlStringMaxLen255"],
546
+ # })
547
+ # @param [Hash] options ({})
548
+ # @option options [Array<String>] :scaling_processes
549
+ # One or more of the following processes. If you omit this parameter,
550
+ # all processes are specified.
551
+ #
552
+ # * `Launch`
553
+ #
554
+ # * `Terminate`
555
+ #
556
+ # * `HealthCheck`
557
+ #
558
+ # * `ReplaceUnhealthy`
559
+ #
560
+ # * `AZRebalance`
561
+ #
562
+ # * `AlarmNotification`
563
+ #
564
+ # * `ScheduledActions`
565
+ #
566
+ # * `AddToLoadBalancer`
567
+ # @return [EmptyStructure]
568
+ def resume_processes(options = {})
569
+ options = options.merge(auto_scaling_group_name: @name)
570
+ resp = @client.resume_processes(options)
571
+ resp.data
572
+ end
573
+
574
+ # @example Request syntax with placeholder values
575
+ #
576
+ # auto_scaling_group.set_desired_capacity({
577
+ # desired_capacity: 1, # required
578
+ # honor_cooldown: false,
579
+ # })
580
+ # @param [Hash] options ({})
581
+ # @option options [required, Integer] :desired_capacity
582
+ # The number of EC2 instances that should be running in the Auto Scaling
583
+ # group.
584
+ # @option options [Boolean] :honor_cooldown
585
+ # By default, `SetDesiredCapacity` overrides any cooldown period
586
+ # associated with the Auto Scaling group. Specify `True` to make Auto
587
+ # Scaling to wait for the cool-down period associated with the Auto
588
+ # Scaling group to complete before initiating a scaling activity to set
589
+ # your Auto Scaling group to its new capacity.
590
+ # @return [EmptyStructure]
591
+ def set_desired_capacity(options = {})
592
+ options = options.merge(auto_scaling_group_name: @name)
593
+ resp = @client.set_desired_capacity(options)
594
+ resp.data
595
+ end
596
+
597
+ # @example Request syntax with placeholder values
598
+ #
599
+ # auto_scaling_group.suspend_processes({
600
+ # scaling_processes: ["XmlStringMaxLen255"],
601
+ # })
602
+ # @param [Hash] options ({})
603
+ # @option options [Array<String>] :scaling_processes
604
+ # One or more of the following processes. If you omit this parameter,
605
+ # all processes are specified.
606
+ #
607
+ # * `Launch`
608
+ #
609
+ # * `Terminate`
610
+ #
611
+ # * `HealthCheck`
612
+ #
613
+ # * `ReplaceUnhealthy`
614
+ #
615
+ # * `AZRebalance`
616
+ #
617
+ # * `AlarmNotification`
618
+ #
619
+ # * `ScheduledActions`
620
+ #
621
+ # * `AddToLoadBalancer`
622
+ # @return [EmptyStructure]
623
+ def suspend_processes(options = {})
624
+ options = options.merge(auto_scaling_group_name: @name)
625
+ resp = @client.suspend_processes(options)
626
+ resp.data
627
+ end
628
+
629
+ # @example Request syntax with placeholder values
630
+ #
631
+ # autoscalinggroup = auto_scaling_group.update({
632
+ # launch_configuration_name: "ResourceName",
633
+ # min_size: 1,
634
+ # max_size: 1,
635
+ # desired_capacity: 1,
636
+ # default_cooldown: 1,
637
+ # availability_zones: ["XmlStringMaxLen255"],
638
+ # health_check_type: "XmlStringMaxLen32",
639
+ # health_check_grace_period: 1,
640
+ # placement_group: "XmlStringMaxLen255",
641
+ # vpc_zone_identifier: "XmlStringMaxLen2047",
642
+ # termination_policies: ["XmlStringMaxLen1600"],
643
+ # new_instances_protected_from_scale_in: false,
644
+ # })
645
+ # @param [Hash] options ({})
646
+ # @option options [String] :launch_configuration_name
647
+ # The name of the launch configuration.
648
+ # @option options [Integer] :min_size
649
+ # The minimum size of the Auto Scaling group.
650
+ # @option options [Integer] :max_size
651
+ # The maximum size of the Auto Scaling group.
652
+ # @option options [Integer] :desired_capacity
653
+ # The number of EC2 instances that should be running in the Auto Scaling
654
+ # group. This number must be greater than or equal to the minimum size
655
+ # of the group and less than or equal to the maximum size of the group.
656
+ # @option options [Integer] :default_cooldown
657
+ # The amount of time, in seconds, after a scaling activity completes
658
+ # before another scaling activity can start. The default is 300.
659
+ #
660
+ # For more information, see [Auto Scaling Cooldowns][1] in the *Auto
661
+ # Scaling User Guide*.
662
+ #
663
+ #
664
+ #
665
+ # [1]: http://docs.aws.amazon.com/autoscaling/latest/userguide/Cooldown.html
666
+ # @option options [Array<String>] :availability_zones
667
+ # One or more Availability Zones for the group.
668
+ # @option options [String] :health_check_type
669
+ # The service to use for the health checks. The valid values are `EC2`
670
+ # and `ELB`.
671
+ # @option options [Integer] :health_check_grace_period
672
+ # The amount of time, in seconds, that Auto Scaling waits before
673
+ # checking the health status of an EC2 instance that has come into
674
+ # service. The default is 0.
675
+ #
676
+ # For more information, see [Health Checks][1] in the *Auto Scaling User
677
+ # Guide*.
678
+ #
679
+ #
680
+ #
681
+ # [1]: http://docs.aws.amazon.com/autoscaling/latest/userguide/healthcheck.html
682
+ # @option options [String] :placement_group
683
+ # The name of the placement group into which you'll launch your
684
+ # instances, if any. For more information, see [Placement Groups][1] in
685
+ # the *Amazon Elastic Compute Cloud User Guide*.
686
+ #
687
+ #
688
+ #
689
+ # [1]: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/placement-groups.html
690
+ # @option options [String] :vpc_zone_identifier
691
+ # The ID of the subnet, if you are launching into a VPC. You can specify
692
+ # several subnets in a comma-separated list.
693
+ #
694
+ # When you specify `VPCZoneIdentifier` with `AvailabilityZones`, ensure
695
+ # that the subnets' Availability Zones match the values you specify for
696
+ # `AvailabilityZones`.
697
+ #
698
+ # For more information, see [Launching Auto Scaling Instances in a
699
+ # VPC][1] in the *Auto Scaling User Guide*.
700
+ #
701
+ #
702
+ #
703
+ # [1]: http://docs.aws.amazon.com/autoscaling/latest/userguide/asg-in-vpc.html
704
+ # @option options [Array<String>] :termination_policies
705
+ # A standalone termination policy or a list of termination policies used
706
+ # to select the instance to terminate. The policies are executed in the
707
+ # order that they are listed.
708
+ #
709
+ # For more information, see [Controlling Which Instances Auto Scaling
710
+ # Terminates During Scale In][1] in the *Auto Scaling User Guide*.
711
+ #
712
+ #
713
+ #
714
+ # [1]: http://docs.aws.amazon.com/autoscaling/latest/userguide/as-instance-termination.html
715
+ # @option options [Boolean] :new_instances_protected_from_scale_in
716
+ # Indicates whether newly launched instances are protected from
717
+ # termination by Auto Scaling when scaling in.
718
+ # @return [AutoScalingGroup]
719
+ def update(options = {})
720
+ options = options.merge(auto_scaling_group_name: @name)
721
+ resp = @client.update_auto_scaling_group(options)
722
+ AutoScalingGroup.new(
723
+ name: options[:auto_scaling_group_name],
724
+ client: @client
725
+ )
726
+ end
727
+
728
+ # @!group Associations
729
+
730
+ # @example Request syntax with placeholder values
731
+ #
732
+ # activities = auto_scaling_group.activities({
733
+ # activity_ids: ["XmlString"],
734
+ # })
735
+ # @param [Hash] options ({})
736
+ # @option options [Array<String>] :activity_ids
737
+ # The activity IDs of the desired scaling activities. If you omit this
738
+ # parameter, all activities for the past six weeks are described. If you
739
+ # specify an Auto Scaling group, the results are limited to that group.
740
+ # The list of requested activities cannot contain more than 50 items. If
741
+ # unknown activities are requested, they are ignored with no error.
742
+ # @return [Activity::Collection]
743
+ def activities(options = {})
744
+ batches = Enumerator.new do |y|
745
+ options = options.merge(auto_scaling_group_name: @name)
746
+ resp = @client.describe_scaling_activities(options)
747
+ resp.each_page do |page|
748
+ batch = []
749
+ page.data.activities.each do |a|
750
+ batch << Activity.new(
751
+ id: a.activity_id,
752
+ data: a,
753
+ client: @client
754
+ )
755
+ end
756
+ y.yield(batch)
757
+ end
758
+ end
759
+ Activity::Collection.new(batches)
760
+ end
761
+
762
+ # @return [Instance::Collection]
763
+ def instances
764
+ batch = []
765
+ data.instances.each do |i|
766
+ batch << Instance.new(
767
+ group_name: @name,
768
+ id: i.instance_id,
769
+ data: i,
770
+ client: @client
771
+ )
772
+ end
773
+ Instance::Collection.new([batch], size: batch.size)
774
+ end
775
+
776
+ # @return [LaunchConfiguration, nil]
777
+ def launch_configuration
778
+ if data.launch_configuration_name
779
+ LaunchConfiguration.new(
780
+ name: data.launch_configuration_name,
781
+ client: @client
782
+ )
783
+ else
784
+ nil
785
+ end
786
+ end
787
+
788
+ # @param [String] name
789
+ # @return [LifecycleHook]
790
+ def lifecycle_hook(name)
791
+ LifecycleHook.new(
792
+ group_name: @name,
793
+ name: name,
794
+ client: @client
795
+ )
796
+ end
797
+
798
+ # @example Request syntax with placeholder values
799
+ #
800
+ # lifecyclehooks = auto_scaling_group.lifecycle_hooks({
801
+ # lifecycle_hook_names: ["AsciiStringMaxLen255"],
802
+ # })
803
+ # @param [Hash] options ({})
804
+ # @option options [Array<String>] :lifecycle_hook_names
805
+ # The names of one or more lifecycle hooks. If you omit this parameter,
806
+ # all lifecycle hooks are described.
807
+ # @return [LifecycleHook::Collection]
808
+ def lifecycle_hooks(options = {})
809
+ batches = Enumerator.new do |y|
810
+ batch = []
811
+ options = options.merge(auto_scaling_group_name: @name)
812
+ resp = @client.describe_lifecycle_hooks(options)
813
+ resp.data.lifecycle_hooks.each do |l|
814
+ batch << LifecycleHook.new(
815
+ group_name: l.auto_scaling_group_name,
816
+ name: l.lifecycle_hook_name,
817
+ data: l,
818
+ client: @client
819
+ )
820
+ end
821
+ y.yield(batch)
822
+ end
823
+ LifecycleHook::Collection.new(batches)
824
+ end
825
+
826
+ # @param [String] name
827
+ # @return [LoadBalancer]
828
+ def load_balancer(name)
829
+ LoadBalancer.new(
830
+ group_name: @name,
831
+ name: name,
832
+ client: @client
833
+ )
834
+ end
835
+
836
+ # @example Request syntax with placeholder values
837
+ #
838
+ # loadbalancers = auto_scaling_group.load_balancers({
839
+ # next_token: "XmlString",
840
+ # max_records: 1,
841
+ # })
842
+ # @param [Hash] options ({})
843
+ # @option options [String] :next_token
844
+ # The token for the next set of items to return. (You received this
845
+ # token from a previous call.)
846
+ # @option options [Integer] :max_records
847
+ # The maximum number of items to return with this call.
848
+ # @return [LoadBalancer::Collection]
849
+ def load_balancers(options = {})
850
+ batches = Enumerator.new do |y|
851
+ batch = []
852
+ options = options.merge(auto_scaling_group_name: @name)
853
+ resp = @client.describe_load_balancers(options)
854
+ resp.data.load_balancers.each do |l|
855
+ batch << LoadBalancer.new(
856
+ group_name: @name,
857
+ name: l.load_balancer_name,
858
+ data: l,
859
+ client: @client
860
+ )
861
+ end
862
+ y.yield(batch)
863
+ end
864
+ LoadBalancer::Collection.new(batches)
865
+ end
866
+
867
+ # @example Request syntax with placeholder values
868
+ #
869
+ # notificationconfigurations = auto_scaling_group.notification_configurations()
870
+ # @param [Hash] options ({})
871
+ # @return [NotificationConfiguration::Collection]
872
+ def notification_configurations(options = {})
873
+ batches = Enumerator.new do |y|
874
+ options = Aws::Util.deep_merge(options, auto_scaling_group_names: [@name])
875
+ resp = @client.describe_notification_configurations(options)
876
+ resp.each_page do |page|
877
+ batch = []
878
+ page.data.notification_configurations.each do |n|
879
+ batch << NotificationConfiguration.new(
880
+ group_name: n.auto_scaling_group_name,
881
+ type: n.notification_type,
882
+ topic_arn: n.topic_arn,
883
+ data: n,
884
+ client: @client
885
+ )
886
+ end
887
+ y.yield(batch)
888
+ end
889
+ end
890
+ NotificationConfiguration::Collection.new(batches)
891
+ end
892
+
893
+ # @example Request syntax with placeholder values
894
+ #
895
+ # policies = auto_scaling_group.policies({
896
+ # policy_names: ["ResourceName"],
897
+ # policy_types: ["XmlStringMaxLen64"],
898
+ # })
899
+ # @param [Hash] options ({})
900
+ # @option options [Array<String>] :policy_names
901
+ # One or more policy names or policy ARNs to be described. If you omit
902
+ # this parameter, all policy names are described. If an group name is
903
+ # provided, the results are limited to that group. This list is limited
904
+ # to 50 items. If you specify an unknown policy name, it is ignored with
905
+ # no error.
906
+ # @option options [Array<String>] :policy_types
907
+ # One or more policy types. Valid values are `SimpleScaling` and
908
+ # `StepScaling`.
909
+ # @return [ScalingPolicy::Collection]
910
+ def policies(options = {})
911
+ batches = Enumerator.new do |y|
912
+ options = options.merge(auto_scaling_group_name: @name)
913
+ resp = @client.describe_policies(options)
914
+ resp.each_page do |page|
915
+ batch = []
916
+ page.data.scaling_policies.each do |s|
917
+ batch << ScalingPolicy.new(
918
+ name: s.policy_name,
919
+ data: s,
920
+ client: @client
921
+ )
922
+ end
923
+ y.yield(batch)
924
+ end
925
+ end
926
+ ScalingPolicy::Collection.new(batches)
927
+ end
928
+
929
+ # @example Request syntax with placeholder values
930
+ #
931
+ # scheduledactions = auto_scaling_group.scheduled_actions({
932
+ # scheduled_action_names: ["ResourceName"],
933
+ # start_time: Time.now,
934
+ # end_time: Time.now,
935
+ # })
936
+ # @param [Hash] options ({})
937
+ # @option options [Array<String>] :scheduled_action_names
938
+ # Describes one or more scheduled actions. If you omit this parameter,
939
+ # all scheduled actions are described. If you specify an unknown
940
+ # scheduled action, it is ignored with no error.
941
+ #
942
+ # You can describe up to a maximum of 50 instances with a single call.
943
+ # If there are more items to return, the call returns a token. To get
944
+ # the next set of items, repeat the call with the returned token.
945
+ # @option options [Time,DateTime,Date,Integer,String] :start_time
946
+ # The earliest scheduled start time to return. If scheduled action names
947
+ # are provided, this parameter is ignored.
948
+ # @option options [Time,DateTime,Date,Integer,String] :end_time
949
+ # The latest scheduled start time to return. If scheduled action names
950
+ # are provided, this parameter is ignored.
951
+ # @return [ScheduledAction::Collection]
952
+ def scheduled_actions(options = {})
953
+ batches = Enumerator.new do |y|
954
+ options = options.merge(auto_scaling_group_name: @name)
955
+ resp = @client.describe_scheduled_actions(options)
956
+ resp.each_page do |page|
957
+ batch = []
958
+ page.data.scheduled_update_group_actions.each do |s|
959
+ batch << ScheduledAction.new(
960
+ name: s.scheduled_action_name,
961
+ data: s,
962
+ client: @client
963
+ )
964
+ end
965
+ y.yield(batch)
966
+ end
967
+ end
968
+ ScheduledAction::Collection.new(batches)
969
+ end
970
+
971
+ # @param [String] key
972
+ # @return [Tag]
973
+ def tag(key)
974
+ Tag.new(
975
+ key: key,
976
+ resource_id: @name,
977
+ resource_type: "auto-scaling-group",
978
+ client: @client
979
+ )
980
+ end
981
+
982
+ # @return [Tag::Collection]
983
+ def tags
984
+ batch = []
985
+ data.tags.each do |t|
986
+ batch << Tag.new(
987
+ key: t.key,
988
+ resource_id: t.resource_id,
989
+ resource_type: t.resource_type,
990
+ data: t,
991
+ client: @client
992
+ )
993
+ end
994
+ Tag::Collection.new([batch], size: batch.size)
995
+ end
996
+
997
+ # @deprecated
998
+ # @api private
999
+ def identifiers
1000
+ { name: @name }
1001
+ end
1002
+ deprecated(:identifiers)
1003
+
1004
+ private
1005
+
1006
+ def extract_name(args, options)
1007
+ value = args[0] || options.delete(:name)
1008
+ case value
1009
+ when String then value
1010
+ when nil then raise ArgumentError, "missing required option :name"
1011
+ else
1012
+ msg = "expected :name to be a String, got #{value.class}"
1013
+ raise ArgumentError, msg
1014
+ end
1015
+ end
1016
+
1017
+ def yield_waiter_and_warn(waiter, &block)
1018
+ if !@waiter_block_warned
1019
+ msg = "pass options to configure the waiter; "
1020
+ msg << "yielding the waiter is deprecated"
1021
+ warn(msg)
1022
+ @waiter_block_warned = true
1023
+ end
1024
+ yield(waiter.waiter)
1025
+ end
1026
+
1027
+ def separate_params_and_options(options)
1028
+ opts = Set.new([:client, :max_attempts, :delay, :before_attempt, :before_wait])
1029
+ waiter_opts = {}
1030
+ waiter_params = {}
1031
+ options.each_pair do |key, value|
1032
+ if opts.include?(key)
1033
+ waiter_opts[key] = value
1034
+ else
1035
+ waiter_params[key] = value
1036
+ end
1037
+ end
1038
+ waiter_opts[:client] ||= @client
1039
+ [waiter_opts, waiter_params]
1040
+ end
1041
+
1042
+ class Collection < Aws::Resources::Collection; end
1043
+ end
1044
+ end
1045
+ end