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.
- checksums.yaml +4 -4
- data/Gemfile +4 -1
- data/lib/fog/aws/dns.rb +1 -1
- data/lib/fog/aws/iam.rb +57 -20
- data/lib/fog/aws/iam/default_policies.json +1574 -0
- data/lib/fog/aws/iam/default_policies.rb +15 -0
- data/lib/fog/aws/iam/default_policy_versions.json +3372 -0
- data/lib/fog/aws/iam/paged_collection.rb +54 -0
- data/lib/fog/aws/models/compute/flavors.rb +95 -35
- data/lib/fog/aws/models/elb/load_balancer.rb +9 -10
- data/lib/fog/aws/models/elb/policies.rb +24 -9
- data/lib/fog/aws/models/elb/policy.rb +9 -10
- data/lib/fog/aws/models/iam/group.rb +33 -2
- data/lib/fog/aws/models/iam/groups.rb +2 -22
- data/lib/fog/aws/models/iam/managed_policies.rb +63 -0
- data/lib/fog/aws/models/iam/managed_policy.rb +38 -0
- data/lib/fog/aws/models/iam/policies.rb +19 -15
- data/lib/fog/aws/models/iam/user.rb +34 -2
- data/lib/fog/aws/parsers/iam/list_managed_policies.rb +25 -0
- data/lib/fog/aws/parsers/iam/policy_version.rb +33 -0
- data/lib/fog/aws/region_methods.rb +1 -1
- data/lib/fog/aws/requests/compute/allocate_address.rb +21 -19
- data/lib/fog/aws/requests/iam/attach_group_policy.rb +26 -0
- data/lib/fog/aws/requests/iam/attach_user_policy.rb +30 -4
- data/lib/fog/aws/requests/iam/create_access_key.rb +6 -5
- data/lib/fog/aws/requests/iam/detach_group_policy.rb +26 -0
- data/lib/fog/aws/requests/iam/detach_user_policy.rb +26 -0
- data/lib/fog/aws/requests/iam/get_policy.rb +57 -0
- data/lib/fog/aws/requests/iam/get_policy_version.rb +59 -0
- data/lib/fog/aws/requests/iam/get_user.rb +7 -0
- data/lib/fog/aws/requests/iam/list_attached_group_policies.rb +89 -0
- data/lib/fog/aws/requests/iam/list_attached_user_policies.rb +89 -0
- data/lib/fog/aws/requests/iam/list_policies.rb +47 -2
- data/lib/fog/aws/signaturev4.rb +14 -12
- data/lib/fog/aws/version.rb +1 -1
- data/tests/models/iam/managed_policies_tests.rb +67 -0
- data/tests/models/iam/users_tests.rb +20 -0
- data/tests/requests/compute/address_tests.rb +33 -20
- data/tests/signaturev4_tests.rb +7 -0
- 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 =>
|
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 =>
|
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 =>
|
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 =>
|
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 =>
|
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 =>
|
162
|
-
:disk =>
|
161
|
+
:cores => 2,
|
162
|
+
:disk => 0,
|
163
163
|
:ram => 3750,
|
164
164
|
:ebs_optimized_available => true,
|
165
|
-
:instance_store_volumes =>
|
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 =>
|
172
|
-
:disk =>
|
171
|
+
:cores => 4,
|
172
|
+
:disk => 0,
|
173
173
|
:ram => 7168,
|
174
174
|
:ebs_optimized_available => true,
|
175
|
-
:instance_store_volumes =>
|
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 =>
|
182
|
-
:disk =>
|
181
|
+
:cores => 8,
|
182
|
+
:disk => 0,
|
183
183
|
:ram => 15360,
|
184
184
|
:ebs_optimized_available => true,
|
185
|
-
:instance_store_volumes =>
|
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 =>
|
192
|
-
:disk =>
|
191
|
+
:cores => 16,
|
192
|
+
:disk => 0,
|
193
193
|
:ram => 30720,
|
194
194
|
:ebs_optimized_available => true,
|
195
|
-
:instance_store_volumes =>
|
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 =>
|
202
|
-
:disk =>
|
201
|
+
:cores => 36,
|
202
|
+
:disk => 0,
|
203
203
|
:ram => 61440,
|
204
|
-
:ebs_optimized_available =>
|
205
|
-
:instance_store_volumes =>
|
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 =>
|
211
|
+
:cores => 8,
|
212
212
|
:disk => 60,
|
213
213
|
:ram => 15360,
|
214
214
|
:ebs_optimized_available => true,
|
215
|
-
:instance_store_volumes =>
|
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 =>
|
281
|
+
:cores => 1,
|
272
282
|
:disk => 4,
|
273
283
|
:ram => 3840,
|
274
284
|
:ebs_optimized_available => false,
|
275
|
-
:instance_store_volumes =>
|
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 =>
|
291
|
+
:cores => 2,
|
282
292
|
:disk => 32,
|
283
|
-
:ram =>
|
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 =>
|
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 =>
|
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 =>
|
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 =>
|
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 =>
|
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 =>
|
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 =>
|
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 =>
|
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
|
148
|
-
: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
|
-
|
155
|
-
|
156
|
-
|
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
|
-
|
12
|
+
def all(options={})
|
13
|
+
merge_attributes(options)
|
14
|
+
|
15
|
+
requires :load_balancer_id
|
9
16
|
|
10
|
-
|
11
|
-
|
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
|
-
|
20
|
-
|
32
|
+
|
33
|
+
def munge(data)
|
34
|
+
data.reduce([]) { |m,e|
|
21
35
|
policy_attribute_descriptions = e["PolicyAttributeDescriptions"]
|
22
36
|
|
23
37
|
policy = {
|
24
|
-
:id
|
25
|
-
:type_name
|
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, :
|
16
|
-
|
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 :
|
44
|
-
service.delete_load_balancer_policy(load_balancer.id, id)
|
45
|
-
reload
|
46
|
-
end
|
43
|
+
requires :identity, :load_balancer_id
|
47
44
|
|
48
|
-
|
49
|
-
|
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
|
-
|
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
|