aws-sdk 1.5.7 → 1.5.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. data/lib/aws.rb +2 -0
  2. data/lib/aws/api_config/EMR-2009-03-31.yml +349 -0
  3. data/lib/aws/auto_scaling.rb +8 -8
  4. data/lib/aws/auto_scaling/group.rb +2 -2
  5. data/lib/aws/auto_scaling/instance.rb +1 -1
  6. data/lib/aws/auto_scaling/launch_configuration.rb +4 -4
  7. data/lib/aws/auto_scaling/launch_configuration_collection.rb +11 -11
  8. data/lib/aws/auto_scaling/scaling_policy.rb +1 -1
  9. data/lib/aws/auto_scaling/scheduled_action.rb +1 -1
  10. data/lib/aws/auto_scaling/tag.rb +3 -3
  11. data/lib/aws/cloud_formation/stack.rb +7 -7
  12. data/lib/aws/cloud_formation/stack_collection.rb +13 -13
  13. data/lib/aws/cloud_formation/stack_event_collection.rb +2 -2
  14. data/lib/aws/cloud_formation/stack_resource.rb +1 -1
  15. data/lib/aws/cloud_formation/stack_resource_summary_collection.rb +10 -18
  16. data/lib/aws/cloud_formation/stack_summary_collection.rb +12 -16
  17. data/lib/aws/core.rb +7 -1
  18. data/lib/aws/core/collection.rb +12 -12
  19. data/lib/aws/core/configuration.rb +4 -0
  20. data/lib/aws/core/credential_providers.rb +23 -23
  21. data/lib/aws/core/inflection.rb +2 -0
  22. data/lib/aws/core/model.rb +6 -6
  23. data/lib/aws/core/policy.rb +102 -102
  24. data/lib/aws/core/resource.rb +81 -80
  25. data/lib/aws/core/response.rb +23 -23
  26. data/lib/aws/core/xml/frame.rb +4 -2
  27. data/lib/aws/dynamo_db/resource.rb +2 -2
  28. data/lib/aws/dynamo_db/table.rb +5 -5
  29. data/lib/aws/ec2/availability_zone.rb +2 -3
  30. data/lib/aws/ec2/export_task.rb +7 -7
  31. data/lib/aws/ec2/image.rb +5 -5
  32. data/lib/aws/ec2/instance.rb +40 -40
  33. data/lib/aws/ec2/instance_collection.rb +5 -2
  34. data/lib/aws/ec2/key_pair.rb +1 -1
  35. data/lib/aws/ec2/network_acl.rb +1 -1
  36. data/lib/aws/ec2/network_interface.rb +2 -2
  37. data/lib/aws/ec2/region.rb +1 -1
  38. data/lib/aws/ec2/resource.rb +1 -1
  39. data/lib/aws/ec2/route_table.rb +1 -1
  40. data/lib/aws/ec2/security_group.rb +4 -4
  41. data/lib/aws/ec2/subnet.rb +1 -1
  42. data/lib/aws/ec2/volume.rb +1 -1
  43. data/lib/aws/ec2/vpn_connection.rb +1 -1
  44. data/lib/aws/ec2/vpn_gateway.rb +2 -2
  45. data/lib/aws/elb/listener_opts.rb +1 -1
  46. data/lib/aws/elb/load_balancer.rb +5 -5
  47. data/lib/aws/elb/load_balancer_collection.rb +17 -9
  48. data/lib/aws/elb/load_balancer_policy.rb +2 -2
  49. data/lib/aws/emr.rb +84 -0
  50. data/lib/aws/emr/client.rb +309 -0
  51. data/lib/aws/emr/config.rb +18 -0
  52. data/lib/aws/emr/errors.rb +22 -0
  53. data/lib/aws/emr/instance_group.rb +138 -0
  54. data/lib/aws/emr/instance_group_collection.rb +82 -0
  55. data/lib/aws/emr/job_flow.rb +296 -0
  56. data/lib/aws/emr/job_flow_collection.rb +185 -0
  57. data/lib/aws/emr/request.rb +23 -0
  58. data/lib/aws/iam/access_key.rb +1 -1
  59. data/lib/aws/iam/account_alias_collection.rb +2 -2
  60. data/lib/aws/iam/client.rb +1 -1
  61. data/lib/aws/iam/group.rb +2 -2
  62. data/lib/aws/iam/policy_collection.rb +1 -1
  63. data/lib/aws/iam/server_certificate.rb +2 -2
  64. data/lib/aws/iam/signing_certificate.rb +1 -1
  65. data/lib/aws/iam/user.rb +2 -2
  66. data/lib/aws/iam/virtual_mfa_device.rb +1 -1
  67. data/lib/aws/s3/client.rb +57 -55
  68. data/lib/aws/s3/config.rb +2 -0
  69. data/lib/aws/s3/request.rb +14 -6
  70. data/lib/aws/simple_email_service/identity.rb +9 -7
  71. data/lib/aws/simple_workflow/domain.rb +1 -1
  72. data/lib/aws/simple_workflow/resource.rb +2 -2
  73. data/lib/aws/simple_workflow/workflow_execution.rb +5 -5
  74. data/lib/aws/sns/subscription_collection.rb +33 -35
  75. data/lib/aws/sns/topic_collection.rb +13 -18
  76. data/lib/aws/sns/topic_subscription_collection.rb +8 -9
  77. data/lib/aws/sqs/queue.rb +4 -4
  78. data/lib/aws/sqs/queue_collection.rb +17 -13
  79. metadata +13 -4
  80. data/lib/aws/cloud_formation/stack_summary.rb +0 -71
