fog-aws 0.4.0 → 0.4.1

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 (40) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -1
  3. data/lib/fog/aws/dns.rb +1 -1
  4. data/lib/fog/aws/iam.rb +57 -20
  5. data/lib/fog/aws/iam/default_policies.json +1574 -0
  6. data/lib/fog/aws/iam/default_policies.rb +15 -0
  7. data/lib/fog/aws/iam/default_policy_versions.json +3372 -0
  8. data/lib/fog/aws/iam/paged_collection.rb +54 -0
  9. data/lib/fog/aws/models/compute/flavors.rb +95 -35
  10. data/lib/fog/aws/models/elb/load_balancer.rb +9 -10
  11. data/lib/fog/aws/models/elb/policies.rb +24 -9
  12. data/lib/fog/aws/models/elb/policy.rb +9 -10
  13. data/lib/fog/aws/models/iam/group.rb +33 -2
  14. data/lib/fog/aws/models/iam/groups.rb +2 -22
  15. data/lib/fog/aws/models/iam/managed_policies.rb +63 -0
  16. data/lib/fog/aws/models/iam/managed_policy.rb +38 -0
  17. data/lib/fog/aws/models/iam/policies.rb +19 -15
  18. data/lib/fog/aws/models/iam/user.rb +34 -2
  19. data/lib/fog/aws/parsers/iam/list_managed_policies.rb +25 -0
  20. data/lib/fog/aws/parsers/iam/policy_version.rb +33 -0
  21. data/lib/fog/aws/region_methods.rb +1 -1
  22. data/lib/fog/aws/requests/compute/allocate_address.rb +21 -19
  23. data/lib/fog/aws/requests/iam/attach_group_policy.rb +26 -0
  24. data/lib/fog/aws/requests/iam/attach_user_policy.rb +30 -4
  25. data/lib/fog/aws/requests/iam/create_access_key.rb +6 -5
  26. data/lib/fog/aws/requests/iam/detach_group_policy.rb +26 -0
  27. data/lib/fog/aws/requests/iam/detach_user_policy.rb +26 -0
  28. data/lib/fog/aws/requests/iam/get_policy.rb +57 -0
  29. data/lib/fog/aws/requests/iam/get_policy_version.rb +59 -0
  30. data/lib/fog/aws/requests/iam/get_user.rb +7 -0
  31. data/lib/fog/aws/requests/iam/list_attached_group_policies.rb +89 -0
  32. data/lib/fog/aws/requests/iam/list_attached_user_policies.rb +89 -0
  33. data/lib/fog/aws/requests/iam/list_policies.rb +47 -2
  34. data/lib/fog/aws/signaturev4.rb +14 -12
  35. data/lib/fog/aws/version.rb +1 -1
  36. data/tests/models/iam/managed_policies_tests.rb +67 -0
  37. data/tests/models/iam/users_tests.rb +20 -0
  38. data/tests/requests/compute/address_tests.rb +33 -20
  39. data/tests/signaturev4_tests.rb +7 -0
  40. metadata +14 -2
@@ -0,0 +1,54 @@
1
+ module Fog
2
+ module AWS
3
+ class IAM
4
+ class PagedCollection < Fog::Collection
5
+ def self.inherited(klass)
6
+ klass.send(:attribute, :truncated, :aliases => 'IsTruncated', :type => :boolean)
7
+ klass.send(:attribute, :marker, :aliases => 'Marker')
8
+
9
+ super
10
+ end
11
+
12
+ def each_entry(*args, &block)
13
+ to_a.each(*args, &block)
14
+ end
15
+
16
+ def each
17
+ if !block_given?
18
+ self
19
+ else
20
+ subset = dup.all
21
+
22
+ subset.each_entry { |f| yield f }
23
+
24
+ while subset.truncated
25
+ subset.
26
+ all(:marker => subset.marker, :limit => 1000).
27
+ each_entry { |f| yield f }
28
+ end
29
+
30
+ self
31
+ end
32
+ end
33
+
34
+ protected
35
+
36
+ def page_params(options={})
37
+ marker = options.fetch(:marker) { options.fetch('Marker') { self.marker } }
38
+ limit = options.fetch(:limit) { options['MaxItems'] }
39
+ params = {}
40
+
41
+ if marker && !marker.empty?
42
+ params.merge!('Marker' => marker)
43
+ end
44
+
45
+ if limit
46
+ params.merge!('MaxItems' => limit)
47
+ end
48
+
49
+ params
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -108,7 +108,7 @@ module Fog
108
108
  :id => 'c3.large',
