aws-sdk 1.0.4 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|