@@ -121,6 +121,10 @@ module AWS
121
121
  # @attr_reader [String] s3_endpoint ('s3.amazonaws.com')
122
122
  # The service endpoint for Amazon S3.
123
123
  #
124
+ # @attr_reader [Boolean] s3_force_path_style (false) When
125
+ # +true+, requests will always use path style. This can be useful
126
+ # for testing environments.
127
+ #
124
128
  # @attr_reader [Integer] s3_multipart_max_parts (1000)
125
129
  # The maximum number of parts to split a file into when uploading
126
130
  # in parts to S3.
@@ -26,12 +26,12 @@ module AWS
26
26
 
27
27
  # The list of possible keys in the hash returned by {#credentials}.
28
28
  KEYS = Set[:access_key_id, :secret_access_key, :session_token]
29
-
29
+
30
30
  # @return [Hash] Returns a hash of credentials containg at least
31
- # the +:access_key_id+ and +:secret_access_key+. The hash may
31
+ # the +:access_key_id+ and +:secret_access_key+. The hash may
32
32
  # also contain a +:session_token+.
33
33
  #
34
- # @raise [Errors::MissingCredentialsError] Raised when the
34
+ # @raise [Errors::MissingCredentialsError] Raised when the
35
35
  # +:access_key_id+ or the +:secret_access_key+ can not be found.
36
36
  #
37
37
  def credentials
@@ -91,7 +91,7 @@ module AWS
91
91
  # * Static credentials from AWS.config (e.g. AWS.config.access_key_id,
92
92
  # AWS.config.secret_access_key)
93
93
  #
94
- # * The environment (e.g. ENV['AWS_ACCESS_KEY_ID'] or
94
+ # * The environment (e.g. ENV['AWS_ACCESS_KEY_ID'] or
95
95
  # ENV['AMAZON_ACCESS_KEY_ID'])
96
96
  #
97
97
  # * EC2 metadata service (checks for credentials provided by
@@ -200,7 +200,7 @@ module AWS
200
200
  # @private
201
201
  class FailedRequestError < StandardError; end
202
202
 
203
- # These are the errors we trap when attempting to talk to the
203
+ # These are the errors we trap when attempting to talk to the
204
204
  # instance metadata service. Any of these imply the service
205
205
  # is not present, no responding or some other non-recoverable
206
206
  # error.
@@ -280,7 +280,7 @@ module AWS
280
280
  end
281
281
  end
282
282
 
283
- # Makes an HTTP Get request with the given path. If a non-200
283
+ # Makes an HTTP Get request with the given path. If a non-200
284
284
  # response is received, then a FailedRequestError is raised.
285
285
  # a {FailedRequestError} is raised.
