aws-sdk 1.1.3 → 1.1.4
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.
- data/ca-bundle.crt +2 -348
- data/lib/aws.rb +24 -49
- data/lib/aws/{common.rb → core.rb} +120 -9
- data/lib/aws/{api_config.rb → core/api_config.rb} +19 -20
- data/lib/aws/core/api_config_transform.rb +36 -0
- data/lib/aws/core/async_handle.rb +91 -0
- data/lib/aws/core/authorize_v2.rb +39 -0
- data/lib/aws/{authorize_v3.rb → core/authorize_v3.rb} +16 -15
- data/lib/aws/{api_config_transform.rb → core/authorize_with_session_token.rb} +9 -12
- data/lib/aws/core/autoloader.rb +64 -0
- data/lib/aws/core/cacheable.rb +78 -0
- data/lib/aws/core/client.rb +471 -0
- data/lib/aws/core/client_logging.rb +125 -0
- data/lib/aws/core/collections.rb +229 -0
- data/lib/aws/core/configuration.rb +358 -0
- data/lib/aws/core/configured_client_methods.rb +76 -0
- data/lib/aws/core/configured_grammars.rb +63 -0
- data/lib/aws/{configured_option_grammars.rb → core/configured_option_grammars.rb} +18 -20
- data/lib/aws/{configured_xml_grammars.rb → core/configured_xml_grammars.rb} +19 -21
- data/lib/aws/core/default_signer.rb +67 -0
- data/lib/aws/core/http/curb_handler.rb +129 -0
- data/lib/aws/core/http/handler.rb +77 -0
- data/lib/aws/core/http/httparty_handler.rb +113 -0
- data/lib/aws/core/http/net_http_handler.rb +124 -0
- data/lib/aws/core/http/request.rb +207 -0
- data/lib/aws/core/http/response.rb +73 -0
- data/lib/aws/{ignore_result_element.rb → core/ignore_result_element.rb} +14 -18
- data/lib/aws/core/indifferent_hash.rb +88 -0
- data/lib/aws/core/inflection.rb +47 -0
- data/lib/aws/core/lazy_error_classes.rb +62 -0
- data/lib/aws/{uri_escape.rb → core/meta_utils.rb} +24 -23
- data/lib/aws/core/model.rb +57 -0
- data/lib/aws/{authorize_with_session_token.rb → core/naming.rb} +9 -8
- data/lib/aws/core/option_grammar.rb +562 -0
- data/lib/aws/core/policy.rb +914 -0
- data/lib/aws/core/resource.rb +380 -0
- data/lib/aws/core/resource_cache.rb +40 -0
- data/lib/aws/core/response.rb +125 -0
- data/lib/aws/core/response_cache.rb +50 -0
- data/lib/aws/core/service_interface.rb +60 -0
- data/lib/aws/core/uri_escape.rb +46 -0
- data/lib/aws/core/xml_grammar.rb +926 -0
- data/lib/aws/ec2.rb +47 -16
- data/lib/aws/ec2/attachment.rb +0 -2
- data/lib/aws/ec2/attachment_collection.rb +1 -6
- data/lib/aws/ec2/availability_zone.rb +0 -2
- data/lib/aws/ec2/availability_zone_collection.rb +0 -3
- data/lib/aws/ec2/client.rb +6 -9
- data/lib/aws/ec2/client/xml.rb +3 -6
- data/lib/aws/ec2/collection.rb +1 -4
- data/lib/aws/ec2/config.rb +18 -0
- data/lib/aws/ec2/elastic_ip.rb +0 -2
- data/lib/aws/ec2/elastic_ip_collection.rb +0 -4
- data/lib/aws/ec2/errors.rb +1 -4
- data/lib/aws/ec2/has_permissions.rb +0 -2
- data/lib/aws/ec2/image.rb +0 -5
- data/lib/aws/ec2/image_collection.rb +0 -6
- data/lib/aws/ec2/instance.rb +23 -9
- data/lib/aws/ec2/instance_collection.rb +85 -22
- data/lib/aws/ec2/key_pair.rb +0 -2
- data/lib/aws/ec2/key_pair_collection.rb +1 -4
- data/lib/aws/ec2/permission_collection.rb +2 -5
- data/lib/aws/ec2/region.rb +0 -2
- data/lib/aws/ec2/region_collection.rb +0 -4
- data/lib/aws/ec2/request.rb +4 -9
- data/lib/aws/ec2/reserved_instances.rb +0 -3
- data/lib/aws/ec2/reserved_instances_collection.rb +0 -4
- data/lib/aws/ec2/reserved_instances_offering.rb +0 -3
- data/lib/aws/ec2/reserved_instances_offering_collection.rb +0 -4
- data/lib/aws/ec2/resource.rb +3 -5
- data/lib/aws/ec2/resource_tag_collection.rb +1 -6
- data/lib/aws/ec2/security_group.rb +204 -72
- data/lib/aws/ec2/security_group/egress_ip_permission_collection.rb +53 -0
- data/lib/aws/ec2/security_group/ip_permission.rb +92 -10
- data/lib/aws/ec2/security_group/ip_permission_collection.rb +14 -15
- data/lib/aws/ec2/security_group_collection.rb +11 -8
- data/lib/aws/ec2/snapshot.rb +0 -4
- data/lib/aws/ec2/snapshot_collection.rb +0 -4
- data/lib/aws/ec2/tag.rb +0 -3
- data/lib/aws/ec2/tag_collection.rb +1 -8
- data/lib/aws/ec2/tagged_item.rb +1 -3
- data/lib/aws/ec2/volume.rb +0 -6
- data/lib/aws/ec2/volume_collection.rb +0 -4
- data/lib/aws/errors.rb +0 -3
- data/lib/aws/iam.rb +33 -12
- data/lib/aws/iam/access_key.rb +0 -3
- data/lib/aws/iam/access_key_collection.rb +0 -3
- data/lib/aws/iam/account_alias_collection.rb +0 -2
- data/lib/aws/iam/client.rb +6 -8
- data/lib/aws/iam/client/xml.rb +4 -8
- data/lib/aws/iam/collection.rb +2 -5
- data/lib/aws/iam/config.rb +18 -0
- data/lib/aws/iam/errors.rb +2 -4
- data/lib/aws/iam/group.rb +0 -5
- data/lib/aws/iam/group_collection.rb +0 -3
- data/lib/aws/iam/group_policy_collection.rb +0 -2
- data/lib/aws/iam/group_user_collection.rb +1 -4
- data/lib/aws/iam/login_profile.rb +0 -2
- data/lib/aws/iam/mfa_device.rb +1 -3
- data/lib/aws/iam/mfa_device_collection.rb +0 -3
- data/lib/aws/iam/policy.rb +2 -4
- data/lib/aws/iam/policy_collection.rb +0 -3
- data/lib/aws/iam/request.rb +3 -7
- data/lib/aws/iam/resource.rb +1 -4
- data/lib/aws/iam/server_certificate.rb +0 -2
- data/lib/aws/iam/server_certificate_collection.rb +0 -3
- data/lib/aws/iam/signing_certificate.rb +0 -2
- data/lib/aws/iam/signing_certificate_collection.rb +0 -3
- data/lib/aws/iam/user.rb +0 -7
- data/lib/aws/iam/user_collection.rb +0 -3
- data/lib/aws/iam/user_group_collection.rb +0 -3
- data/lib/aws/iam/user_policy.rb +0 -2
- data/lib/aws/iam/user_policy_collection.rb +0 -3
- data/lib/aws/rails.rb +5 -4
- data/lib/aws/record.rb +4 -1
- data/lib/aws/record/base.rb +3 -2
- data/lib/aws/record/errors.rb +1 -3
- data/lib/aws/s3.rb +31 -6
- data/lib/aws/s3/access_control_list.rb +0 -2
- data/lib/aws/s3/acl_object.rb +10 -12
- data/lib/aws/s3/bucket.rb +1 -9
- data/lib/aws/s3/bucket_collection.rb +2 -5
- data/lib/aws/s3/bucket_version_collection.rb +1 -5
- data/lib/aws/s3/client.rb +34 -37
- data/lib/aws/s3/client/xml.rb +11 -14
- data/lib/aws/{resource_cache.rb → s3/config.rb} +6 -20
- data/lib/aws/s3/errors.rb +6 -7
- data/lib/aws/s3/multipart_upload.rb +1 -4
- data/lib/aws/s3/multipart_upload_collection.rb +1 -6
- data/lib/aws/s3/object_collection.rb +1 -5
- data/lib/aws/s3/object_metadata.rb +1 -3
- data/lib/aws/s3/object_upload_collection.rb +1 -7
- data/lib/aws/s3/object_version.rb +1 -4
- data/lib/aws/s3/object_version_collection.rb +1 -4
- data/lib/aws/s3/policy.rb +3 -5
- data/lib/aws/s3/prefix_and_delimiter_collection.rb +0 -2
- data/lib/aws/s3/prefixed_collection.rb +0 -2
- data/lib/aws/s3/presigned_post.rb +1 -3
- data/lib/aws/s3/request.rb +2 -5
- data/lib/aws/s3/s3_object.rb +1 -8
- data/lib/aws/s3/tree.rb +8 -6
- data/lib/aws/s3/tree/branch_node.rb +0 -3
- data/lib/aws/s3/tree/child_collection.rb +1 -5
- data/lib/aws/s3/tree/leaf_node.rb +0 -5
- data/lib/aws/s3/tree/parent.rb +1 -4
- data/lib/aws/s3/uploaded_part.rb +1 -3
- data/lib/aws/s3/uploaded_part_collection.rb +1 -5
- data/lib/aws/simple_db.rb +21 -6
- data/lib/aws/simple_db/attribute.rb +1 -6
- data/lib/aws/simple_db/attribute_collection.rb +1 -7
- data/lib/aws/simple_db/client.rb +7 -9
- data/lib/aws/simple_db/client/options.rb +2 -4
- data/lib/aws/simple_db/client/xml.rb +5 -10
- data/lib/aws/{naming.rb → simple_db/config.rb} +3 -14
- data/lib/aws/simple_db/delete_attributes.rb +0 -2
- data/lib/aws/simple_db/domain.rb +1 -6
- data/lib/aws/simple_db/domain_collection.rb +1 -4
- data/lib/aws/simple_db/domain_metadata.rb +1 -3
- data/lib/aws/simple_db/errors.rb +1 -4
- data/lib/aws/simple_db/item.rb +1 -7
- data/lib/aws/simple_db/item_collection.rb +22 -23
- data/lib/aws/simple_db/put_attributes.rb +0 -2
- data/lib/aws/simple_db/request.rb +3 -7
- data/lib/aws/simple_email_service.rb +11 -6
- data/lib/aws/simple_email_service/client.rb +7 -9
- data/lib/aws/simple_email_service/client/options.rb +3 -6
- data/lib/aws/simple_email_service/client/xml.rb +4 -8
- data/lib/aws/simple_email_service/config.rb +19 -0
- data/lib/aws/simple_email_service/email_address_collection.rb +1 -3
- data/lib/aws/simple_email_service/errors.rb +1 -4
- data/lib/aws/simple_email_service/quotas.rb +1 -3
- data/lib/aws/simple_email_service/request.rb +3 -7
- data/lib/aws/sns.rb +15 -8
- data/lib/aws/sns/client.rb +7 -8
- data/lib/aws/sns/client/options.rb +3 -6
- data/lib/aws/sns/client/xml.rb +4 -8
- data/lib/aws/sns/config.rb +18 -0
- data/lib/aws/sns/errors.rb +1 -4
- data/lib/aws/sns/policy.rb +3 -5
- data/lib/aws/sns/request.rb +4 -9
- data/lib/aws/sns/subscription.rb +1 -5
- data/lib/aws/sns/subscription_collection.rb +1 -5
- data/lib/aws/sns/topic.rb +1 -6
- data/lib/aws/sns/topic_collection.rb +1 -4
- data/lib/aws/sns/topic_subscription_collection.rb +1 -4
- data/lib/aws/sqs.rb +14 -5
- data/lib/aws/sqs/client.rb +6 -9
- data/lib/aws/sqs/client/xml.rb +4 -7
- data/lib/aws/sqs/config.rb +18 -0
- data/lib/aws/sqs/errors.rb +1 -4
- data/lib/aws/sqs/policy.rb +3 -5
- data/lib/aws/sqs/queue.rb +2 -7
- data/lib/aws/sqs/queue_collection.rb +4 -5
- data/lib/aws/sqs/received_message.rb +1 -3
- data/lib/aws/sqs/received_sns_message.rb +2 -2
- data/lib/aws/sqs/request.rb +4 -7
- data/lib/aws/sts.rb +12 -6
- data/lib/aws/sts/client.rb +6 -8
- data/lib/aws/sts/client/xml.rb +4 -8
- data/lib/aws/sts/config.rb +18 -0
- data/lib/aws/sts/errors.rb +1 -4
- data/lib/aws/sts/federated_session.rb +0 -2
- data/lib/aws/sts/policy.rb +3 -5
- data/lib/aws/sts/request.rb +3 -7
- metadata +60 -50
- data/lib/aws/async_handle.rb +0 -90
- data/lib/aws/authorize_v2.rb +0 -37
- data/lib/aws/base_client.rb +0 -488
- data/lib/aws/cacheable.rb +0 -79
- data/lib/aws/client_logging.rb +0 -122
- data/lib/aws/collections.rb +0 -230
- data/lib/aws/configuration.rb +0 -357
- data/lib/aws/configured_client_methods.rb +0 -81
- data/lib/aws/configured_grammars.rb +0 -65
- data/lib/aws/default_signer.rb +0 -65
- data/lib/aws/http/curb_handler.rb +0 -127
- data/lib/aws/http/handler.rb +0 -77
- data/lib/aws/http/httparty_handler.rb +0 -103
- data/lib/aws/http/request.rb +0 -165
- data/lib/aws/http/request_param.rb +0 -64
- data/lib/aws/http/response.rb +0 -72
- data/lib/aws/indifferent_hash.rb +0 -86
- data/lib/aws/inflection.rb +0 -46
- data/lib/aws/lazy_error_classes.rb +0 -64
- data/lib/aws/meta_utils.rb +0 -43
- data/lib/aws/model.rb +0 -57
- data/lib/aws/option_grammar.rb +0 -565
- data/lib/aws/policy.rb +0 -914
- data/lib/aws/resource.rb +0 -381
- data/lib/aws/response.rb +0 -125
- data/lib/aws/response_cache.rb +0 -50
- data/lib/aws/service_interface.rb +0 -60
- data/lib/aws/xml_grammar.rb +0 -925
data/lib/aws/ec2.rb
CHANGED
|
@@ -11,21 +11,8 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
require 'aws/
|
|
15
|
-
require 'aws/
|
|
16
|
-
require 'aws/ec2/client'
|
|
17
|
-
require 'aws/ec2/instance_collection'
|
|
18
|
-
require 'aws/ec2/security_group_collection'
|
|
19
|
-
require 'aws/ec2/elastic_ip_collection'
|
|
20
|
-
require 'aws/ec2/key_pair_collection'
|
|
21
|
-
require 'aws/ec2/tag_collection'
|
|
22
|
-
require 'aws/ec2/region_collection'
|
|
23
|
-
require 'aws/ec2/availability_zone_collection'
|
|
24
|
-
require 'aws/ec2/image_collection'
|
|
25
|
-
require 'aws/ec2/volume_collection'
|
|
26
|
-
require 'aws/ec2/snapshot_collection'
|
|
27
|
-
require 'aws/ec2/reserved_instances_collection'
|
|
28
|
-
require 'aws/ec2/reserved_instances_offering_collection'
|
|
14
|
+
require 'aws/core'
|
|
15
|
+
require 'aws/ec2/config'
|
|
29
16
|
|
|
30
17
|
module AWS
|
|
31
18
|
|
|
@@ -244,7 +231,51 @@ module AWS
|
|
|
244
231
|
#
|
|
245
232
|
class EC2
|
|
246
233
|
|
|
247
|
-
|
|
234
|
+
AWS.register_autoloads(self) do
|
|
235
|
+
autoload :Attachment, 'attachment'
|
|
236
|
+
autoload :AttachmentCollection, 'attachment_collection'
|
|
237
|
+
autoload :AvailabilityZone, 'availability_zone'
|
|
238
|
+
autoload :AvailabilityZoneCollection, 'availability_zone_collection'
|
|
239
|
+
autoload :BlockDeviceMappings, 'block_device_mappings'
|
|
240
|
+
autoload :Client, 'client'
|
|
241
|
+
autoload :Collection, 'collection'
|
|
242
|
+
autoload :ConfigTransform, 'config_transform'
|
|
243
|
+
autoload :ElasticIp, 'elastic_ip'
|
|
244
|
+
autoload :ElasticIpCollection, 'elastic_ip_collection'
|
|
245
|
+
autoload :Errors, 'errors'
|
|
246
|
+
autoload :FilteredCollection, 'filtered_collection'
|
|
247
|
+
autoload :HasPermissions, 'has_permissions'
|
|
248
|
+
autoload :Image, 'image'
|
|
249
|
+
autoload :ImageCollection, 'image_collection'
|
|
250
|
+
autoload :Instance, 'instance'
|
|
251
|
+
autoload :InstanceCollection, 'instance_collection'
|
|
252
|
+
autoload :KeyPair, 'key_pair'
|
|
253
|
+
autoload :KeyPairCollection, 'key_pair_collection'
|
|
254
|
+
autoload :PermissionCollection, 'permission_collection'
|
|
255
|
+
autoload :Region, 'region'
|
|
256
|
+
autoload :RegionCollection, 'region_collection'
|
|
257
|
+
autoload :Request, 'request'
|
|
258
|
+
autoload :ReservedInstances, 'reserved_instances'
|
|
259
|
+
autoload :ReservedInstancesCollection, 'reserved_instances_collection'
|
|
260
|
+
autoload :ReservedInstancesOffering, 'reserved_instances_offering'
|
|
261
|
+
autoload :ReservedInstancesOfferingCollection,
|
|
262
|
+
'reserved_instances_offering_collection'
|
|
263
|
+
autoload :Resource, 'resource'
|
|
264
|
+
autoload :ResourceObject, 'tag_collection'
|
|
265
|
+
autoload :ResourceTagCollection, 'resource_tag_collection'
|
|
266
|
+
autoload :SecurityGroup, 'security_group'
|
|
267
|
+
autoload :SecurityGroupCollection, 'security_group_collection'
|
|
268
|
+
autoload :Snapshot, 'snapshot'
|
|
269
|
+
autoload :SnapshotCollection, 'snapshot_collection'
|
|
270
|
+
autoload :Tag, 'tag'
|
|
271
|
+
autoload :TagCollection, 'tag_collection'
|
|
272
|
+
autoload :TaggedCollection, 'tagged_collection'
|
|
273
|
+
autoload :TaggedItem, 'tagged_item'
|
|
274
|
+
autoload :Volume, 'volume'
|
|
275
|
+
autoload :VolumeCollection, 'volume_collection'
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
include Core::ServiceInterface
|
|
248
279
|
|
|
249
280
|
# @return [InstanceCollection] A collection representing all instances
|
|
250
281
|
def instances
|
data/lib/aws/ec2/attachment.rb
CHANGED
|
@@ -11,11 +11,6 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
require 'aws/model'
|
|
15
|
-
require 'aws/ec2/volume'
|
|
16
|
-
require 'aws/ec2/instance'
|
|
17
|
-
require 'aws/ec2/attachment'
|
|
18
|
-
|
|
19
14
|
module AWS
|
|
20
15
|
class EC2
|
|
21
16
|
|
|
@@ -25,7 +20,7 @@ module AWS
|
|
|
25
20
|
# @see Volume
|
|
26
21
|
class AttachmentCollection
|
|
27
22
|
|
|
28
|
-
include Model
|
|
23
|
+
include Core::Model
|
|
29
24
|
include Enumerable
|
|
30
25
|
|
|
31
26
|
attr_reader :volume
|
data/lib/aws/ec2/client.rb
CHANGED
|
@@ -11,20 +11,17 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
require 'aws/base_client'
|
|
15
|
-
require 'aws/configured_client_methods'
|
|
16
|
-
require 'aws/ec2/request'
|
|
17
|
-
require 'aws/ec2/client/xml'
|
|
18
|
-
require 'aws/ec2/errors'
|
|
19
|
-
require 'aws/inflection'
|
|
20
|
-
|
|
21
14
|
module AWS
|
|
22
15
|
class EC2
|
|
23
16
|
|
|
24
17
|
# @private
|
|
25
|
-
class Client <
|
|
18
|
+
class Client < Core::Client
|
|
19
|
+
|
|
20
|
+
AWS.register_autoloads(self) do
|
|
21
|
+
autoload :XML, 'xml'
|
|
22
|
+
end
|
|
26
23
|
|
|
27
|
-
include ConfiguredClientMethods
|
|
24
|
+
include Core::ConfiguredClientMethods
|
|
28
25
|
|
|
29
26
|
API_VERSION = '2011-02-28'
|
|
30
27
|
|
data/lib/aws/ec2/client/xml.rb
CHANGED
|
@@ -11,17 +11,14 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
require 'aws/base_client'
|
|
15
|
-
require 'aws/configured_xml_grammars'
|
|
16
|
-
|
|
17
14
|
module AWS
|
|
18
15
|
class EC2
|
|
19
|
-
class Client <
|
|
16
|
+
class Client < Core::Client
|
|
20
17
|
module XML
|
|
21
18
|
|
|
22
|
-
include ConfiguredXmlGrammars
|
|
19
|
+
include Core::ConfiguredXmlGrammars
|
|
23
20
|
|
|
24
|
-
BaseError = XmlGrammar.customize do
|
|
21
|
+
BaseError = Core::XmlGrammar.customize do
|
|
25
22
|
element "Errors" do
|
|
26
23
|
ignore
|
|
27
24
|
element("Error") { ignore }
|
data/lib/aws/ec2/collection.rb
CHANGED
|
@@ -11,16 +11,13 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
require 'aws/model'
|
|
15
|
-
require 'aws/ec2/filtered_collection'
|
|
16
|
-
|
|
17
14
|
module AWS
|
|
18
15
|
class EC2
|
|
19
16
|
|
|
20
17
|
# @private
|
|
21
18
|
class Collection
|
|
22
19
|
|
|
23
|
-
include Model
|
|
20
|
+
include Core::Model
|
|
24
21
|
include Enumerable
|
|
25
22
|
include FilteredCollection
|
|
26
23
|
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Copyright 2011 Amazon.com, Inc. or its affiliates. All Rights Reserved.
|
|
2
|
+
#
|
|
3
|
+
# Licensed under the Apache License, Version 2.0 (the "License"). You
|
|
4
|
+
# may not use this file except in compliance with the License. A copy of
|
|
5
|
+
# the License is located at
|
|
6
|
+
#
|
|
7
|
+
# http://aws.amazon.com/apache2.0/
|
|
8
|
+
#
|
|
9
|
+
# or in the "license" file accompanying this file. This file is
|
|
10
|
+
# distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF
|
|
11
|
+
# ANY KIND, either express or implied. See the License for the specific
|
|
12
|
+
# language governing permissions and limitations under the License.
|
|
13
|
+
|
|
14
|
+
AWS::Core::Configuration.module_eval do
|
|
15
|
+
|
|
16
|
+
add_service 'EC2', 'ec2', 'ec2.amazonaws.com'
|
|
17
|
+
|
|
18
|
+
end
|
data/lib/aws/ec2/elastic_ip.rb
CHANGED
|
@@ -11,10 +11,6 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
require 'aws/model'
|
|
15
|
-
require 'aws/ec2/collection'
|
|
16
|
-
require 'aws/ec2/elastic_ip'
|
|
17
|
-
|
|
18
14
|
module AWS
|
|
19
15
|
class EC2
|
|
20
16
|
class ElasticIpCollection < Collection
|
data/lib/aws/ec2/errors.rb
CHANGED
|
@@ -11,9 +11,6 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
require 'aws/lazy_error_classes'
|
|
15
|
-
require 'aws/ec2/client/xml'
|
|
16
|
-
|
|
17
14
|
module AWS
|
|
18
15
|
class EC2
|
|
19
16
|
|
|
@@ -22,7 +19,7 @@ module AWS
|
|
|
22
19
|
|
|
23
20
|
BASE_ERROR_GRAMMAR = Client::XML::BaseError
|
|
24
21
|
|
|
25
|
-
include LazyErrorClasses
|
|
22
|
+
include Core::LazyErrorClasses
|
|
26
23
|
|
|
27
24
|
end
|
|
28
25
|
end
|
data/lib/aws/ec2/image.rb
CHANGED
|
@@ -11,11 +11,6 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
require 'aws/ec2/resource'
|
|
15
|
-
require 'aws/ec2/tagged_item'
|
|
16
|
-
require 'aws/ec2/has_permissions'
|
|
17
|
-
require 'aws/ec2/instance_collection'
|
|
18
|
-
|
|
19
14
|
module AWS
|
|
20
15
|
class EC2
|
|
21
16
|
|
|
@@ -11,12 +11,6 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
require 'aws/model'
|
|
15
|
-
require 'aws/ec2/collection'
|
|
16
|
-
require 'aws/ec2/tagged_collection'
|
|
17
|
-
require 'aws/ec2/image'
|
|
18
|
-
require 'aws/ec2/block_device_mappings'
|
|
19
|
-
|
|
20
14
|
module AWS
|
|
21
15
|
class EC2
|
|
22
16
|
|
data/lib/aws/ec2/instance.rb
CHANGED
|
@@ -11,14 +11,6 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
require 'aws/inflection'
|
|
15
|
-
require 'aws/ec2/tagged_item'
|
|
16
|
-
require 'aws/model'
|
|
17
|
-
require 'aws/cacheable'
|
|
18
|
-
require 'aws/ec2/resource'
|
|
19
|
-
require 'aws/ec2/key_pair'
|
|
20
|
-
require 'aws/ec2/image'
|
|
21
|
-
|
|
22
14
|
module AWS
|
|
23
15
|
class EC2
|
|
24
16
|
|
|
@@ -146,6 +138,12 @@ module AWS
|
|
|
146
138
|
# @attr_reader [String] client_token Idempotency token you
|
|
147
139
|
# provided when you launched the instance.
|
|
148
140
|
#
|
|
141
|
+
# @attr_reader [String,nil] vpc_id Instances launched in a VPC have
|
|
142
|
+
# a vpc_id. Normal EC2 instances return nil.
|
|
143
|
+
#
|
|
144
|
+
# @attr_reader [String,nil] subnet_id Instances launched in a VPC have
|
|
145
|
+
# a subnet_id. Normal EC2 instances return nil.
|
|
146
|
+
#
|
|
149
147
|
class Instance < Resource
|
|
150
148
|
|
|
151
149
|
include TaggedItem
|
|
@@ -234,6 +232,7 @@ module AWS
|
|
|
234
232
|
describe_call_attribute :root_device_name, :static => true
|
|
235
233
|
|
|
236
234
|
describe_call_attribute :block_device_mapping
|
|
235
|
+
|
|
237
236
|
protected :block_device_mapping
|
|
238
237
|
|
|
239
238
|
describe_call_attribute :instance_lifecycle, :to_sym => true
|
|
@@ -256,6 +255,10 @@ module AWS
|
|
|
256
255
|
|
|
257
256
|
describe_call_attribute :key_name, :static => true
|
|
258
257
|
|
|
258
|
+
describe_call_attribute :vpc_id, :static => true
|
|
259
|
+
|
|
260
|
+
describe_call_attribute :subnet_id, :static => true
|
|
261
|
+
|
|
259
262
|
attribute :status do
|
|
260
263
|
translates_output{|state| state.name.tr("-","_").to_sym }
|
|
261
264
|
end
|
|
@@ -315,7 +318,7 @@ module AWS
|
|
|
315
318
|
# them is returned per :describe_instance_attribute call.
|
|
316
319
|
mutable_describe_attributes.values.each do |attr|
|
|
317
320
|
|
|
318
|
-
attr_opt_name = Inflection.class_name(attr.get_as.to_s)
|
|
321
|
+
attr_opt_name = Core::Inflection.class_name(attr.get_as.to_s)
|
|
319
322
|
attr_opt_name = attr_opt_name[0,1].downcase + attr_opt_name[1..-1]
|
|
320
323
|
|
|
321
324
|
provider(:describe_instance_attribute) do |provider|
|
|
@@ -410,6 +413,17 @@ module AWS
|
|
|
410
413
|
end
|
|
411
414
|
end
|
|
412
415
|
|
|
416
|
+
# @return [Boolean] Returns true if the instance has dedicated tenancy.
|
|
417
|
+
# This will be false for all non-VPC instances. Dedicated Tenancy
|
|
418
|
+
# comes at extra cost.
|
|
419
|
+
def dedicated_tenancy?
|
|
420
|
+
if p = placement
|
|
421
|
+
p.tenancy == 'dedicated'
|
|
422
|
+
else
|
|
423
|
+
false
|
|
424
|
+
end
|
|
425
|
+
end
|
|
426
|
+
|
|
413
427
|
# @return [Image] The AMI used to launch the instance.
|
|
414
428
|
def image
|
|
415
429
|
Image.new(image_id, :config => config)
|
|
@@ -11,11 +11,6 @@
|
|
|
11
11
|
# ANY KIND, either express or implied. See the License for the specific
|
|
12
12
|
# language governing permissions and limitations under the License.
|
|
13
13
|
|
|
14
|
-
require 'aws/model'
|
|
15
|
-
require 'aws/ec2/tagged_collection'
|
|
16
|
-
require 'aws/ec2/collection'
|
|
17
|
-
require 'aws/ec2/instance'
|
|
18
|
-
require 'aws/ec2/block_device_mappings'
|
|
19
14
|
require 'base64'
|
|
20
15
|
require 'uuidtools'
|
|
21
16
|
|
|
@@ -72,6 +67,12 @@ module AWS
|
|
|
72
67
|
# }
|
|
73
68
|
# })
|
|
74
69
|
#
|
|
70
|
+
# @example Launching in an Amazon VPC subnet
|
|
71
|
+
#
|
|
72
|
+
# ec2.instances.create(
|
|
73
|
+
# :image_id => "ami-8c1fece5",
|
|
74
|
+
# :subnet => "subnet-abc123ef")
|
|
75
|
+
#
|
|
75
76
|
# @param [Hash] options Options for new instance. +:image_id+ is
|
|
76
77
|
# the only required option.
|
|
77
78
|
#
|
|
@@ -123,10 +124,15 @@ module AWS
|
|
|
123
124
|
# use. Note: Launching public images without a key pair ID
|
|
124
125
|
# will leave them inaccessible.
|
|
125
126
|
#
|
|
126
|
-
# @option options [Array] :security_groups
|
|
127
|
-
#
|
|
128
|
-
#
|
|
129
|
-
# {SecurityGroup}
|
|
127
|
+
# @option options [Array] :security_groups Security groups are used
|
|
128
|
+
# to determine network access rules for the instances.
|
|
129
|
+
# +:security_groups+ can be a single value or an array of values.
|
|
130
|
+
# Values should be group name strings or {SecurityGroup} objects.
|
|
131
|
+
#
|
|
132
|
+
# @option options [Array<String>] :security_group_ids Security groups
|
|
133
|
+
# are used to determine network access rules for the instances.
|
|
134
|
+
# +:security_group_ids+ accepts a single ID or an array of security
|
|
135
|
+
# group IDs.
|
|
130
136
|
#
|
|
131
137
|
# @option options [String] :user_data Arbitrary user data. You
|
|
132
138
|
# do not need to encode this value.
|
|
@@ -163,6 +169,22 @@ module AWS
|
|
|
163
169
|
# Determines whether the instance stops or terminates on
|
|
164
170
|
# instance-initiated shutdown.
|
|
165
171
|
#
|
|
172
|
+
# @option options [String] :subnet (nil) The ID of an EC2 VPC
|
|
173
|
+
# subnet to launch the instance in.
|
|
174
|
+
#
|
|
175
|
+
# @option options [String] :private_ip_address (nil) If you're using VPC,
|
|
176
|
+
# you can optionally use this option to assign the instance a
|
|
177
|
+
# specific available IP address from the subnet (e.g., '10.0.0.25').
|
|
178
|
+
# This option is not valid for instances launched outside a VPC (i.e.
|
|
179
|
+
# those launched without the :subnet option).
|
|
180
|
+
#
|
|
181
|
+
# @option options [Boolean] :dedicated_tenancy (false) Instances
|
|
182
|
+
# with dedicated tenancy will not share physical hardware with
|
|
183
|
+
# instances outside their VPC. *NOTE:* Dedicated tenancy
|
|
184
|
+
# incurs an additional service charge. This option is not
|
|
185
|
+
# valid for instances launched outside a VPC (e.g. those
|
|
186
|
+
# launched without the :subnet option).
|
|
187
|
+
#
|
|
166
188
|
# @return [Instance or Array] If a single instance is being created,
|
|
167
189
|
# this returns an {EC2::Instance} to represent the newly
|
|
168
190
|
# created instance. Otherwise it returns an array of instance
|
|
@@ -200,13 +222,23 @@ module AWS
|
|
|
200
222
|
options[:monitoring_enabled]
|
|
201
223
|
options.delete(:monitoring_enabled)
|
|
202
224
|
|
|
203
|
-
|
|
204
|
-
:availability_zone => options[:availability_zone].to_s
|
|
205
|
-
} if options[:availability_zone]
|
|
206
|
-
options.delete(:availability_zone)
|
|
225
|
+
placement = {}
|
|
207
226
|
|
|
208
|
-
|
|
209
|
-
options[:
|
|
227
|
+
if options[:availability_zone]
|
|
228
|
+
placement[:availability_zone] = options[:availability_zone].to_s
|
|
229
|
+
options.delete(:availability_zone)
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
if options[:dedicated_tenancy]
|
|
233
|
+
placement[:tenancy] = 'dedicated'
|
|
234
|
+
options.delete(:dedicated_tenancy)
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
options[:placement] = placement unless placement.empty?
|
|
238
|
+
|
|
239
|
+
options[:subnet_id] = options.delete(:subnet) if options[:subnet]
|
|
240
|
+
|
|
241
|
+
security_group_opts(options)
|
|
210
242
|
|
|
211
243
|
options[:client_token] = UUIDTools::UUID.timestamp_create.to_s
|
|
212
244
|
|
|
@@ -263,19 +295,50 @@ module AWS
|
|
|
263
295
|
|
|
264
296
|
# @private
|
|
265
297
|
private
|
|
266
|
-
def
|
|
267
|
-
|
|
298
|
+
def security_group_opts options
|
|
299
|
+
|
|
300
|
+
ids = []
|
|
301
|
+
names = []
|
|
302
|
+
|
|
303
|
+
Array(options.delete(:security_group_ids)).each do |g|
|
|
304
|
+
ids << g
|
|
305
|
+
end
|
|
306
|
+
|
|
307
|
+
# this may be security group objects or names
|
|
308
|
+
Array(options.delete(:security_groups)).each do |g|
|
|
268
309
|
case g
|
|
269
|
-
when
|
|
270
|
-
when
|
|
310
|
+
when String then names << g
|
|
311
|
+
when SecurityGroup then ids << g.id
|
|
271
312
|
else
|
|
272
|
-
raise ArgumentError
|
|
273
|
-
|
|
313
|
+
raise ArgumentError, ':security_groups may only contain ' +
|
|
314
|
+
'security group names, ids or objects'
|
|
274
315
|
end
|
|
275
316
|
end
|
|
317
|
+
|
|
318
|
+
return if ids.empty? and names.empty?
|
|
319
|
+
|
|
320
|
+
if options[:subnet_id]
|
|
321
|
+
|
|
322
|
+
# vpc instances only accepts security group ids, so any group
|
|
323
|
+
# names must be converted to ids, which requires a service
|
|
324
|
+
# request
|
|
325
|
+
unless names.empty?
|
|
326
|
+
ec2 = EC2.new(:config => config)
|
|
327
|
+
groups = ec2.security_groups.filter('group-name', names)
|
|
328
|
+
ids += groups.collect{|g| g.id }
|
|
329
|
+
end
|
|
330
|
+
options[:security_group_ids] = ids
|
|
331
|
+
|
|
332
|
+
else
|
|
333
|
+
|
|
334
|
+
# non-vpc instances accept both group names and ids, so
|
|
335
|
+
# we accept whichever
|
|
336
|
+
options[:security_groups] = names unless names.empty?
|
|
337
|
+
options[:security_group_ids] = ids unless ids.empty?
|
|
338
|
+
|
|
339
|
+
end
|
|
276
340
|
end
|
|
277
341
|
|
|
278
342
|
end
|
|
279
|
-
|
|
280
343
|
end
|
|
281
344
|
end
|