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.
@@ -0,0 +1,7 @@
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
+
@@ -0,0 +1,23 @@
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
+ module Errors
11
+
12
+ extend Aws::Errors::DynamicErrors
13
+
14
+ # Raised when calling #load or #data on a resource class that can not be
15
+ # loaded. This can happen when:
16
+ #
17
+ # * A resource class has identifiers, but no data attributes.
18
+ # * Resource data is only available when making an API call that
19
+ # enumerates all resources of that type.
20
+ class ResourceNotLoadable < RuntimeError; end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,416 @@
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 Instance
11
+
12
+ extend Aws::Deprecations
13
+
14
+ # @overload def initialize(group_name, id, options = {})
15
+ # @param [String] group_name
16
+ # @param [String] id
17
+ # @option options [Client] :client
18
+ # @overload def initialize(options = {})
19
+ # @option options [required, String] :group_name
20
+ # @option options [required, String] :id
21
+ # @option options [Client] :client
22
+ def initialize(*args)
23
+ options = Hash === args.last ? args.pop.dup : {}
24
+ @group_name = extract_group_name(args, options)
25
+ @id = extract_id(args, options)
26
+ @data = options.delete(:data)
27
+ @client = options.delete(:client) || Client.new(options)
28
+ end
29
+
30
+ # @!group Read-Only Attributes
31
+
32
+ # @return [String]
33
+ def group_name
34
+ @group_name
35
+ end
36
+ alias :auto_scaling_group_name :group_name
37
+
38
+ # @return [String]
39
+ def id
40
+ @id
41
+ end
42
+ alias :instance_id :id
43
+
44
+ # The Availability Zone for the instance.
45
+ # @return [String]
46
+ def availability_zone
47
+ data.availability_zone
48
+ end
49
+
50
+ # The lifecycle state for the instance. For more information, see [Auto
51
+ # Scaling Lifecycle][1] in the *Auto Scaling User Guide*.
52
+ #
53
+ #
54
+ #
55
+ # [1]: http://docs.aws.amazon.com/autoscaling/latest/userguide/AutoScalingGroupLifecycle.html
56
+ # @return [String]
57
+ def lifecycle_state
58
+ data.lifecycle_state
59
+ end
60
+
61
+ # The last reported health status of this instance. "Healthy" means
62
+ # that the instance is healthy and should remain in service.
63
+ # "Unhealthy" means that the instance is unhealthy and Auto Scaling
64
+ # should terminate and replace it.
65
+ # @return [String]
66
+ def health_status
67
+ data.health_status
68
+ end
69
+
70
+ # The launch configuration associated with the instance.
71
+ # @return [String]
72
+ def launch_configuration_name
73
+ data.launch_configuration_name
74
+ end
75
+
76
+ # Indicates whether the instance is protected from termination by Auto
77
+ # Scaling when scaling in.
78
+ # @return [Boolean]
79
+ def protected_from_scale_in
80
+ data.protected_from_scale_in
81
+ end
82
+
83
+ # @!endgroup
84
+
85
+ # @return [Client]
86
+ def client
87
+ @client
88
+ end
89
+
90
+ # Loads, or reloads {#data} for the current {Instance}.
91
+ # Returns `self` making it possible to chain methods.
92
+ #
93
+ # instance.reload.data
94
+ #
95
+ # @return [self]
96
+ def load
97
+ resp = @client.describe_auto_scaling_instances(instance_ids: [@id])
98
+ @data = resp.autoscalinginstances[0]
99
+ self
100
+ end
101
+ alias :reload :load
102
+
103
+ # @return [Types::AutoScalingInstanceDetails]
104
+ # Returns the data for this {Instance}. Calls
105
+ # {Client#describe_auto_scaling_instances} if {#data_loaded?} is `false`.
106
+ def data
107
+ load unless @data
108
+ @data
109
+ end
110
+
111
+ # @return [Boolean]
112
+ # Returns `true` if this resource is loaded. Accessing attributes or
113
+ # {#data} on an unloaded resource will trigger a call to {#load}.
114
+ def data_loaded?
115
+ !!@data
116
+ end
117
+
118
+ # @!group Actions
119
+
120
+ # @example Request syntax with placeholder values
121
+ #
122
+ # instance.attach()
123
+ # @param [Hash] options ({})
124
+ # @return [EmptyStructure]
125
+ def attach(options = {})
126
+ options = Aws::Util.deep_merge(options,
127
+ auto_scaling_group_name: @group_name,
128
+ instance_ids: [@id]
129
+ )
130
+ resp = @client.attach_instances(options)
131
+ resp.data
132
+ end
133
+
134
+ # @example Request syntax with placeholder values
135
+ #
136
+ # activity = instance.detach({
137
+ # should_decrement_desired_capacity: false, # required
138
+ # })
139
+ # @param [Hash] options ({})
140
+ # @option options [required, Boolean] :should_decrement_desired_capacity
141
+ # If `True`, the Auto Scaling group decrements the desired capacity
142
+ # value by the number of instances detached.
143
+ # @return [Activity::Collection]
144
+ def detach(options = {})
145
+ batch = []
146
+ options = Aws::Util.deep_merge(options,
147
+ auto_scaling_group_name: @group_name,
148
+ instance_ids: [@id]
149
+ )
150
+ resp = @client.detach_instances(options)
151
+ resp.data.activities.each do |a|
152
+ batch << Activity.new(
153
+ id: a.activity_id,
154
+ data: a,
155
+ client: @client
156
+ )
157
+ end
158
+ Activity::Collection.new([batch], size: batch.size)
159
+ end
160
+
161
+ # @example Request syntax with placeholder values
162
+ #
163
+ # activity = instance.enter_standby({
164
+ # should_decrement_desired_capacity: false, # required
165
+ # })
166
+ # @param [Hash] options ({})
167
+ # @option options [required, Boolean] :should_decrement_desired_capacity
168
+ # Specifies whether the instances moved to `Standby` mode count as part
169
+ # of the Auto Scaling group's desired capacity. If set, the desired
170
+ # capacity for the Auto Scaling group decrements by the number of
171
+ # instances moved to `Standby` mode.
172
+ # @return [Activity::Collection]
173
+ def enter_standby(options = {})
174
+ batch = []
175
+ options = Aws::Util.deep_merge(options,
176
+ auto_scaling_group_name: @group_name,
177
+ instance_ids: [@id]
178
+ )
179
+ resp = @client.enter_standby(options)
180
+ resp.data.activities.each do |a|
181
+ batch << Activity.new(
182
+ id: a.activity_id,
183
+ data: a,
184
+ client: @client
185
+ )
186
+ end
187
+ Activity::Collection.new([batch], size: batch.size)
188
+ end
189
+
190
+ # @example Request syntax with placeholder values
191
+ #
192
+ # activity = instance.exit_standby()
193
+ # @param [Hash] options ({})
194
+ # @return [Activity::Collection]
195
+ def exit_standby(options = {})
196
+ batch = []
197
+ options = Aws::Util.deep_merge(options,
198
+ auto_scaling_group_name: @group_name,
199
+ instance_ids: [@id]
200
+ )
201
+ resp = @client.exit_standby(options)
202
+ resp.data.activities.each do |a|
203
+ batch << Activity.new(
204
+ id: a.activity_id,
205
+ data: a,
206
+ client: @client
207
+ )
208
+ end
209
+ Activity::Collection.new([batch], size: batch.size)
210
+ end
211
+
212
+ # @example Request syntax with placeholder values
213
+ #
214
+ # instance.set_health({
215
+ # health_status: "XmlStringMaxLen32", # required
216
+ # should_respect_grace_period: false,
217
+ # })
218
+ # @param [Hash] options ({})
219
+ # @option options [required, String] :health_status
220
+ # The health status of the instance. Set to `Healthy` if you want the
221
+ # instance to remain in service. Set to `Unhealthy` if you want the
222
+ # instance to be out of service. Auto Scaling will terminate and replace
223
+ # the unhealthy instance.
224
+ # @option options [Boolean] :should_respect_grace_period
225
+ # If the Auto Scaling group of the specified instance has a
226
+ # `HealthCheckGracePeriod` specified for the group, by default, this
227
+ # call will respect the grace period. Set this to `False`, if you do not
228
+ # want the call to respect the grace period associated with the group.
229
+ #
230
+ # For more information, see the description of the health check grace
231
+ # period for CreateAutoScalingGroup.
232
+ # @return [EmptyStructure]
233
+ def set_health(options = {})
234
+ options = options.merge(instance_id: @id)
235
+ resp = @client.set_instance_health(options)
236
+ resp.data
237
+ end
238
+
239
+ # @example Request syntax with placeholder values
240
+ #
241
+ # activity = instance.terminate({
242
+ # should_decrement_desired_capacity: false, # required
243
+ # })
244
+ # @param [Hash] options ({})
245
+ # @option options [required, Boolean] :should_decrement_desired_capacity
246
+ # If `true`, terminating the instance also decrements the size of the
247
+ # Auto Scaling group.
248
+ # @return [Activity]
249
+ def terminate(options = {})
250
+ options = options.merge(instance_id: @id)
251
+ resp = @client.terminate_instance_in_auto_scaling_group(options)
252
+ Activity.new(
253
+ id: resp.data.activity.activity_id,
254
+ data: resp.data.activity,
255
+ client: @client
256
+ )
257
+ end
258
+
259
+ # @!group Associations
260
+
261
+ # @return [AutoScalingGroup]
262
+ def group
263
+ AutoScalingGroup.new(
264
+ name: @group_name,
265
+ client: @client
266
+ )
267
+ end
268
+
269
+ # @return [LaunchConfiguration, nil]
270
+ def launch_configuration
271
+ if data.launch_configuration_name
272
+ LaunchConfiguration.new(
273
+ name: data.launch_configuration_name,
274
+ client: @client
275
+ )
276
+ else
277
+ nil
278
+ end
279
+ end
280
+
281
+ # @deprecated
282
+ # @api private
283
+ def identifiers
284
+ {
285
+ group_name: @group_name,
286
+ id: @id
287
+ }
288
+ end
289
+ deprecated(:identifiers)
290
+
291
+ private
292
+
293
+ def extract_group_name(args, options)
294
+ value = args[0] || options.delete(:group_name)
295
+ case value
296
+ when String then value
297
+ when nil then raise ArgumentError, "missing required option :group_name"
298
+ else
299
+ msg = "expected :group_name to be a String, got #{value.class}"
300
+ raise ArgumentError, msg
301
+ end
302
+ end
303
+
304
+ def extract_id(args, options)
305
+ value = args[1] || options.delete(:id)
306
+ case value
307
+ when String then value
308
+ when nil then raise ArgumentError, "missing required option :id"
309
+ else
310
+ msg = "expected :id to be a String, got #{value.class}"
311
+ raise ArgumentError, msg
312
+ end
313
+ end
314
+
315
+ class Collection < Aws::Resources::Collection
316
+
317
+ # @!group Batch Actions
318
+
319
+ # @example Request syntax with placeholder values
320
+ #
321
+ # instance.batch_attach()
322
+ # @param options ({})
323
+ # @return [void]
324
+ def batch_attach(options = {})
325
+ batch_enum.each do |batch|
326
+ params = Aws::Util.copy_hash(options)
327
+ params[:auto_scaling_group_name] = batch[0].group_name
328
+ params[:instance_ids] ||= []
329
+ batch.each do |item|
330
+ params[:instance_ids] << {
331
+ id: item.id
332
+ }
333
+ end
334
+ batch[0].client.attach_instances(params)
335
+ end
336
+ nil
337
+ end
338
+
339
+ # @example Request syntax with placeholder values
340
+ #
341
+ # instance.batch_detach({
342
+ # should_decrement_desired_capacity: false, # required
343
+ # })
344
+ # @param options ({})
345
+ # @option options [required, Boolean] :should_decrement_desired_capacity
346
+ # If `True`, the Auto Scaling group decrements the desired capacity
347
+ # value by the number of instances detached.
348
+ # @return [void]
349
+ def batch_detach(options = {})
350
+ batch_enum.each do |batch|
351
+ params = Aws::Util.copy_hash(options)
352
+ params[:auto_scaling_group_name] = batch[0].group_name
353
+ params[:instance_ids] ||= []
354
+ batch.each do |item|
355
+ params[:instance_ids] << {
356
+ id: item.id
357
+ }
358
+ end
359
+ batch[0].client.detach_instances(params)
360
+ end
361
+ nil
362
+ end
363
+
364
+ # @example Request syntax with placeholder values
365
+ #
366
+ # instance.batch_enter_standby({
367
+ # should_decrement_desired_capacity: false, # required
368
+ # })
369
+ # @param options ({})
370
+ # @option options [required, Boolean] :should_decrement_desired_capacity
371
+ # Specifies whether the instances moved to `Standby` mode count as part
372
+ # of the Auto Scaling group's desired capacity. If set, the desired
373
+ # capacity for the Auto Scaling group decrements by the number of
374
+ # instances moved to `Standby` mode.
375
+ # @return [void]
376
+ def batch_enter_standby(options = {})
377
+ batch_enum.each do |batch|
378
+ params = Aws::Util.copy_hash(options)
379
+ params[:auto_scaling_group_name] = batch[0].group_name
380
+ params[:instance_ids] ||= []
381
+ batch.each do |item|
382
+ params[:instance_ids] << {
383
+ id: item.id
384
+ }
385
+ end
386
+ batch[0].client.enter_standby(params)
387
+ end
388
+ nil
389
+ end
390
+
391
+ # @example Request syntax with placeholder values
392
+ #
393
+ # instance.batch_exit_standby()
394
+ # @param options ({})
395
+ # @return [void]
396
+ def batch_exit_standby(options = {})
397
+ batch_enum.each do |batch|
398
+ params = Aws::Util.copy_hash(options)
399
+ params[:auto_scaling_group_name] = batch[0].group_name
400
+ params[:instance_ids] ||= []
401
+ batch.each do |item|
402
+ params[:instance_ids] << {
403
+ id: item.id
404
+ }
405
+ end
406
+ batch[0].client.exit_standby(params)
407
+ end
408
+ nil
409
+ end
410
+
411
+ # @!endgroup
412
+
413
+ end
414
+ end
415
+ end
416
+ end
@@ -0,0 +1,236 @@
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 LaunchConfiguration
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 :launch_configuration_name :name
34
+
35
+ # The Amazon Resource Name (ARN) of the launch configuration.
36
+ # @return [String]
37
+ def launch_configuration_arn
38
+ data.launch_configuration_arn
39
+ end
40
+
41
+ # The ID of the Amazon Machine Image (AMI).
42
+ # @return [String]
43
+ def image_id
44
+ data.image_id
45
+ end
46
+
47
+ # The name of the key pair.
48
+ # @return [String]
49
+ def key_name
50
+ data.key_name
51
+ end
52
+
53
+ # The security groups to associate with the instances.
54
+ # @return [Array<String>]
55
+ def security_groups
56
+ data.security_groups
57
+ end
58
+
59
+ # The ID of a ClassicLink-enabled VPC to link your EC2-Classic instances
60
+ # to. This parameter can only be used if you are launching EC2-Classic
61
+ # instances. For more information, see [ClassicLink][1] in the *Amazon
62
+ # Elastic Compute Cloud User Guide*.
63
+ #
64
+ #
65
+ #
66
+ # [1]: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html
67
+ # @return [String]
68
+ def classic_link_vpc_id
69
+ data.classic_link_vpc_id
70
+ end
71
+
72
+ # The IDs of one or more security groups for the VPC specified in
73
+ # `ClassicLinkVPCId`. This parameter is required if you specify a
74
+ # ClassicLink-enabled VPC, and cannot be used otherwise. For more
75
+ # information, see [ClassicLink][1] in the *Amazon Elastic Compute Cloud
76
+ # User Guide*.
77
+ #
78
+ #
79
+ #
80
+ # [1]: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/vpc-classiclink.html
81
+ # @return [Array<String>]
82
+ def classic_link_vpc_security_groups
83
+ data.classic_link_vpc_security_groups
84
+ end
85
+
86
+ # The user data available to the instances.
87
+ # @return [String]
88
+ def user_data
89
+ data.user_data
90
+ end
91
+
92
+ # The instance type for the instances.
93
+ # @return [String]
94
+ def instance_type
95
+ data.instance_type
96
+ end
97
+
98
+ # The ID of the kernel associated with the AMI.
99
+ # @return [String]
100
+ def kernel_id
101
+ data.kernel_id
102
+ end
103
+
104
+ # The ID of the RAM disk associated with the AMI.
105
+ # @return [String]
106
+ def ramdisk_id
107
+ data.ramdisk_id
108
+ end
109
+
110
+ # A block device mapping, which specifies the block devices for the
111
+ # instance.
112
+ # @return [Array<Types::BlockDeviceMapping>]
113
+ def block_device_mappings
114
+ data.block_device_mappings
115
+ end
116
+
117
+ # Controls whether instances in this group are launched with detailed
118
+ # (`true`) or basic (`false`) monitoring.
119
+ # @return [Types::InstanceMonitoring]
120
+ def instance_monitoring
121
+ data.instance_monitoring
122
+ end
123
+
124
+ # The price to bid when launching Spot Instances.
125
+ # @return [String]
126
+ def spot_price
127
+ data.spot_price
128
+ end
129
+
130
+ # The name or Amazon Resource Name (ARN) of the instance profile
131
+ # associated with the IAM role for the instance.
132
+ # @return [String]
133
+ def iam_instance_profile
134
+ data.iam_instance_profile
135
+ end
136
+
137
+ # The creation date and time for the launch configuration.
138
+ # @return [Time]
139
+ def created_time
140
+ data.created_time
141
+ end
142
+
143
+ # Controls whether the instance is optimized for EBS I/O (`true`) or not
144
+ # (`false`).
145
+ # @return [Boolean]
146
+ def ebs_optimized
147
+ data.ebs_optimized
148
+ end
149
+
150
+ # \[EC2-VPC\] Indicates whether to assign a public IP address to each
151
+ # instance.
152
+ # @return [Boolean]
153
+ def associate_public_ip_address
154
+ data.associate_public_ip_address
155
+ end
156
+
157
+ # The tenancy of the instance, either `default` or `dedicated`. An
158
+ # instance with `dedicated` tenancy runs in an isolated, single-tenant
159
+ # hardware and can only be launched into a VPC.
160
+ # @return [String]
161
+ def placement_tenancy
162
+ data.placement_tenancy
163
+ end
164
+
165
+ # @!endgroup
166
+
167
+ # @return [Client]
168
+ def client
169
+ @client
170
+ end
171
+
172
+ # Loads, or reloads {#data} for the current {LaunchConfiguration}.
173
+ # Returns `self` making it possible to chain methods.
174
+ #
175
+ # launch_configuration.reload.data
176
+ #
177
+ # @return [self]
178
+ def load
179
+ resp = @client.describe_launch_configurations(launch_configuration_names: [@name])
180
+ @data = resp.launchconfigurations[0]
181
+ self
182
+ end
183
+ alias :reload :load
184
+
185
+ # @return [Types::LaunchConfiguration]
186
+ # Returns the data for this {LaunchConfiguration}. Calls
187
+ # {Client#describe_launch_configurations} if {#data_loaded?} is `false`.
188
+ def data
189
+ load unless @data
190
+ @data
191
+ end
192
+
193
+ # @return [Boolean]
194
+ # Returns `true` if this resource is loaded. Accessing attributes or
195
+ # {#data} on an unloaded resource will trigger a call to {#load}.
196
+ def data_loaded?
197
+ !!@data
198
+ end
199
+
200
+ # @!group Actions
201
+
202
+ # @example Request syntax with placeholder values
203
+ #
204
+ # launch_configuration.delete()
205
+ # @param [Hash] options ({})
206
+ # @return [EmptyStructure]
207
+ def delete(options = {})
208
+ options = options.merge(launch_configuration_name: @name)
209
+ resp = @client.delete_launch_configuration(options)
210
+ resp.data
211
+ end
212
+
213
+ # @deprecated
214
+ # @api private
215
+ def identifiers
216
+ { name: @name }
217
+ end
218
+ deprecated(:identifiers)
219
+
220
+ private
221
+
222
+ def extract_name(args, options)
223
+ value = args[0] || options.delete(:name)
224
+ case value
225
+ when String then value
226
+ when nil then raise ArgumentError, "missing required option :name"
227
+ else
228
+ msg = "expected :name to be a String, got #{value.class}"
229
+ raise ArgumentError, msg
230
+ end
231
+ end
232
+
233
+ class Collection < Aws::Resources::Collection; end
234
+ end
235
+ end
236
+ end