aws-sdk 1.3.2 → 1.3.3

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.
Files changed (54) hide show
  1. data/lib/aws/api_config/{IAM-2010-07-15.yml → IAM-2010-05-08.yml} +56 -4
  2. data/lib/aws/api_config/SNS-2010-03-31.yml +90 -81
  3. data/lib/aws/core.rb +26 -11
  4. data/lib/aws/core/client.rb +12 -4
  5. data/lib/aws/core/collection.rb +5 -12
  6. data/lib/aws/core/collection/limitable.rb +10 -3
  7. data/lib/aws/core/collection/simple.rb +1 -0
  8. data/lib/aws/core/configuration.rb +2 -0
  9. data/lib/aws/core/configured_json_client_methods.rb +5 -2
  10. data/lib/aws/core/http/httparty_handler.rb +1 -1
  11. data/lib/aws/core/http/net_http_handler.rb +2 -1
  12. data/lib/aws/core/http/request.rb +27 -0
  13. data/lib/aws/core/json_client.rb +41 -0
  14. data/lib/aws/core/lazy_error_classes.rb +2 -0
  15. data/lib/aws/core/option_grammar.rb +1 -1
  16. data/lib/aws/core/resource.rb +12 -14
  17. data/lib/aws/core/session_signer.rb +0 -5
  18. data/lib/aws/core/xml_grammar.rb +12 -2
  19. data/lib/aws/dynamo_db.rb +4 -1
  20. data/lib/aws/dynamo_db/client.rb +4 -17
  21. data/lib/aws/dynamo_db/item_collection.rb +15 -0
  22. data/lib/aws/ec2/security_group.rb +2 -1
  23. data/lib/aws/ec2/security_group/ip_permission.rb +2 -3
  24. data/lib/aws/elb/listener.rb +2 -2
  25. data/lib/aws/iam.rb +17 -0
  26. data/lib/aws/iam/client.rb +9 -6
  27. data/lib/aws/iam/mfa_device.rb +4 -2
  28. data/lib/aws/iam/mfa_device_collection.rb +14 -3
  29. data/lib/aws/iam/user.rb +10 -0
  30. data/lib/aws/iam/virtual_mfa_device.rb +139 -0
  31. data/lib/aws/iam/virtual_mfa_device_collection.rb +73 -0
  32. data/lib/aws/record/abstract_base.rb +1 -0
  33. data/lib/aws/record/hash_model/attributes.rb +8 -8
  34. data/lib/aws/record/hash_model/finder_methods.rb +10 -15
  35. data/lib/aws/record/model.rb +1 -3
  36. data/lib/aws/record/model/finder_methods.rb +3 -3
  37. data/lib/aws/s3.rb +1 -0
  38. data/lib/aws/s3/bucket.rb +83 -16
  39. data/lib/aws/s3/bucket_lifecycle_configuration.rb +360 -0
  40. data/lib/aws/s3/client.rb +50 -0
  41. data/lib/aws/s3/client/xml.rb +10 -0
  42. data/lib/aws/s3/object_version.rb +5 -0
  43. data/lib/aws/s3/object_version_collection.rb +15 -1
  44. data/lib/aws/s3/request.rb +1 -1
  45. data/lib/aws/s3/s3_object.rb +56 -1
  46. data/lib/aws/sns.rb +1 -0
  47. data/lib/aws/sns/has_delivery_policy.rb +68 -0
  48. data/lib/aws/sns/subscription.rb +62 -14
  49. data/lib/aws/sns/subscription_collection.rb +1 -1
  50. data/lib/aws/sns/topic.rb +22 -4
  51. data/lib/aws/sts.rb +3 -2
  52. data/lib/net/http/connection_pool.rb +1 -1
  53. metadata +27 -25
  54. data/lib/aws/core/collection/batchable.rb +0 -133
@@ -190,7 +190,8 @@ module AWS
190
190
  #
191
191
  # If you use ELB to manage load balancers, then you need to add
192
192
  # ingress permissions to the security groups they route traffic into.
193
- # You can do this by passing the {LoadBalancer} into authorize_ingress:
193
+ # You can do this by passing the {ELB::LoadBalancer} into
194
+ # authorize_ingress:
194
195
  #
195
196
  # load_balancer = AWS::ELB.new.load_balancers['web-load-balancer']
196
197
  #
@@ -92,7 +92,7 @@ module AWS
92
92
 
93
93
  # @return [Boolean] Returns true if the other IpPermission matches
94
94
  # this one.
95
- def == other
95
+ def eql? other
96
96
  other.is_a?(IpPermission) and
97
97
  other.security_group == security_group and
98
98
  other.protocol == protocol and
@@ -101,8 +101,7 @@ module AWS
101
101
  other.groups == groups and
102
102
  other.egress == egress?