109
109
  :name => 'C3 Large',
110
110
  :bits => 64,
111
- :cores => 7,
111
+ :cores => 2,
112
112
  :disk => 32,
113
113
  :ram => 3750,
114
114
  :ebs_optimized_available => false,
@@ -118,7 +118,7 @@ module Fog
118
118
  :id => 'c3.xlarge',
119
119
  :name => 'C3 Extra Large',
120
120
  :bits => 64,
121
- :cores => 14,
121
+ :cores => 4,
122
122
  :disk => 80,
123
123
  :ram => 7168,
124
124
  :ebs_optimized_available => true,
@@ -128,7 +128,7 @@ module Fog
128
128
  :id => 'c3.2xlarge',
129
129
  :name => 'C3 Double Extra Large',
130
130
  :bits => 64,
131
- :cores => 28,
131
+ :cores => 8,
132
132
  :disk => 160,
133
133
  :ram => 15360,
134
134
  :ebs_optimized_available => true,
@@ -138,7 +138,7 @@ module Fog
138
138
  :id => 'c3.4xlarge',
139
139
  :name => 'C3 Quadruple Extra Large',
140
140
  :bits => 64,
141
- :cores => 55,
141
+ :cores => 16,
142
142
  :disk => 320,
143
143
  :ram => 30720,
144
144
  :ebs_optimized_available => true,
@@ -148,7 +148,7 @@ module Fog
148
148
  :id => 'c3.8xlarge',
149
149
  :name => 'C3 Eight Extra Large',
150
150
  :bits => 64,
151
- :cores => 108,
151
+ :cores => 16,
152
152
  :disk => 640,
153
153
  :ram => 61440,
154
154
  :ebs_optimized_available => false,
@@ -158,61 +158,71 @@ module Fog
158
158
  :id => 'c4.large',
159
159
  :name => 'C4 Large',
160
160
  :bits => 64,
161
- :cores => 7,
162
- :disk => 32,
161
+ :cores => 2,
162
+ :disk => 0,
163
163
  :ram => 3750,
164
164
  :ebs_optimized_available => true,
165
- :instance_store_volumes => 2
165
+ :instance_store_volumes => 0
166
166
  },
167
167
  {
168
168
  :id => 'c4.xlarge',
169
169
  :name => 'C4 Extra Large',
170
170
  :bits => 64,
171
- :cores => 14,
172
- :disk => 80,
171
+ :cores => 4,
172
+ :disk => 0,
173
173
  :ram => 7168,
174
174
  :ebs_optimized_available => true,
175
- :instance_store_volumes => 2
175
+ :instance_store_volumes => 0
176
176
  },
177
177
  {
178
178
  :id => 'c4.2xlarge',
179
179
  :name => 'C4 Double Extra Large',
180
180
  :bits => 64,
181
- :cores => 28,
182
- :disk => 160,
181
+ :cores => 8,
182
+ :disk => 0,
183
183
  :ram => 15360,
184
184
  :ebs_optimized_available => true,
185
- :instance_store_volumes => 2
185
+ :instance_store_volumes => 0
186
186
  },