286
286
  # @param [Net::HTTPSession] session
@@ -310,20 +310,20 @@ module AWS
310
310
  # This session provider is currently only used for DynamoDB which
311
311
  # requires session credentials.
312
312
  class SessionProvider
313
-
313
+
314
314
  include Provider
315
-
315
+
316
316
  @create_mutex = Mutex.new
317
317
 
318
318
  class << self
319
319
 
320
- # @param [Hash] long_term_credentials A hash of credentials with
321
- # +:access_key_id+ and +:secret_access_key+ (but not
320
+ # @param [Hash] long_term_credentials A hash of credentials with
321
+ # +:access_key_id+ and +:secret_access_key+ (but not
322
322
  # +:session_token+).
323
323
  def for long_term_credentials
324
324
  @create_mutex.synchronize do
325
325
  @session_providers ||= {}
326
- @session_providers[long_term_credentials[:access_key_id]] =
326
+ @session_providers[long_term_credentials[:access_key_id]] =
327
327
  self.new(long_term_credentials)
328
328
  end
329
329
  end
@@ -333,9 +333,9 @@ module AWS
333
333
  protected :new
334
334
 
335
335
  end
336
-
337
- # @param [Hash] long_term_credentials A hash of credentials with
338
- # +:access_key_id+ and +:secret_access_key+ (but not
336
+
337
+ # @param [Hash] long_term_credentials A hash of credentials with
338
+ # +:access_key_id+ and +:secret_access_key+ (but not
339
339
  # +:session_token+).
340
340
  def initialize long_term_credentials
341
341
  @static = StaticProvider.new(long_term_credentials)
@@ -349,27 +349,27 @@ module AWS
349
349
  # method defined in this class.
350
350
  alias_method :orig_refresh, :refresh
351
351
  protected :orig_refresh
352
-
352
+
353
353
  # (see Provider#refresh)
354
354
  def refresh
355
355
  refresh_session
356
356
  orig_refresh
357
357
  end
358
-
358
+
359
359
  protected
360
-
360
+
361
361
  # (see Provider#get_credentials)
362
362
  def get_credentials
363
363
  session = cached_session
364
364
  if session.nil?
365
- refresh_session
365
+ refresh_session
366
366
  session = cached_session
367
367
  end
368
368
  session.credentials
369
369
  end
370
-
370
+
371
371
  # Replaces the cached STS session with a new one.
372
- # @return [nil]
372
+ # @return [nil]
373
373
  def refresh_session
374
374
  sts = AWS::STS.new(@static.credentials.merge(:use_ssl => true))
375
375
  @session_mutex.synchronize do
@@ -377,7 +377,7 @@ module AWS
377
377
  end
378
378
  nil
379
379
  end
380
-
380
+
381
381
  # @return [nil,STS::Session] Returns nil if a session has not
382
382
  # already been started.
383
383
  def cached_session
@@ -387,14 +387,14 @@ module AWS
387
387
  end
388
388
  local_session
389
389
  end
390
-
390
+
391
391
  end
392
392
 
393
393
  # Returns a set of fake credentials, should only be used for testing.
394
394
  class FakeProvider < StaticProvider
395
395
 
396
396
  # @param [Hash] options
397
- # @option options [Boolean] :with_session_token (false) When +true+ a
397
+ # @option options [Boolean] :with_session_token (false) When +true+ a
398
398
  # fake session token will also be provided.
399
399
  def initialize options = {}
400
400
  options[:access_key_id] ||= fake_access_key_id
@@ -33,6 +33,8 @@ module AWS
33
33
  inflector['ETag'] = 'etag'
34
34
  inflector['s3Bucket'] = 's3_bucket'
35
35
  inflector['s3Key'] = 's3_key'
36
+ inflector['Ec2KeyName'] = 'ec2_key_name'
37
+ inflector['Ec2SubnetId'] = 'ec2_subnet_id'
36
38
 
37
39
  inflector[aws_name]
38
40
 
@@ -16,8 +16,8 @@ module AWS
16
16
 
17
17
  # @private
18
18
  module Model
19
-
20
- # @private
19
+
20
+ # @private
21
21
  def initialize(*args)