103
103
  end
104
-
105
- alias_method :eql?, :==
104
+ alias_method :==, :eql?
106
105
 
107
106
  protected
108
107
  def update_sg method
@@ -170,12 +170,12 @@ module AWS
170
170
  end
171
171
 
172
172
  # @private
173
- def == other
173
+ def eql? other
174
174
  other.is_a?(Listener) and
175
175
  other.load_balancer == load_balancer and
176
176
  other.port == port
177
177
  end
178
- alias_method :eql?, :==
178
+ alias_method :==, :eql?
179
179
 
180
180
  protected
181
181
  def _description
@@ -161,6 +161,8 @@ module AWS
161
161
  autoload :UserGroupCollection, 'user_group_collection'
162
162
  autoload :UserPolicy, 'user_policy'
163
163
  autoload :UserPolicyCollection, 'user_policy_collection'
164
+ autoload :VirtualMfaDeviceCollection, 'virtual_mfa_device_collection'
165
+ autoload :VirtualMfaDevice, 'virtual_mfa_device'
164
166
  end
165
167
 
166
168
  include Core::ServiceInterface
@@ -253,6 +255,21 @@ module AWS
253
255
  ServerCertificateCollection.new(:config => config)
254
256
  end
255
257
 
258
+ # Returns a collection that represents the virtual MFA devices
259
+ # that are not assigned to an IAM user.
260
+ #
261
+ # iam = AWS::IAM.new
262
+ # iam.virtual_mfa_devices.each do |cert|
263
+ # # ...
264
+ # end
265
+ #
266
+ # @return [VirtualMfaDeviceCollection] Returns a collection that
267
+ # represents the virtual MFA devices that are not assigned to an
268
+ # IAM user.
269
+ def virtual_mfa_devices
270
+ VirtualMfaDeviceCollection.new(:config => config)
271
+ end
272
+
256
273
  # Sets the account alias for this AWS account.
257
274
  # @param [String] account_alias
258
275
  # @return [String] Returns the account alias passed.
@@ -28,12 +28,15 @@ module AWS
28
28
  REQUEST_CLASS = IAM::Request
29
29
 
30
30
  # @private
31
- CACHEABLE_REQUESTS = Set[:list_groups,
32
- :list_group_policies,
33
- :list_groups_for_user,
34
- :list_server_certificates,
35
- :get_group,
36
- :get_group_policy]
31
+ CACHEABLE_REQUESTS = Set[
32
+ :list_groups,
33
+ :list_group_policies,
34
+ :list_groups_for_user,
35
+ :list_server_certificates,
36
+ :list_virtual_mfa_devices,
37
+ :get_group,
38
+ :get_group_policy
39
+ ]
37
40
 
38
41
  configure_client
39
42
 
@@ -31,8 +31,10 @@ module AWS
31
31
  # @return [String] Returns the MFA device's serial number
32
32
  attr_reader :serial_number
33
33
 
34
- # Deactivates the MFA device and removes it from association with the
35
- # user for which it was originally enabled.
34
+ # Deactivates the MFA device and removes it from association
35
+ # with the user for which it was originally enabled. You must
36
+ # call {MFADeviceCollection#enable} to enable the device again.
37
+ #
36
38
  # @return [nil]
37
39
  def deactivate