187
187
  {
188
188
  :id => 'c4.4xlarge',
189
189
  :name => 'C4 Quadruple Extra Large',
190
190
  :bits => 64,
191
- :cores => 55,
192
- :disk => 320,
191
+ :cores => 16,
192
+ :disk => 0,
193
193
  :ram => 30720,
194
194
  :ebs_optimized_available => true,
195
- :instance_store_volumes => 2
195
+ :instance_store_volumes => 0
196
196
  },
197
197
  {
198
198
  :id => 'c4.8xlarge',
199
199
  :name => 'C4 Eight Extra Large',
200
200
  :bits => 64,
201
- :cores => 122,
202
- :disk => 640,
201
+ :cores => 36,
202
+ :disk => 0,
203
203
  :ram => 61440,
204
- :ebs_optimized_available => false,
205
- :instance_store_volumes => 2
204
+ :ebs_optimized_available => true,
205
+ :instance_store_volumes => 0
206
206
  },
207
207
  {
208
208
  :id => 'g2.2xlarge',
209
209
  :name => 'GPU Double Extra Large',
210
210
  :bits => 64,
211
- :cores => 26,
211
+ :cores => 8,
212
212
  :disk => 60,
213
213
  :ram => 15360,
214
214
  :ebs_optimized_available => true,
215
- :instance_store_volumes => 0
215
+ :instance_store_volumes => 1
216
+ },
217
+ {
218
+ :id => 'g2.8xlarge',
219
+ :name => 'GPU Eight Extra Large',
220
+ :bits => 64,
221
+ :cores => 32,
222
+ :disk => 240,
223
+ :ram => 61440,
224
+ :ebs_optimized_available => true,
225
+ :instance_store_volumes => 2
216
226
  },
217
227
  {
218
228
  :id => 'hs1.8xlarge',
@@ -268,19 +278,19 @@ module Fog
268
278
  :id => 'm3.medium',
269
279
  :name => 'M3 Medium',
270
280
  :bits => 64,
271
- :cores => 3,
281
+ :cores => 1,
272
282
  :disk => 4,
273
283
  :ram => 3840,
274
284
  :ebs_optimized_available => false,
275
- :instance_store_volumes => 0
285
+ :instance_store_volumes => 1
276
286
  },
277
287
  {
278
288
  :id => 'm3.large',
279
289
  :name => 'M3 Large',
280
290
  :bits => 64,
281
- :cores => 6.5,
291
+ :cores => 2,
282
292
  :disk => 32,
283
- :ram => 7168,
293
+ :ram => 7680,
284
294
  :ebs_optimized_available => false,
285
295
  :instance_store_volumes => 1
286
296
  },
@@ -288,7 +298,7 @@ module Fog
288
298
  :id => 'm3.xlarge',
289
299
  :name => 'M3 Extra Large',
290
300
  :bits => 64,
291
- :cores => 13,
301
+ :cores => 4,
292
302
  :disk => 80,
293
303
  :ram => 15360,
294
304
  :ebs_optimized_available => true,
@@ -298,7 +308,7 @@ module Fog
298
308
  :id => 'm3.2xlarge',
299
309
  :name => 'M3 Double Extra Large',
300
310
  :bits => 64,
301
- :cores => 26,
311
+ :cores => 8,
302
312
  :disk => 160,
303
313
  :ram => 30720,
304
314
  :ebs_optimized_available => true,
@@ -348,7 +358,7 @@ module Fog
348
358
  :id => 'i2.xlarge',
349
359
  :name => 'I2 Extra Large',
350
360
  :bits => 64,
351
- :cores => 14,
361
+ :cores => 4,
352
362
  :disk => 800,
353
363
  :ram => 31232,
354
364
  :ebs_optimized_available => true,
@@ -358,7 +368,7 @@ module Fog
358
368
  :id => 'i2.2xlarge',
359
369
  :name => 'I2 Double Extra Large',
360
370
  :bits => 64,
361
- :cores => 27,
371
+ :cores => 8,
362
372
  :disk => 1600,
363
373
  :ram => 62464,
364
374
  :ebs_optimized_available => true,