22
22
  options = args.last.kind_of?(Hash) ? args.last : {}
23
23
  @config = case
@@ -26,10 +26,10 @@ module AWS
26
26
  else AWS.config
27
27
  end
28
28
  end
29
-
29
+
30
30
  # @return [Configuration] Returns the configuration for this object.
31
31
  attr_reader :config
32
-
32
+
33
33
  # Each class including this module has its own client class.
34
34
  # Generally it is the service namespace suffixed by client:
35
35
  #
@@ -40,13 +40,13 @@ module AWS
40
40
  def client
41
41
  @config.send("#{config_prefix}_client")
42
42
  end
43
-
43
+
44
44
  # @return [String] The short name of the service as used in coniguration.
45
45
  # (e.g. SimpleDB::Client.config_prefix #=> 'simple_db')
46
46
  def config_prefix
47
47
  Inflection.ruby_name(self.class.to_s.split(/::/)[1])
48
48
  end
49
-
49
+
50
50
  # @return [String] A sensible default inspect string.
51
51
  def inspect
52
52
  "<#{self.class}>"
@@ -32,20 +32,20 @@ module AWS
32
32
  # @see #initialize More ways to construct a policy.
33
33
  # @see http://docs.amazonwebservices.com/AmazonS3/latest/dev/AccessPolicyLanguage_UseCases_s3_a.html Example policies (in JSON).
34
34
  class Policy
35
-
35
+
36
36
  # @see Statement
37
37
  # @return [Array] An array of policy statements.
38
38
  attr_reader :statements
39
-
40
- # @return [String] The version of the policy language used in this
39
+
40
+ # @return [String] The version of the policy language used in this
41
41
  # policy object.
42
42
  attr_reader :version
43
-
43
+
44
44
  # @return [String] A unique ID for the policy.
45
45
  attr_reader :id
46
-
46
+
47
47
  class Statement; end
48
-
48
+
49
49
  # Constructs a policy. There are a few different ways to
50
50
  # build a policy:
51
51
  #
@@ -55,7 +55,7 @@ module AWS
55
55
  # { :effect => :allow,
56
56
  # :actions => :all,
57
57
  # :principals => ["abc123"],
58
- # :resources => "mybucket/mykey"
58
+ # :resources => "mybucket/mykey"
59
59
  # }
60
60
  # ])
61
61
  #
@@ -81,7 +81,7 @@ module AWS
81
81
  end.flatten.map do |stmt|
82
82
  self.class::Statement.new(stmt)
83
83
  end
84
-
84
+
85
85
  if opts.has_key?(:id) or opts.has_key?("Id")
86
86
  @id = opts[:id] || opts["Id"]
87
87
  else
@@ -92,10 +92,10 @@ module AWS
92
92
  else
93
93
  @version = "2008-10-17"
94
94
  end
95
-
95
+
96
96
  yield(self) if block_given?
97
97
  end
98
-
98
+
99
99
  # @return [Boolean] Returns true if the two policies are the same.
100
100
  def ==(other)
101
101
  if other.kind_of?(Core::Policy)
@@ -105,7 +105,7 @@ module AWS
105
105
  end
106
106
  end
107
107
  alias_method :eql?, :==
108
-
108
+
109
109
  # Removes the ids from the policy and its statements for the purpose
110
110
  # of comparing two policies for equivilence.
111
111
  # @return [Hash] Returns the policy as a hash with no ids
@@ -118,8 +118,8 @@ module AWS
118
118
  end
119
119
  hash
120
120
  end
121
- protected :hash_without_ids
122
-
121
+ protected :hash_without_ids
122
+
123
123
  # Returns a hash representation of the policy. The following
124
124
  # statements are equivalent:
125
125
  #
@@ -128,18 +128,18 @@ module AWS
128
128
  #
129
129
  # @return [Hash]
130
130
  def to_h