38
40
  client.deactivate_mfa_device({
@@ -63,11 +63,16 @@ module AWS
63
63
  MFADevice.new(user, serial_number)
64
64
  end
65
65
 
66
- # Deletes all of the MFA devices in this collection.
66
+ # Deactivates all of the MFA devices in this collection.
67
+ # Virtual MFA devices in this collection will not be
68
+ # deleted. Instead they will be available in the
69
+ # {IAM#virtual_mfa_devices} collection so that they can either
70
+ # be deleted or enabled for different users.
71
+ #
67
72
  # @return [nil]
68
73
  def clear
69
74
  each do |device|
70
- device.delete
75
+ device.deactivate
71
76
  end
72
77
  nil
73
78
  end
@@ -104,7 +109,13 @@ module AWS
104
109
  def each_item response, &block
105
110
  response.mfa_devices.each do |item|
106
111
 
107
- mfa_device = MFADevice.new(user, item.serial_number)
112
+ if item.serial_number =~ /^arn:/
113
+ mfa_device = VirtualMfaDevice.new_from(:list_mfa_devices, item,
114
+ item.serial_number,
115
+ :config => config)
116
+ else
117
+ mfa_device = MFADevice.new(user, item.serial_number)
118
+ end
108
119
 
109
120
  yield(mfa_device)
110
121
 
@@ -58,6 +58,16 @@ module AWS
58
58
  # In order to delete a user you must first remove it from all of its
59
59
  # groups and delete all of its signing certificates. Once this is done:
60
60
  #
61
+ # @attr [String] user_name
62
+ #
63
+ # @attr [String] path
64
+ #
65
+ # @attr_reader [String] id
66
+ #
67
+ # @attr_reader [DateTime] create_date
68
+ #
69
+ # @attr_reader [String] arn
70
+ #
61
71
  class User < Resource
62
72
 
63
73
  prefix_update_attributes
@@ -0,0 +1,139 @@
1
+ # Copyright 2011-2012 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
+ require 'base64'
15
+
16
+ module AWS
17
+ class IAM
18
+
19
+ # @attr_reader [String] base_32_string_seed The Base32 seed defined as
20
+ # specified in RFC3548. Only accessible on newly created
21
+ # devices. This value is Base64-encoded.
22
+ #
23
+ # @attr_reader [Blob] qr_code_png A QR code PNG image that encodes
24
+ # otpauth://totp/$virtualMFADeviceName@$AccountName? secret=$Base32String
25
+ # where $virtualMFADeviceName is one of the create call arguments,
26
+ # AccountName is the user name if set (accountId otherwise), and
27
+ # Base32String is the seed in Base32 format. Only accessible on newly
28
+ # created devices. This value is Base64-encoded.
29
+ #
30
+ # @attr_reader [DateTime] enable_date When this device was enabled.
31
+ # Returns nil if this device has not been enabled.
32
+ #
33
+ class VirtualMfaDevice < Resource
34
+
35
+ # @private
36
+ def initialize serial_number, options = {}
37
+ @serial_number = serial_number
38
+ super
39
+ end
40
+
41
+ # @return [String] Returns the virtual MFA device serial number (ARN).
42
+ attr_reader :serial_number
43
+
44
+ alias_method :arn, :serial_number
45
+
46
+ attribute :base_32_string_seed, :static => true
47
+
48
+ attribute :qr_code_png, :static => true
49
+
50
+ attribute :enable_date, :static => true
51
+
52
+ attribute :user_details, :as => :user
53
+
54
+ protected :user_details
55
+
56
+ # @return [User,nil] Returns the user this device was enabled
57
+ # for, or nil if this device has not been enabled.
58
+ def user
59
+ if details = user_details
60
+ User.new(details.user_name, :config => config)
61
+ end
62
+ end
63
+
64
+ # Enables the MFA device and associates it with the specified user.
65
+ # When enabled, the MFA device is required for every subsequent login
66
+ # by the user name associated with the device.
67
+ # @param [User,String] user The user (or user name string) you want
68
+ # to enable this device for.
69
+ # @param [String] code1 An authentication code emitted by the device.
70
+ # @param [String] code2 A subsequent authentication code emitted by
71
+ # the device.
72
+ def enable user, code1, code2
73
+
74
+ user_name = user.is_a?(User) ? user.name : user
75
+
76
+ client.enable_mfa_device(
77
+ :user_name => user_name,
78
+ :serial_number => serial_number,
79
+ :authentication_code_1 => format_auth_code(code1),
80
+ :authentication_code_2 => format_auth_code(code2))
81
+
82
+ nil
83
+
84
+ end
85
+
86
+ # @return [Boolean] Returns true if this device has been enabled
87
+ # for a user.
88
+ def enabled?
89
+ !!enable_date
90
+ end
91
+
92
+ # Deactivates the MFA device and removes it from association with
93
+ # the user for which it was originally enabled.
94
+ # @return [nil]
95
+ def deactivate
96
+ client_opts = {}
97
+ client_opts[:user_name] = user.name
98
+ client_opts[:serial_number] = serial_number
99
+ client.deactivate_mfa_device(client_opts)
100
+ nil
101
+ end
102
+ alias_method :disable, :deactivate
103
+
104
+ # Deletes this virtual MFA device.
105
+ # @return [nil]
106
+ def delete
107
+ client.delete_virtual_mfa_device(resource_options)
108
+ nil
109
+ end
110
+
111
+ populates_from :create_virtual_mfa_device do |resp|
112
+ if resp.virtual_mfa_device.serial_number == serial_number
113
+ resp.virtual_mfa_device
114
+ end
115
+ end
116
+
117
+ populates_from :list_virtual_mfa_devices do |resp|
118
+ resp.virtual_mfa_devices.find { |d| d.serial_number == serial_number }
119
+ end
120
+
121
+ protected
122
+ def format_auth_code(code)
123
+ sprintf("%06d", code)
124
+ end
125
+
126
+ protected
127
+ def get_resource attr_name
128
+ client.list_virtual_mfa_devices
129
+ end
130
+
131
+ protected
132
+ def resource_identifiers
133
+ [[:serial_number, serial_number]]
134
+ end
135
+
136
+ end
137
+
138
+ end
139
+ end
@@ -0,0 +1,73 @@
1
+ # Copyright 2011-2012 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
+ module AWS
15
+ class IAM
16
+
17
+ class VirtualMfaDeviceCollection
18
+
19
+ include Collection
20
+
21
+ # Creates a new virtual MFA device for the AWS account.
22
+ # After creating the virtual MFA, you can enable the device to an
23
+ # IAM user.
24
+ #
25
+ # @param [String] name The name of the virtual MFA device. Name and path
26
+ # together uniquely identify a virtual MFA device.
27
+ # @param [Hash] options
28
+ # @option [String] :path The path for the virtual MFA device.
29
+ # @return [VirtualMfaDevice]
30
+ def create name, options = {}
31
+
32
+ client_opts = options.dup
33
+ client_opts[:virtual_mfa_device_name] = name
34
+ resp = client.create_virtual_mfa_device(client_opts)
35
+
36
+ VirtualMfaDevice.new_from(
37
+ :create_virtual_mfa_device,
38
+ resp.virtual_mfa_device,
39
+ resp.virtual_mfa_device.serial_number,
40
+ :config => config)
41
+
42
+ end
43
+
44
+ # Returns a virtual MFA device with the given serial number.
45
+ # @param [String] serial_number The serial number (ARN) of a virtual
46
+ # MFA device.
47
+ # @return [VirtualMfaDevice]
48
+ def [] serial_number
49
+ VirtualMfaDevice.new(serial_number, :config => config)
50
+ end
51
+
52
+ protected
53
+ def request_method; :list_virtual_mfa_devices; end
54
+
55
+ protected
56
+ def next_token_key; :marker; end
57
+
58
+ protected
59
+ def limit_key; :max_items; end
60
+
61
+ protected
62
+ def each_item(response)
63
+ response.virtual_mfa_devices.each do |d|
64
+ device = VirtualMfaDevice.new_from(
65
+ :list_mfa_devices, d, d.serial_number, :config => config)
66
+ yield(device)
67
+ end
68
+ end
69
+
70
+ end
71
+
72
+ end
73
+ end
@@ -202,6 +202,7 @@ module AWS
202
202
  raise 'unable to delete, this object has not been saved yet'
203
203
  end
204
204
  end
205
+ alias_method :destroy, :delete
205
206
 
206
207
  # @return [Boolean] Returns true if this instance object has been deleted.
207
208
  def deleted?
@@ -22,7 +22,7 @@ module AWS
22
22
  #
23
23
  # @example A standard string attribute
24
24
  #
25
- # class Recipe < AWS::Record::Model
25
+ # class Recipe < AWS::Record::HashModel
26
26
  # string_attr :name
27
27
  # end
28
28
  #
@@ -31,7 +31,7 @@ module AWS
31
31
  #
32
32
  # @example A string attribute with +:set+ set to true
33
33
  #
34
- # class Recipe < AWS::Record::Model
34
+ # class Recipe < AWS::Record::HashModel
35
35
  # string_attr :tags, :set => true
36
36
  # end
37
37
  #
@@ -48,7 +48,7 @@ module AWS
48
48
 
49
49
  # Adds an integer attribute to this class.
50
50
  #
51
- # class Recipe < AWS::Record::Model
51
+ # class Recipe < AWS::Record::HashModel
52
52
  # integer_attr :servings
53
53
  # end
54
54
  #
@@ -65,7 +65,7 @@ module AWS
65
65
 
66
66
  # Adds a float attribute to this class.
67
67
  #
68
- # class Listing < AWS::Record::Model
68
+ # class Listing < AWS::Record::HashModel
69
69
  # float_attr :score
70
70
  # end
71
71
  #
@@ -84,7 +84,7 @@ module AWS
84
84
  #
85
85
  # @example
86
86
  #
87
- # class Book < AWS::Record::Model
87
+ # class Book < AWS::Record::HashModel
88
88
  # boolean_attr :read
89
89
  # end
90
90
  #
@@ -112,7 +112,7 @@ module AWS
112
112
  #
113
113
  # @example A standard datetime attribute
114
114
  #
115
- # class Recipe < AWS::Record::Model
115
+ # class Recipe < AWS::Record::HashModel
116
116
  # datetime_attr :invented
117
117
  # end
118
118
  #
@@ -137,7 +137,7 @@ module AWS
137
137
  #
138
138
  # @example A standard date attribute
139
139
  #
140
- # class Person < AWS::Record::Model
140
+ # class Person < AWS::Record::HashModel
141
141
  # date_attr :birthdate
142
142
  # end
143
143
  #
@@ -161,7 +161,7 @@ module AWS
161
161
  #
162
162
  # @example
163
163
  #
164
- # class Recipe < AWS::Record::Model
164
+ # class Recipe < AWS::Record::HashModel
165
165
  # timestamps
166
166
  # end
167
167
  #