@@ -368,7 +378,7 @@ module Fog
368
378
  :id => 'i2.4xlarge',
369
379
  :name => 'I2 Quadruple Extra Large',
370
380
  :bits => 64,
371
- :cores => 53,
381
+ :cores => 16,
372
382
  :disk => 3200,
373
383
  :ram => 124928,
374
384
  :ebs_optimized_available => true,
@@ -378,7 +388,7 @@ module Fog
378
388
  :id => 'i2.8xlarge',
379
389
  :name => 'I2 Eight Extra Large',
380
390
  :bits => 64,
381
- :cores => 104,
391
+ :cores => 32,
382
392
  :disk => 6400,
383
393
  :ram => 249856,
384
394
  :ebs_optimized_available => false,
@@ -389,7 +399,7 @@ module Fog
389
399
  :name => "R3 Large",
390
400
  :bits => 64,
391
401
  :cores => 2,
392
- :ram => 15360,
402
+ :ram => 15616,
393
403
  :disk => 32,
394
404
  :ebs_optimized_available => true,
395
405
  :instance_store_volumes => 1
@@ -431,7 +441,7 @@ module Fog
431
441
  :cores => 32,
432
442
  :ram => 249856,
433
443
  :disk => 640,
434
- :ebs_optimized_available => true,
444
+ :ebs_optimized_available => false,
435
445
  :instance_store_volumes => 2
436
446
  },
437
447
  {
@@ -473,6 +483,56 @@ module Fog
473
483
  :disk => 48000,
474
484
  :ebs_optimized_available => true,
475
485
  :instance_store_volumes => 24
486
+ },
487
+ {
488
+ :id => "m4.large",
489
+ :name => "M4 Large",
490
+ :bits => 64,
491
+ :cores => 2,
492
+ :ram => 8192,
493
+ :disk => 0,
494
+ :ebs_optimized_available => true,
495
+ :instance_store_volumes => 0
496
+ },
497
+ {
498
+ :id => "m4.xlarge",
499
+ :name => "M4 Extra Large",
500
+ :bits => 64,
501
+ :cores => 4,
502
+ :ram => 16384,
503
+ :disk => 0,
504
+ :ebs_optimized_available => true,
505
+ :instance_store_volumes => 0
506
+ },
507
+ {
508
+ :id => "m4.2xlarge",
509
+ :name => "M4 Double Extra Large",
510
+ :bits => 64,
511
+ :cores => 8,
512
+ :ram => 31232,
513
+ :disk => 0,
514
+ :ebs_optimized_available => true,
515
+ :instance_store_volumes => 0
516
+ },
517
+ {
518
+ :id => "m4.4xlarge",
519
+ :name => "M4 Quadruple Extra Large",
520
+ :bits => 64,
521
+ :cores => 16,
522
+ :ram => 62464,
523
+ :disk => 0,
524
+ :ebs_optimized_available => true,
525
+ :instance_store_volumes => 0
526
+ },
527
+ {
528
+ :id => "m4.10xlarge",
529
+ :name => "M4 Ten Extra Large",
530
+ :bits => 64,
531
+ :cores => 40,
532
+ :ram => 163840,
533
+ :disk => 0,
534
+ :ebs_optimized_available => true,
535
+ :instance_store_volumes => 0
476
536
  }
477
537
  ]
478
538
 
@@ -143,23 +143,22 @@ module Fog
143
143
  end
144
144
 
145
145
  def listeners
146
- Fog::AWS::ELB::Listeners.new({
147
- :data => attributes['ListenerDescriptions'],
148
- :service => service,
146
+ Fog::AWS::ELB::Listeners.new(
147
+ :data => attributes['ListenerDescriptions'],
148
+ :service => service,
149
149
  :load_balancer => self
150
- })
150
+ )
151
151
  end
152
152
 
153
153
  def policies