131
- {
131
+ {
132
132
  "Version" => version,
133
133
  "Id" => id,
134
- "Statement" => statements.map { |st| st.to_h }
134
+ "Statement" => statements.map { |st| st.to_h }
135
135
  }
136
136
  end
137
-
137
+
138
138
  # @return [String] a JSON representation of the policy.
139
139
  def to_json
140
140
  to_h.to_json
141
141
  end
142
-
142
+
143
143
  # Constructs a policy from a JSON representation.
144
144
  # @see #initialize
145
145
  # @return [Policy] Returns a Policy object constructed by parsing
@@ -147,7 +147,7 @@ module AWS
147
147
  def self.from_json(json)
148
148
  new(JSON.parse(json))
149
149
  end
150
-
150
+
151
151
  # Convenient syntax for expressing operators in statement
152
152
  # condition blocks. For example, the following:
153
153
  #
@@ -163,33 +163,33 @@ module AWS
163
163
  #
164
164
  # @see ConditionBlock#add
165
165
  class OperatorBuilder
166
-
166
+
167
167
  # @private
168
168
  def initialize(condition_builder, key)
169
169
  @condition_builder = condition_builder
170
170
  @key = key
171
171
  end
172
-
172
+
173
173
  def method_missing(m, *values)
174
174
  @condition_builder.conditions.add(m, @key, *values)
175
175
  @condition_builder
176
176
  end
177
-
177
+
178
178
  end
179
-
179
+
180
180
  # Convenient syntax for adding conditions to a statement.
181
181
  # @see Policy#allow
182
182
  # @see Policy#deny
183
183
  class ConditionBuilder
184
-
184
+
185
185
  # @return [Array] Returns an array of policy conditions.
186
186
  attr_reader :conditions
187
-
187
+
188
188
  # @private
189
189
  def initialize(conditions)
190
190
  @conditions = conditions
191
191
  end
192
-
192
+
193
193
  # Adds a condition for the given key. For example:
194
194
  #
195
195
  # policy.allow(...).where(:current_time).lte(Date.today + 1)
@@ -203,9 +203,9 @@ module AWS
203
203
  OperatorBuilder.new(self, key)
204
204
  end
205
205
  end
206
-
206
+
207
207
  end
208
-
208
+
209
209
  # Convenience method for constructing a new statement with the
210
210
  # "Allow" effect and adding it to the policy. For example:
211
211
  #
@@ -222,7 +222,7 @@ module AWS
222
222
  statements << stmt
223
223
  ConditionBuilder.new(stmt.conditions)
224
224
  end
225
-
225
+
226
226
  # Convenience method for constructing a new statement with the
227
227
  # "Deny" effect and adding it to the policy. For example:
228
228
  #
@@ -240,7 +240,7 @@ module AWS
240
240
  statements << stmt
241
241
  ConditionBuilder.new(stmt.conditions)
242
242
  end
243
-
243
+
244
244
  # Represents the condition block of a policy. In JSON,
245
245
  # condition blocks look like this:
246
246
  #
@@ -294,13 +294,13 @@ module AWS
294
294
  # s3:max-keys may be any of: 10
295
295
  #
296
296
  class ConditionBlock
297
-
297
+
298
298
  # @private
299
299
  def initialize(conditions = {})
300
300
  # filter makes a copy
301
301
  @conditions = filter_conditions(conditions)
302
302
  end
303
-
303
+
304
304
  # Adds a condition to the block. This method defines a
305
305
  # convenient set of abbreviations for operators based on the
306
306
  # type of value passed in. For example:
@@ -374,12 +374,12 @@ module AWS
374
374
  raise "duplicate #{operator} conditions for #{key}" if op[key]
375
375
  op[translate_key(key)] = converted_values
376
376
  end
377
-
377
+
378
378
  # @private
379
379
  def to_h
380
380
  @conditions
381
381
  end
382
-
382
+
383
383
  # Filters the conditions described in the block, returning a
384
384
  # new ConditionBlock that contains only the matching
385
385
  # conditions. Each argument is matched against either the
@@ -420,19 +420,19 @@ module AWS
420
420
  end
421
421
  self.class.new(filtered)
422
422
  end
423
-
423
+
424
424
  # @return [Array] Returns an array of operators used in this block.
425
425
  def operators
426
426
  @conditions.keys
427
427
  end
428
-
428
+
429
429
  # @return [Array] Returns an array of unique keys used in the block.
430
430
  def keys
431
431
  @conditions.values.map do |keys|
432
432
  keys.keys if keys
433
433
  end.compact.flatten.uniq
434
434
  end
435
-
435
+
436
436
  # Returns all values used in the block. Note that the
437
437
  # values may not all be from the same condition; for example:
438
438
  #
@@ -446,7 +446,7 @@ module AWS
446
446
  keys.values
447
447
  end.compact.flatten
448
448
  end
449
-
449
+
450
450
  # @private
451
451
  protected
452
452
  def match_triple(filter, type, op, key, value)
@@ -467,7 +467,7 @@ module AWS
467
467
  end
468
468
  [match, type]
469
469
  end
470
-
470
+
471
471
  # @private
472
472
  protected
473
473
  def match_operator(filter, op, value)
@@ -476,13 +476,13 @@ module AWS
476
476
  value = Date.today if op =~ /^Date/
477
477
  translate_operator(filter, value) == op
478
478
  end
479
-
479
+
480
480
  # @private
481
481
  protected
482
482
  def match_key(filter, key, value = nil)
483
483
  translate_key(filter) == key
484
484
  end
485
-
485
+
486
486
  # @private
487
487
  protected
488
488
  def filter_conditions(conditions = @conditions)
@@ -495,7 +495,7 @@ module AWS
495
495
  m
496
496
  end
497
497
  end
498
-
498
+
499
499
  # @private
500
500
  protected
501
501
  def translate_key(key)
@@ -516,13 +516,13 @@ module AWS
516
516
  key
517
517
  end
518
518
  end
519
-
519
+
520
520
  # @private
521
521
  MODIFIERS = {
522
522
  /_ignoring_case$/ => "IgnoreCase",
523
523
  /_equals$/ => "Equals"
524
524
  }
525
-
525
+
526
526
  # @private
527
527
  protected
528
528
  def valid_operator?(operator)
@@ -531,113 +531,113 @@ module AWS
531
531
  rescue ArgumentError => e
532
532
  false
533
533
  end
534
-
534
+
535
535
  # @private
536
536
  protected
537
537
  def translate_operator(operator, example_value)
538
538
  return operator if operator.kind_of?(String)
539
-
539
+
540
540
  original_operator = operator
541
541
  (operator, opts) = strip_modifiers(operator)
542
-
542
+
543
543
  raise ArgumentError.new("unrecognized operator #{original_operator}") unless
544
544
  respond_to?("translate_#{operator}", true)
545
545
  send("translate_#{operator}", example_value, opts)
546
546
  end
547
-
547
+
548
548
  # @private
549
549
  protected
550
550
  def translate_is(example, opts)
551
551
  return "Bool" if type_notation(example) == "Bool"
552
552
  base_translate(example, "Equals", opts[:ignore_case])
553
553
  end
554
-
554
+
555
555
  # @private
556
556
  protected
557
557
  def translate_not(example, opts)
558
558
  base_translate(example, "NotEquals", opts[:ignore_case])
559
559
  end
560
-
560
+
561
561
  # @private
562
562
  protected
563
563
  def translate_like(example, opts)
564
564
  base_translate(example, "Like")
565
565
  end
566
-
566
+
567
567
  # @private
568
568
  protected
569
569
  def translate_not_like(example, opts)
570
570
  base_translate(example, "NotLike")
571
571
  end
572
-
572
+
573
573
  # @private
574
574
  protected
575
575
  def translate_less_than(example, opts)
576
576
  base_translate(example, "LessThan", opts[:equals])
577
577
  end
578
578
  alias_method :translate_lt, :translate_less_than
579
-
579
+
580
580
  # @private
581
581
  protected
582
582
  def translate_lte(example, opts)
583
583
  translate_less_than(example, { :equals => "Equals" })
584
584
  end
585
-
585
+
586
586
  # @private
587
587
  protected
588
588
  def translate_greater_than(example, opts)
589
589
  base_translate(example, "GreaterThan", opts[:equals])
590
590
  end
591
591
  alias_method :translate_gt, :translate_greater_than
592
-
592
+
593
593
  # @private
594
594
  protected
595
595
  def translate_gte(example, opts)
596
596
  translate_greater_than(example, { :equals => "Equals" })
597
597
  end
598
-
598
+
599
599
  # @private
600
600
  protected
601
601
  def translate_is_ip_address(example, opts)
602
602
  "IpAddress"
603
603
  end
604
-
604
+
605
605
  # @private
606
606
  protected
607
607
  def translate_not_ip_address(example, opts)
608
608
  "NotIpAddress"
609
609
  end
610
-
610
+
611
611
  # @private
612
612
  protected
613
613
  def translate_is_arn(example, opts)
614
614
  "ArnEquals"
615
615
  end
616
-
616
+
617
617
  # @private
618
618
  protected
619
619
  def translate_not_arn(example, opts)
620
620
  "ArnNotEquals"
621
621
  end
622
-
622
+
623
623
  # @private
624
624
  protected
625
625
  def translate_is_arn_like(example, opts)
626
626
  "ArnLike"
627
627
  end
628
-
628
+
629
629
  # @private
630
630
  protected
631
631
  def translate_not_arn_like(example, opts)
632
632
  "ArnNotLike"
633
633
  end
634
-
634
+
635
635
  # @private
636
636
  protected
637
637
  def base_translate(example, base_operator, *modifiers)
638
638
  "#{type_notation(example)}#{base_operator}#{modifiers.join}"
639
639
  end
640
-
640
+
641
641
  # @private
642
642
  protected
643
643
  def type_notation(example)
@@ -652,7 +652,7 @@ module AWS
652
652
  "Bool"
653
653
  end
654
654
  end
655
-
655
+
656
656
  # @private
657
657
  protected
658
658
  def convert_value(value)
@@ -665,7 +665,7 @@ module AWS
665
665
  value
666
666
  end
667
667
  end
668
-
668
+
669
669
  # @private
670
670
  protected
671
671
  def strip_modifiers(operator)
@@ -680,40 +680,40 @@ module AWS
680
680
  end
681
681
  [operator, opts]
682
682
  end
683
-
683
+
684
684
  end
685
-
685
+
686
686
  # Represents a statement in a policy.
687
687
  #
688
688
  # @see Policy#allow
689
689
  # @see Policy#deny
690
690
  class Statement
691
-
691
+
692
692
  # @return [String] Returns the statement id
693
693
  attr_accessor :sid
694
-
694
+
695
695
  # @return [String] Returns the statement effect, either "Allow" or
696
696
  # "Deny"
697
697
  attr_accessor :effect
698
-
698
+
699
699
  # @return [Array] Returns an array of principals.
700
700
  attr_accessor :principals
701
-
701
+
702
702
  # @return [Array] Returns an array of statement actions included
703
703
  # by this policy statement.
704
704
  attr_accessor :actions
705
-
705
+
706
706
  # @return [Array] Returns an array of actions excluded by this
707
707
  # policy statement.
708
708
  attr_accessor :excluded_actions
709
-
709
+
710
710
  # @return [Array] Returns an array of resources affected by this
711
711
  # policy statement.
712
712
  attr_accessor :resources
713
-
713
+
714
714
  # @return [Array] Returns an array of conditions for this policy.
715
715
  attr_accessor :conditions
716
-
716
+
717
717
  # Constructs a new statement.
718
718
  #
719
719
  # @option opts [String] :sid The statement ID. This is optional; if
@@ -748,12 +748,12 @@ module AWS
748
748
  def initialize(opts = {})
749
749
  self.sid = UUIDTools::UUID.timestamp_create.to_s.tr('-','')
750
750
  self.conditions = ConditionBlock.new
751
-
751
+
752
752
  parse_options(opts)
753
-
753
+
754
754
  yield(self) if block_given?
755
755
  end
756
-
756
+
757
757
  # Convenience method to add to the list of actions affected
758
758
  # by this statement.
759
759
  def include_actions(*actions)
@@ -761,7 +761,7 @@ module AWS
761
761
  self.actions.push(*actions)
762
762
  end
763
763
  alias_method :include_action, :include_actions
764
-
764
+
765
765
  # Convenience method to add to the list of actions
766
766
  # explicitly not affected by this statement.
767
767
  def exclude_actions(*actions)
@@ -769,7 +769,7 @@ module AWS
769
769
  self.excluded_actions.push(*actions)
770
770
  end
771
771
  alias_method :exclude_action, :exclude_actions
772
-
772
+
773
773
  # @private
774
774
  def to_h
775
775
  stmt = {
@@ -788,7 +788,7 @@ module AWS
788
788
  end
789
789
  stmt
790
790
  end
791
-
791
+
792
792
  protected
793
793
  def parse_options(options)
794
794
  options.each do |name, value|
@@ -798,47 +798,47 @@ module AWS
798
798
  respond_to?("parse_#{name}_option", true)
799
799
  end
800
800
  end
801
-
801
+
802
802
  protected
803
803
  def parse_effect_option(value)
804
804
  self.effect = value
805
805
  end
806
-
806
+
807
807
  protected
808
808
  def parse_sid_option(value)
809
809
  self.sid = value
810
810
  end
811
-
811
+
812
812
  protected
813
813
  def parse_action_option(value)
814
814
  coerce_array_option(:actions, value)
815
815
  end
816
-
816
+
817
817
  protected
818
818
  def parse_not_action_option(value)
819
819
  coerce_array_option(:excluded_actions, value)
820
820
  end
821
821
  alias_method :parse_excluded_action_option, :parse_not_action_option
822
-
822
+
823
823
  protected
824
824
  def parse_principal_option(value)
825
825
  if value and value.kind_of?(Hash)
826
826
  value = value["AWS"] || []
827
827
  end
828
-
828
+
829
829
  coerce_array_option(:principals, value)
830
830
  end
831
-
831
+
832
832
  protected
833
833
  def parse_resource_option(value)
834
834
  coerce_array_option(:resources, value)
835
835
  end
836
-
836
+
837
837
  protected
838
838
  def parse_condition_option(value)
839
839
  self.conditions = ConditionBlock.new(value)
840
840
  end
841
-
841
+
842
842
  protected
843
843
  def coerce_array_option(attr, value)
844
844
  if value.kind_of?(Array)
@@ -847,7 +847,7 @@ module AWS
847
847
  send("#{attr}=", [value])
848
848
  end
849
849
  end
850
-
850
+
851
851
  protected
852
852
  def principals_hash
853
853
  return nil unless principals
@@ -856,29 +856,29 @@ module AWS
856
856
  principal == :any ? "*" : principal
857
857
  end }
858
858
  end
859
-
859
+
860
860
  protected
861
861
  def translate_action(action)
862
862
  case action
863
863
  when String then action
864
864
  when :any then '*'
865
865
  when Symbol
866
-
866
+
867
867
  if self.class == Core::Policy::Statement
868
868
  msg = 'symbolized action names are only accepted by service ' +
869
869
  'specific policies (e.g. AWS::S3::Policy)'
870
870
  raise ArgumentError, msg
871
871
  end
872
-
872
+
873
873
  unless self.class::ACTION_MAPPING.has_key?(action)
874
874
  raise ArgumentError, "unrecognized action: #{action}"
875
875
  end
876
-
876
+
877
877
  self.class::ACTION_MAPPING[action]
878
-
878
+
879
879
  end
880
880
  end
881
-
881
+
882
882
  protected
883
883
  def translated_actions
884
884
  return nil unless actions
@@ -886,31 +886,31 @@ module AWS
886
886
  translate_action(action)
887
887
  end
888
888
  end
889
-
889
+
890
890
  protected
891
891
  def translated_excluded_actions
892
892
  return nil unless excluded_actions
893
893
  excluded_actions.map { |a| translate_action(a) }
894
894
  end
895
-
895
+
896
896
  protected
897
897
  def resource_arns
898
898
  return nil unless resources
899
- resources.map do |resource|
899
+ resources.map do |resource|
900
900
  case resource
901
901
  when :any then "*"
902
902
  else resource_arn(resource)
903
903
  end
904
904
  end
905
905
  end
906
-
906
+
907
907
  protected
908
908
  def resource_arn resource
909
909
  resource.to_s
910
910
  end
911
-
911
+
912
912
  end
913
-
913
+
914
914
  end
915
915
  end
916
916
  end