aws-sdk 1.0.4 → 1.1.0
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/lib/aws.rb +10 -9
- data/lib/aws/api_config/IAM-2010-07-15.yml +632 -0
- data/lib/aws/base_client.rb +1 -1
- data/lib/aws/cacheable.rb +34 -46
- data/lib/aws/client_logging.rb +19 -14
- data/lib/aws/collections.rb +230 -0
- data/lib/aws/common.rb +4 -0
- data/lib/aws/configuration.rb +7 -0
- data/lib/aws/ec2.rb +2 -2
- data/lib/aws/ec2/attachment.rb +64 -71
- data/lib/aws/ec2/attachment_collection.rb +11 -9
- data/lib/aws/ec2/availability_zone.rb +40 -31
- data/lib/aws/ec2/availability_zone_collection.rb +2 -3
- data/lib/aws/ec2/elastic_ip.rb +25 -22
- data/lib/aws/ec2/elastic_ip_collection.rb +5 -2
- data/lib/aws/ec2/image.rb +113 -129
- data/lib/aws/ec2/image_collection.rb +5 -6
- data/lib/aws/ec2/instance.rb +290 -233
- data/lib/aws/ec2/instance_collection.rb +72 -67
- data/lib/aws/ec2/key_pair.rb +16 -18
- data/lib/aws/ec2/region.rb +25 -17
- data/lib/aws/ec2/reserved_instances.rb +7 -1
- data/lib/aws/ec2/reserved_instances_collection.rb +3 -3
- data/lib/aws/ec2/reserved_instances_offering.rb +7 -1
- data/lib/aws/ec2/reserved_instances_offering_collection.rb +3 -3
- data/lib/aws/ec2/resource.rb +41 -222
- data/lib/aws/ec2/security_group.rb +22 -18
- data/lib/aws/ec2/security_group_collection.rb +2 -5
- data/lib/aws/ec2/snapshot.rb +44 -35
- data/lib/aws/ec2/snapshot_collection.rb +43 -1
- data/lib/aws/ec2/tag.rb +14 -18
- data/lib/aws/ec2/volume.rb +59 -72
- data/lib/aws/ec2/volume_collection.rb +16 -12
- data/lib/aws/errors.rb +14 -5
- data/lib/aws/http/httparty_handler.rb +2 -2
- data/lib/aws/iam.rb +306 -0
- data/lib/aws/iam/access_key.rb +183 -0
- data/lib/aws/iam/access_key_collection.rb +131 -0
- data/lib/aws/iam/account_alias_collection.rb +81 -0
- data/lib/aws/iam/client.rb +44 -0
- data/lib/aws/iam/client/xml.rb +38 -0
- data/lib/aws/iam/collection.rb +87 -0
- data/lib/aws/iam/errors.rb +29 -0
- data/lib/aws/iam/group.rb +117 -0
- data/lib/aws/iam/group_collection.rb +135 -0
- data/lib/aws/iam/group_policy_collection.rb +49 -0
- data/lib/aws/iam/group_user_collection.rb +94 -0
- data/lib/aws/iam/login_profile.rb +97 -0
- data/lib/aws/iam/mfa_device.rb +52 -0
- data/lib/aws/iam/mfa_device_collection.rb +119 -0
- data/lib/aws/iam/policy.rb +48 -0
- data/lib/aws/iam/policy_collection.rb +191 -0
- data/lib/aws/iam/request.rb +27 -0
- data/lib/aws/iam/resource.rb +74 -0
- data/lib/aws/iam/server_certificate.rb +143 -0
- data/lib/aws/iam/server_certificate_collection.rb +174 -0
- data/lib/aws/iam/signing_certificate.rb +171 -0
- data/lib/aws/iam/signing_certificate_collection.rb +134 -0
- data/lib/aws/iam/user.rb +196 -0
- data/lib/aws/iam/user_collection.rb +136 -0
- data/lib/aws/iam/user_group_collection.rb +101 -0
- data/lib/aws/iam/user_policy.rb +90 -0
- data/lib/aws/iam/user_policy_collection.rb +48 -0
- data/lib/aws/resource.rb +381 -0
- data/lib/aws/resource_cache.rb +1 -2
- data/lib/aws/response.rb +5 -1
- data/lib/aws/response_cache.rb +1 -1
- data/lib/aws/s3/client.rb +3 -1
- data/lib/aws/s3/presigned_post.rb +1 -1
- data/lib/aws/simple_db.rb +1 -1
- metadata +113 -50
@@ -20,6 +20,14 @@ module AWS
|
|
20
20
|
class EC2
|
21
21
|
|
22
22
|
# Represents a security group in EC2.
|
23
|
+
#
|
24
|
+
# @attr_reader [String] description The short informal description
|
25
|
+
# given when the group was created.
|
26
|
+
#
|
27
|
+
# @attr_reader [String] name The name of the security group.
|
28
|
+
#
|
29
|
+
# @attr_reader [String] owner_id The security group owner's id.
|
30
|
+
#
|
23
31
|
class SecurityGroup < Resource
|
24
32
|
|
25
33
|
include TaggedItem
|
@@ -37,28 +45,24 @@ module AWS
|
|
37
45
|
|
38
46
|
alias_method :group_id, :id
|
39
47
|
|
40
|
-
|
41
|
-
def exists?
|
42
|
-
client.describe_security_groups(:filters =>
|
43
|
-
[{ :name => "group-id",
|
44
|
-
:values => [id] }]).
|
45
|
-
security_group_index.key?(id)
|
46
|
-
end
|
48
|
+
attribute :name, :as => :group_name, :static => true
|
47
49
|
|
48
|
-
|
49
|
-
def name; end
|
50
|
-
describe_call_attribute :group_name, :getter => :name, :memoize => true
|
50
|
+
attribute :owner_id, :static => true
|
51
51
|
|
52
|
-
|
53
|
-
def owner_id; end
|
54
|
-
describe_call_attribute :owner_id, :memoize => true
|
52
|
+
attribute :description, :as => :group_description, :static => true
|
55
53
|
|
56
|
-
|
57
|
-
# group was created.
|
58
|
-
def description; end
|
59
|
-
describe_call_attribute :group_description, :getter => :description, :memoize => true
|
54
|
+
attribute :ip_permissions_list, :as => :ip_permissions
|
60
55
|
|
61
|
-
|
56
|
+
populates_from(:describe_security_groups) do |resp|
|
57
|
+
resp.security_group_index[id]
|
58
|
+
end
|
59
|
+
|
60
|
+
# @return [Boolean] True if the security group exists.
|
61
|
+
def exists?
|
62
|
+
client.describe_security_groups(:filters => [
|
63
|
+
{ :name => "group-id", :values => [id] }
|
64
|
+
]).security_group_index.key?(id)
|
65
|
+
end
|
62
66
|
|
63
67
|
# @return [SecurityGroup::IpPermissionCollection] Returns a
|
64
68
|
# collection of {IpPermission} objects that represents all of
|
@@ -110,11 +110,8 @@ module AWS
|
|
110
110
|
response = filtered_request(:describe_security_groups)
|
111
111
|
response.security_group_info.each do |info|
|
112
112
|
|
113
|
-
group = SecurityGroup.
|
114
|
-
:
|
115
|
-
:description => info.group_description,
|
116
|
-
:owner_id => info.owner_id,
|
117
|
-
:config => config)
|
113
|
+
group = SecurityGroup.new_from(:describe_security_groups, info,
|
114
|
+
info.group_id, :config => config)
|
118
115
|
|
119
116
|
yield(group)
|
120
117
|
|
data/lib/aws/ec2/snapshot.rb
CHANGED
@@ -55,22 +55,51 @@ module AWS
|
|
55
55
|
# snapshot provided at snapshot initiation.
|
56
56
|
class Snapshot < Resource
|
57
57
|
|
58
|
-
include HasPermissions
|
59
58
|
include TaggedItem
|
60
|
-
|
61
|
-
|
62
|
-
# The snapshot ID
|
63
|
-
attr_reader :id
|
59
|
+
include HasPermissions
|
64
60
|
|
65
61
|
# @private
|
66
|
-
def initialize
|
62
|
+
def initialize id, options = {}
|
67
63
|
@id = id
|
68
|
-
super(
|
64
|
+
super(options)
|
65
|
+
end
|
66
|
+
|
67
|
+
# @return [String] Returns the snapshot's ID.
|
68
|
+
attr_reader :id
|
69
|
+
|
70
|
+
attribute :status, :to_sym => true
|
71
|
+
|
72
|
+
attribute :start_time, :static => true
|
73
|
+
|
74
|
+
attribute :progress do
|
75
|
+
translates_output {|value| value.to_i if value }
|
76
|
+
end
|
77
|
+
|
78
|
+
attribute :owner_id, :static => true
|
79
|
+
|
80
|
+
attribute :volume_size, :static => true
|
81
|
+
|
82
|
+
attribute :volume_id, :static => true
|
83
|
+
|
84
|
+
attribute :owner_alias, :static => true
|
85
|
+
|
86
|
+
attribute :description, :static => true
|
87
|
+
|
88
|
+
alias_method :create_volume_permissions, :permissions
|
89
|
+
|
90
|
+
populates_from(:create_snapshot) do |resp|
|
91
|
+
resp if resp.snapshot_id == id
|
92
|
+
end
|
93
|
+
|
94
|
+
populates_from(:describe_snapshots) do |resp|
|
95
|
+
resp.snapshot_index[id]
|
69
96
|
end
|
70
97
|
|
71
98
|
# Deletes the snapshot.
|
99
|
+
# @return [nil]
|
72
100
|
def delete
|
73
101
|
client.delete_snapshot(:snapshot_id => id)
|
102
|
+
nil
|
74
103
|
end
|
75
104
|
|
76
105
|
# Creates a volume from the snapshot.
|
@@ -80,16 +109,18 @@ module AWS
|
|
80
109
|
# {EC2#availability_zones} for how to get a list of
|
81
110
|
# availability zones.
|
82
111
|
#
|
83
|
-
# @param [Hash]
|
112
|
+
# @param [Hash] options Additional options for creating the volume
|
84
113
|
#
|
85
|
-
# @option
|
114
|
+
# @option options [Integer] size The desired size (in gigabytes)
|
86
115
|
# for the volume.
|
87
116
|
#
|
88
117
|
# @return [Volume] The newly created volume
|
89
|
-
def create_volume
|
90
|
-
VolumeCollection.new(:config => config)
|
91
|
-
|
92
|
-
|
118
|
+
def create_volume availability_zone, options = {}
|
119
|
+
volumes = VolumeCollection.new(:config => config)
|
120
|
+
volumes.create(options.merge(
|
121
|
+
:availability_zone => availability_zone,
|
122
|
+
:snapshot => self
|
123
|
+
))
|
93
124
|
end
|
94
125
|
|
95
126
|
# @return [Boolean] True if the snapshot exists.
|
@@ -100,38 +131,16 @@ module AWS
|
|
100
131
|
!resp.snapshot_set.empty?
|
101
132
|
end
|
102
133
|
|
103
|
-
describe_call_attribute :volume_id
|
104
|
-
|
105
134
|
# @return [Volume] The volume this snapshot was created from.
|
106
135
|
def volume
|
107
136
|
Volume.new(volume_id, :config => config) if volume_id
|
108
137
|
end
|
109
138
|
|
110
|
-
describe_call_attribute :status, :to_sym => true
|
111
|
-
describe_call_attribute :start_time
|
112
|
-
describe_call_attribute :progress do
|
113
|
-
translate_output { |value| value.to_i if value }
|
114
|
-
end
|
115
|
-
describe_call_attribute :owner_id
|
116
|
-
describe_call_attribute :volume_size
|
117
|
-
describe_call_attribute :owner_alias
|
118
|
-
describe_call_attribute :description
|
119
|
-
|
120
139
|
# @private
|
121
140
|
def __permissions_attribute__
|
122
141
|
"createVolumePermission"
|
123
142
|
end
|
124
143
|
|
125
|
-
populate_from :create_snapshot do |resp|
|
126
|
-
attributes_from_response_object(resp) if
|
127
|
-
resp.snapshot_id == id
|
128
|
-
end
|
129
|
-
|
130
|
-
protected
|
131
|
-
def find_in_response(resp)
|
132
|
-
resp.snapshot_index[id]
|
133
|
-
end
|
134
|
-
|
135
144
|
end
|
136
145
|
|
137
146
|
end
|
@@ -39,10 +39,21 @@ module AWS
|
|
39
39
|
|
40
40
|
include TaggedCollection
|
41
41
|
|
42
|
+
# @private
|
43
|
+
def initialize(options = {})
|
44
|
+
@owners = options[:owners] || []
|
45
|
+
@restorable_by = options[:restorable_by] || []
|
46
|
+
super(options)
|
47
|
+
end
|
48
|
+
|
42
49
|
# @yield [Instance] Yields each volume in the collection.
|
43
50
|
# @return [nil]
|
44
51
|
def each(&block)
|
45
|
-
|
52
|
+
opts = {}
|
53
|
+
opts[:owner_ids] = @owners.map { |id| id.to_s } unless @owners.empty?
|
54
|
+
opts[:restorable_by_user_ids] = @restorable_by.map { |id| id.to_s } unless
|
55
|
+
@restorable_by.empty?
|
56
|
+
resp = filtered_request(:describe_snapshots, opts)
|
46
57
|
resp.snapshot_set.each do |v|
|
47
58
|
snapshot = Snapshot.new(v.snapshot_id, :config => config)
|
48
59
|
yield(snapshot)
|
@@ -50,6 +61,31 @@ module AWS
|
|
50
61
|
nil
|
51
62
|
end
|
52
63
|
|
64
|
+
# @return [SnapshotCollection] A new collection that only
|
65
|
+
# includes snapshots owned by one or more of the specified AWS
|
66
|
+
# accounts. The IDs +:amazon+ and +:self+ can be used to
|
67
|
+
# include snapshots owned by Amazon or AMIs owned by you,
|
68
|
+
# respectively.
|
69
|
+
#
|
70
|
+
# @param [Array of Strings] owners The AWS account IDs by
|
71
|
+
# which the new collection should be filtered.
|
72
|
+
def with_owner(*owners)
|
73
|
+
collection_with(:owners => @owners + owners)
|
74
|
+
end
|
75
|
+
|
76
|
+
# @return [ImageCollection] A new collection that only includes
|
77
|
+
# images for which the specified user ID has explicit launch
|
78
|
+
# permissions. The user ID can be an AWS account ID, +:self+
|
79
|
+
# to return AMIs for which the sender of the request has
|
80
|
+
# explicit launch permissions, or +:all+ to return AMIs with
|
81
|
+
# public launch permissions.
|
82
|
+
#
|
83
|
+
# @param [Array of Strings] users The AWS account IDs by which
|
84
|
+
# the new collection should be filtered.
|
85
|
+
def restorable_by(*users)
|
86
|
+
collection_with(:restorable_by => @restorable_by + users)
|
87
|
+
end
|
88
|
+
|
53
89
|
# Creates a snapshot of an Amazon EBS volume and stores it in
|
54
90
|
# Amazon S3. You can use snapshots for backups, to make
|
55
91
|
# identical copies of instance devices, and to save data
|
@@ -84,6 +120,12 @@ module AWS
|
|
84
120
|
Snapshot
|
85
121
|
end
|
86
122
|
|
123
|
+
# @private
|
124
|
+
protected
|
125
|
+
def preserved_options
|
126
|
+
super.merge(:owners => @owners, :restorable_by => @restorable_by)
|
127
|
+
end
|
128
|
+
|
87
129
|
end
|
88
130
|
|
89
131
|
end
|
data/lib/aws/ec2/tag.rb
CHANGED
@@ -18,6 +18,7 @@ module AWS
|
|
18
18
|
class EC2
|
19
19
|
|
20
20
|
# Represents an EC2 tag.
|
21
|
+
# @attr [String] value The tag value.
|
21
22
|
class Tag < Resource
|
22
23
|
|
23
24
|
# @param [String] key The name of the tag
|
@@ -37,9 +38,11 @@ module AWS
|
|
37
38
|
|
38
39
|
alias_method :name, :key
|
39
40
|
|
40
|
-
|
41
|
-
|
42
|
-
|
41
|
+
attribute :value
|
42
|
+
|
43
|
+
populates_from(:describe_tags) do |resp|
|
44
|
+
resp.tag_index[response_index_key]
|
45
|
+
end
|
43
46
|
|
44
47
|
# Deletes this tag.
|
45
48
|
# @return [nil]
|
@@ -52,12 +55,12 @@ module AWS
|
|
52
55
|
|
53
56
|
# @private
|
54
57
|
def inspect
|
55
|
-
"<#{local_cache_key}>"
|
58
|
+
"<#{self.class}:#{local_cache_key}>"
|
56
59
|
end
|
57
60
|
|
58
61
|
# @private
|
59
62
|
def local_cache_key
|
60
|
-
|
63
|
+
response_index_key
|
61
64
|
end
|
62
65
|
|
63
66
|
private
|
@@ -68,19 +71,12 @@ module AWS
|
|
68
71
|
end
|
69
72
|
|
70
73
|
protected
|
71
|
-
def
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
client.describe_tags(:filters =>
|
78
|
-
[{ :name => "key",
|
79
|
-
:values => [key] },
|
80
|
-
{ :name => "resource-type",
|
81
|
-
:values => [resource.tagging_resource_type] },
|
82
|
-
{ :name => "resource-id",
|
83
|
-
:values => [resource.send(:__resource_id__)] }])
|
74
|
+
def get_resource attr
|
75
|
+
client.describe_tags(:filters => [
|
76
|
+
{ :name => "key", :values => [key] },
|
77
|
+
{ :name => "resource-type", :values => [resource.tagging_resource_type] },
|
78
|
+
{ :name => "resource-id", :values => [resource.send(:__resource_id__)] }
|
79
|
+
])
|
84
80
|
end
|
85
81
|
|
86
82
|
end
|
data/lib/aws/ec2/volume.rb
CHANGED
@@ -48,8 +48,8 @@ module AWS
|
|
48
48
|
# @attr_reader [Integer] size The size of the volume in
|
49
49
|
# gigabytes.
|
50
50
|
#
|
51
|
-
# @attr_reader [
|
52
|
-
# Zone in which the volume was created.
|
51
|
+
# @attr_reader [String] availability_zone_name Name of the
|
52
|
+
# Availability Zone in which the volume was created.
|
53
53
|
#
|
54
54
|
# @attr_reader [Time] create_time The time at which the volume
|
55
55
|
# was created.
|
@@ -57,28 +57,54 @@ module AWS
|
|
57
57
|
|
58
58
|
include TaggedItem
|
59
59
|
|
60
|
-
attr_reader :id
|
61
|
-
|
62
60
|
# @private
|
63
61
|
def initialize(id, opts = {})
|
64
62
|
@id = id
|
65
63
|
super(opts)
|
66
64
|
end
|
67
65
|
|
66
|
+
# @return [String] Returns the volume ID.
|
67
|
+
attr_reader :id
|
68
|
+
|
69
|
+
attribute :status, :to_sym => true
|
70
|
+
|
71
|
+
alias_method :state, :status
|
72
|
+
|
73
|
+
attribute :snapshot_id, :static => true
|
74
|
+
|
75
|
+
attribute :size, :static => true do
|
76
|
+
translates_output {|value| value.to_i if value }
|
77
|
+
end
|
78
|
+
|
79
|
+
attribute :availability_zone_name, :as => :availability_zone,
|
80
|
+
:static => true
|
81
|
+
|
82
|
+
attribute :create_time, :static => true
|
83
|
+
|
84
|
+
attribute :attachment_set
|
85
|
+
|
86
|
+
populates_from(:create_volume) do |resp|
|
87
|
+
resp if resp.volume_id == id
|
88
|
+
end
|
89
|
+
|
90
|
+
populates_from(:describe_volumes) do |resp|
|
91
|
+
resp.volume_index[id]
|
92
|
+
end
|
93
|
+
|
68
94
|
# Deletes the volume.
|
69
95
|
def delete
|
70
96
|
client.delete_volume(:volume_id => id)
|
97
|
+
nil
|
71
98
|
end
|
72
99
|
|
73
100
|
# @return [Snapshot] A new snapshot created from the volume.
|
74
101
|
#
|
75
102
|
# @param [String] description An optional description of the
|
76
103
|
# snapshot. May be up to 255 characters in length.
|
77
|
-
def create_snapshot
|
104
|
+
def create_snapshot description = nil
|
78
105
|
opts = { :volume => self }
|
79
106
|
opts[:description] = description if description
|
80
|
-
SnapshotCollection.new(:config => config).
|
81
|
-
create(opts)
|
107
|
+
SnapshotCollection.new(:config => config).create(opts)
|
82
108
|
end
|
83
109
|
|
84
110
|
# Attaches the volume to an instance.
|
@@ -93,95 +119,56 @@ module AWS
|
|
93
119
|
# @return [Attachment] An object representing the attachment,
|
94
120
|
# which you can use to query the attachment status.
|
95
121
|
def attach_to(instance, device)
|
96
|
-
resp = client.attach_volume(
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
122
|
+
resp = client.attach_volume(
|
123
|
+
:volume_id => id,
|
124
|
+
:instance_id => instance.id,
|
125
|
+
:device => device
|
126
|
+
)
|
127
|
+
instance = Instance.new(resp.instance_id, :config => config)
|
128
|
+
Attachment.new(self, instance, resp.device, :config => config)
|
103
129
|
end
|
104
130
|
alias_method :attach, :attach_to
|
105
131
|
|
106
132
|
# Detaches the volume from an instance.
|
107
133
|
#
|
108
134
|
# @param [Instance] instance The instance to detach from.
|
109
|
-
#
|
110
135
|
# @param [String] device The device name.
|
111
|
-
#
|
112
|
-
# @
|
113
|
-
#
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
# normally). This option can lead to data loss or a
|
119
|
-
# corrupted file system. Use this option only as a last
|
120
|
-
# resort to detach a volume from a failed instance. The
|
121
|
-
# instance will not have an opportunity to flush file system
|
122
|
-
# caches or file system metadata. If you use this option,
|
123
|
-
# you must perform file system check and repair procedures.
|
124
|
-
def detach_from(instance, device, opts = {})
|
125
|
-
a = Attachment.new(self,
|
126
|
-
Instance.new(instance.id),
|
127
|
-
device,
|
128
|
-
:config => config)
|
129
|
-
a.delete
|
136
|
+
# @param [Hash] options
|
137
|
+
# @option (see Attachment#delete)
|
138
|
+
# @return [Attachment] Returns the no-longer valid attachment.
|
139
|
+
def detach_from(instance, device, options = {})
|
140
|
+
instance = Instance.new(instance.id, :config => config),
|
141
|
+
a = Attachment.new(self, instance, device, :config => config)
|
142
|
+
a.delete(options)
|
130
143
|
a
|
131
144
|
end
|
132
145
|
|
133
|
-
# @return [AttachmentCollection] The collection of attachments
|
134
|
-
# that involve this volume.
|
135
|
-
def attachments
|
136
|
-
AttachmentCollection.new(self, :config => config)
|
137
|
-
end
|
138
|
-
|
139
146
|
# @return [Boolean] True if the volume exists.
|
140
147
|
def exists?
|
141
|
-
resp =
|
142
|
-
|
143
|
-
|
144
|
-
|
148
|
+
resp = client.describe_volumes(:filters => [
|
149
|
+
{ :name => 'volume-id', :values => [id] }
|
150
|
+
])
|
151
|
+
resp.volume_index.key?(id)
|
145
152
|
end
|
146
153
|
|
147
|
-
describe_call_attribute :status, :to_sym => true
|
148
|
-
alias_method :state, :status
|
149
|
-
|
150
|
-
describe_call_attribute :snapshot_id
|
151
|
-
|
152
154
|
# @return [Snapshot] Snapshot from which the volume was created
|
153
155
|
# (may be nil).
|
154
|
-
def snapshot
|
155
|
-
|
156
|
-
Snapshot.new(snapshot_id, :config => config)
|
157
|
-
end
|
158
|
-
end
|
159
|
-
|
160
|
-
describe_call_attribute :size do
|
161
|
-
translate_output { |value| value.to_i if value }
|
156
|
+
def snapshot
|
157
|
+
snapshot_id ? Snapshot.new(snapshot_id, :config => config) : nil
|
162
158
|
end
|
163
159
|
|
164
|
-
|
165
|
-
|
160
|
+
# @return [AvailabilityZone] Returns the Availability
|
161
|
+
# Zone in which the volume was created.
|
166
162
|
def availability_zone
|
167
163
|
if name = availability_zone_name
|
168
164
|
AvailabilityZone.new(name, :config => config)
|
169
165
|
end
|
170
166
|
end
|
171
167
|
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
populate_from :create_volume do |resp|
|
177
|
-
attributes_from_response_object(resp) if
|
178
|
-
resp.volume_id == id
|
179
|
-
end
|
180
|
-
|
181
|
-
# @private
|
182
|
-
protected
|
183
|
-
def find_in_response(resp)
|
184
|
-
resp.volume_index[id]
|
168
|
+
# @return [AttachmentCollection] The collection of attachments
|
169
|
+
# that involve this volume.
|
170
|
+
def attachments
|
171
|
+
AttachmentCollection.new(self, :config => config)
|
185
172
|
end
|
186
173
|
|
187
174
|
end
|