154
- Fog::AWS::ELB::Policies.new({
155
- :data => policy_descriptions,
156
- :service => service,
157
- :load_balancer => self
158
- })
154
+ requires :id
155
+
156
+ service.policies(:load_balancer_id => self.identity)
159
157
  end
160
158
 
161
159
  def policy_descriptions
162
160
  requires :id
161
+
163
162
  @policy_descriptions ||= service.describe_load_balancer_policies(id).body["DescribeLoadBalancerPoliciesResult"]["PolicyDescriptions"]
164
163
  end
165
164
 
@@ -202,7 +201,7 @@ module Fog
202
201
  service.remove_tags(id, tag_keys)
203
202
  tags
204
203
  end
205
-
204
+
206
205
 
207
206
  def save
208
207
  requires :id
@@ -1,29 +1,44 @@
1
1
  require 'fog/aws/models/elb/policy'
2
+
2
3
  module Fog
3
4
  module AWS
4
5
  class ELB
5
6
  class Policies < Fog::Collection
7
+
8
+ attribute :load_balancer_id
9
+
6
10
  model Fog::AWS::ELB::Policy
7
11
 
8
- attr_accessor :data, :load_balancer
12
+ def all(options={})
13
+ merge_attributes(options)
14
+
15
+ requires :load_balancer_id
9
16
 
10
- def all
11
- load(munged_data)
17
+ data = service.describe_load_balancer_policies(self.load_balancer_id).
18
+ body["DescribeLoadBalancerPoliciesResult"]["PolicyDescriptions"]
19
+
20
+ load(munge(data))
12
21
  end
13
22
 
14
23
  def get(id)
15
- all.find{|policy| id == policy.id}
24
+ all.find { |policy| id == policy.id }
25
+ end
26
+
27
+ def new(attributes={})
28
+ super(self.attributes.merge(attributes))
16
29
  end
17
30
 
18
31
  private
19
- def munged_data
20
- data.reduce([]){|m,e|
32
+
33
+ def munge(data)
34
+ data.reduce([]) { |m,e|
21
35
  policy_attribute_descriptions = e["PolicyAttributeDescriptions"]
22
36
 
23
37
  policy = {
24
- :id => e["PolicyName"],
25
- :type_name => e["PolicyTypeName"],
26
- :policy_attributes => policy_attributes(policy_attribute_descriptions)
38
+ :id => e["PolicyName"],
39
+ :type_name => e["PolicyTypeName"],
40
+ :policy_attributes => policy_attributes(policy_attribute_descriptions),
41
+ :load_balancer_id => self.load_balancer_id,
27
42
  }
28
43
 
29
44
  case e["PolicyTypeName"]
@@ -8,13 +8,13 @@ module Fog
8
8
  attribute :expiration, :aliases => 'CookieExpirationPeriod'
9
9
  attribute :type_name
10
10
  attribute :policy_attributes
11
+ attribute :load_balancer_id
11
12
 
12
13
  attr_accessor :cookie_stickiness # Either :app or :lb
13
14
 
14
15
  def save
15
- requires :id, :load_balancer
16
- service_method = nil
17
- args = [load_balancer.id, id]
16
+ requires :id, :load_balancer_id
17
+ args = [load_balancer_id, id]
18
18
 
19
19
  if cookie_stickiness
20
20
  case cookie_stickiness
@@ -40,17 +40,16 @@ module Fog
40
40
  end
41
41
 
42
42
  def destroy
43
- requires :id, :load_balancer
44
- service.delete_load_balancer_policy(load_balancer.id, id)
45
- reload
46
- end
43
+ requires :identity, :load_balancer_id
47
44
 
48
- def reload
49
- load_balancer.reload
45
+ service.delete_load_balancer_policy(self.load_balancer_id, self.identity)
46
+ reload
50
47
  end
51
48
 
52
49
  def load_balancer
53
- collection.load_balancer
50
+ requires :load_balancer_id
51
+
52
+ service.load_balancers.new(:identity => self.load_balancer_id)
54
53
  end
55
54
  end
56
55
  end