fog-aws 1.2.1 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +16 -1
- data/lib/fog/aws/compute.rb +6 -0
- data/lib/fog/aws/models/compute/flavors.rb +60 -0
- data/lib/fog/aws/models/compute/volume.rb +41 -22
- data/lib/fog/aws/models/compute/vpc.rb +34 -0
- data/lib/fog/aws/models/rds/security_group.rb +4 -2
- data/lib/fog/aws/models/storage/file.rb +1 -1
- data/lib/fog/aws/parsers/compute/describe_volumes_modifications.rb +30 -0
- data/lib/fog/aws/parsers/compute/describe_vpc_classic_link.rb +3 -1
- data/lib/fog/aws/parsers/compute/describe_vpc_classic_link_dns_support.rb +26 -0
- data/lib/fog/aws/parsers/compute/modify_volume.rb +26 -0
- data/lib/fog/aws/rds.rb +1 -1
- data/lib/fog/aws/requests/compute/attach_classic_link_vpc.rb +3 -3
- data/lib/fog/aws/requests/compute/create_vpc.rb +10 -9
- data/lib/fog/aws/requests/compute/describe_volumes_modifications.rb +93 -0
- data/lib/fog/aws/requests/compute/describe_vpc_classic_link.rb +2 -1
- data/lib/fog/aws/requests/compute/describe_vpc_classic_link_dns_support.rb +53 -0
- data/lib/fog/aws/requests/compute/detach_classic_link_vpc.rb +1 -3
- data/lib/fog/aws/requests/compute/disable_vpc_classic_link_dns_support.rb +45 -0
- data/lib/fog/aws/requests/compute/enable_vpc_classic_link_dns_support.rb +45 -0
- data/lib/fog/aws/requests/compute/modify_volume.rb +88 -0
- data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +10 -5
- data/lib/fog/aws/requests/rds/create_db_subnet_group.rb +3 -4
- data/lib/fog/aws/requests/rds/delete_db_subnet_group.rb +2 -0
- data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +9 -4
- data/lib/fog/aws/version.rb +1 -1
- data/tests/models/compute/volume_tests.rb +16 -1
- data/tests/models/compute/vpc_tests.rb +23 -1
- data/tests/models/rds/security_group_tests.rb +30 -6
- data/tests/requests/compute/volume_tests.rb +42 -2
- data/tests/requests/compute/vpc_tests.rb +41 -5
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 507acde666f266cc70e6346a9274bcf1e1bff19c
|
4
|
+
data.tar.gz: 105bb905004f27b5336ff4f17feb006164feef21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6403c1fc64c5cc9396f4671118897c6be37aa49e88b09f8e96cdbe9f5ef68f18e087ec52a03755d53f04c4991f4616f6064e386bff3cdaa0d5dd084e7537d43e
|
7
|
+
data.tar.gz: d5e45bdab2ee7dca720cc549ba6dd0202f1d9d60d98c3b2e178e36fb6910c72ac069a6197c2cf6167b8741067bc2d41280ace84430f0c2c59afe3580d1cb7f15
|
data/CHANGELOG.md
CHANGED
@@ -2,7 +2,22 @@
|
|
2
2
|
|
3
3
|
## [Unreleased](https://github.com/fog/fog-aws/tree/HEAD)
|
4
4
|
|
5
|
-
[Full Changelog](https://github.com/fog/fog-aws/compare/v1.2.
|
5
|
+
[Full Changelog](https://github.com/fog/fog-aws/compare/v1.2.1...HEAD)
|
6
|
+
|
7
|
+
**Closed issues:**
|
8
|
+
|
9
|
+
- Do we need to list all files before creating one? [\#357](https://github.com/fog/fog-aws/issues/357)
|
10
|
+
|
11
|
+
**Merged pull requests:**
|
12
|
+
|
13
|
+
- Authorize vpc to rds sg [\#356](https://github.com/fog/fog-aws/pull/356) ([ehowe](https://github.com/ehowe))
|
14
|
+
- classic link enhancements [\#355](https://github.com/fog/fog-aws/pull/355) ([ehowe](https://github.com/ehowe))
|
15
|
+
- Add new i3 class instances. [\#353](https://github.com/fog/fog-aws/pull/353) ([rogersd](https://github.com/rogersd))
|
16
|
+
- Add check for self.etag before running gsub [\#351](https://github.com/fog/fog-aws/pull/351) ([dmcorboy](https://github.com/dmcorboy))
|
17
|
+
- Modify volume [\#350](https://github.com/fog/fog-aws/pull/350) ([ehowe](https://github.com/ehowe))
|
18
|
+
|
19
|
+
## [v1.2.1](https://github.com/fog/fog-aws/tree/v1.2.1) (2017-02-27)
|
20
|
+
[Full Changelog](https://github.com/fog/fog-aws/compare/v1.2.0...v1.2.1)
|
6
21
|
|
7
22
|
**Closed issues:**
|
8
23
|
|
data/lib/fog/aws/compute.rb
CHANGED
@@ -120,18 +120,22 @@ module Fog
|
|
120
120
|
request :describe_subnets
|
121
121
|
request :describe_tags
|
122
122
|
request :describe_volumes
|
123
|
+
request :describe_volumes_modifications
|
123
124
|
request :describe_volume_status
|
124
125
|
request :describe_vpcs
|
125
126
|
request :describe_vpc_attribute
|
126
127
|
request :describe_vpc_classic_link
|
128
|
+
request :describe_vpc_classic_link_dns_support
|
127
129
|
request :detach_network_interface
|
128
130
|
request :detach_internet_gateway
|
129
131
|
request :detach_volume
|
130
132
|
request :detach_classic_link_vpc
|
131
133
|
request :disable_vpc_classic_link
|
134
|
+
request :disable_vpc_classic_link_dns_support
|
132
135
|
request :disassociate_address
|
133
136
|
request :disassociate_route_table
|
134
137
|
request :enable_vpc_classic_link
|
138
|
+
request :enable_vpc_classic_link_dns_support
|
135
139
|
request :get_console_output
|
136
140
|
request :get_password_data
|
137
141
|
request :import_key_pair
|
@@ -140,6 +144,7 @@ module Fog
|
|
140
144
|
request :modify_network_interface_attribute
|
141
145
|
request :modify_snapshot_attribute
|
142
146
|
request :modify_subnet_attribute
|
147
|
+
request :modify_volume
|
143
148
|
request :modify_volume_attribute
|
144
149
|
request :modify_vpc_attribute
|
145
150
|
request :move_address_to_vpc
|
@@ -290,6 +295,7 @@ module Fog
|
|
290
295
|
}
|
291
296
|
],
|
292
297
|
:spot_requests => {},
|
298
|
+
:volume_modifications => {}
|
293
299
|
}
|
294
300
|
end
|
295
301
|
end
|
@@ -424,6 +424,66 @@ module Fog
|
|
424
424
|
:ebs_optimized_available => false,
|
425
425
|
:instance_store_volumes => 8
|
426
426
|
},
|
427
|
+
{
|
428
|
+
:id => 'i3.large',
|
429
|
+
:name => 'I3 Large',
|
430
|
+
:bits => 64,
|
431
|
+
:cores => 2,
|
432
|
+
:disk => 475,
|
433
|
+
:ram => 15616,
|
434
|
+
:ebs_optimized_available => true,
|
435
|
+
:instance_store_volumes => 1
|
436
|
+
},
|
437
|
+
{
|
438
|
+
:id => 'i3.xlarge',
|
439
|
+
:name => 'I3 Extra Large',
|
440
|
+
:bits => 64,
|
441
|
+
:cores => 4,
|
442
|
+
:disk => 950,
|
443
|
+
:ram => 31232,
|
444
|
+
:ebs_optimized_available => true,
|
445
|
+
:instance_store_volumes => 1
|
446
|
+
},
|
447
|
+
{
|
448
|
+
:id => 'i3.2xlarge',
|
449
|
+
:name => 'I3 Double Extra Large',
|
450
|
+
:bits => 64,
|
451
|
+
:cores => 8,
|
452
|
+
:disk => 1900,
|
453
|
+
:ram => 62464,
|
454
|
+
:ebs_optimized_available => true,
|
455
|
+
:instance_store_volumes => 1
|
456
|
+
},
|
457
|
+
{
|
458
|
+
:id => 'i3.4xlarge',
|
459
|
+
:name => 'I3 Quadruple Extra Large',
|
460
|
+
:bits => 64,
|
461
|
+
:cores => 16,
|
462
|
+
:disk => 3800,
|
463
|
+
:ram => 124928,
|
464
|
+
:ebs_optimized_available => true,
|
465
|
+
:instance_store_volumes => 2
|
466
|
+
},
|
467
|
+
{
|
468
|
+
:id => 'i3.8xlarge',
|
469
|
+
:name => 'I3 Eight Extra Large',
|
470
|
+
:bits => 64,
|
471
|
+
:cores => 32,
|
472
|
+
:disk => 7600,
|
473
|
+
:ram => 249856,
|
474
|
+
:ebs_optimized_available => true,
|
475
|
+
:instance_store_volumes => 4
|
476
|
+
},
|
477
|
+
{
|
478
|
+
:id => 'i3.16xlarge',
|
479
|
+
:name => 'I3 Sixteen Extra Large',
|
480
|
+
:bits => 64,
|
481
|
+
:cores => 32,
|
482
|
+
:disk => 15200,
|
483
|
+
:ram => 499712,
|
484
|
+
:ebs_optimized_available => true,
|
485
|
+
:instance_store_volumes => 8
|
486
|
+
},
|
427
487
|
{
|
428
488
|
:id => "r3.large",
|
429
489
|
:name => "R3 Large",
|
@@ -36,31 +36,50 @@ module Fog
|
|
36
36
|
state == 'available'
|
37
37
|
end
|
38
38
|
|
39
|
-
def
|
40
|
-
|
41
|
-
|
42
|
-
requires_one :size, :snapshot_id
|
43
|
-
|
44
|
-
if type == 'io1'
|
45
|
-
requires :iops
|
46
|
-
end
|
47
|
-
|
48
|
-
data = service.create_volume(availability_zone, size, create_params).body
|
49
|
-
merge_attributes(data)
|
39
|
+
def modification_in_progress?
|
40
|
+
modifications.any? { |m| m['modificationState'] != 'completed' }
|
41
|
+
end
|
50
42
|
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
self.identity,
|
56
|
-
tags
|
57
|
-
)
|
58
|
-
end
|
43
|
+
def modifications
|
44
|
+
requires :identity
|
45
|
+
service.describe_volumes_modifications('volume-id' => self.identity).body['volumeModificationSet']
|
46
|
+
end
|
59
47
|
|
60
|
-
|
61
|
-
|
48
|
+
def save
|
49
|
+
if identity
|
50
|
+
update_params = {
|
51
|
+
'Size' => self.size,
|
52
|
+
'Iops' => self.iops,
|
53
|
+
'VolumeType' => self.type
|
54
|
+
}
|
55
|
+
|
56
|
+
service.modify_volume(self.identity, update_params)
|
57
|
+
true
|
58
|
+
else
|
59
|
+
requires :availability_zone
|
60
|
+
requires_one :size, :snapshot_id
|
61
|
+
|
62
|
+
if type == 'io1'
|
63
|
+
requires :iops
|
64
|
+
end
|
65
|
+
|
66
|
+
data = service.create_volume(availability_zone, size, create_params).body
|
67
|
+
merge_attributes(data)
|
68
|
+
|
69
|
+
if tags = self.tags
|
70
|
+
# expect eventual consistency
|
71
|
+
Fog.wait_for { self.reload rescue nil }
|
72
|
+
service.create_tags(
|
73
|
+
self.identity,
|
74
|
+
tags
|
75
|
+
)
|
76
|
+
end
|
77
|
+
|
78
|
+
if @server
|
79
|
+
self.server = @server
|
80
|
+
end
|
81
|
+
true
|
62
82
|
end
|
63
|
-
true
|
64
83
|
end
|
65
84
|
|
66
85
|
def server
|
@@ -47,6 +47,40 @@ module Fog
|
|
47
47
|
true
|
48
48
|
end
|
49
49
|
|
50
|
+
def classic_link_enabled?
|
51
|
+
requires :identity
|
52
|
+
service.describe_vpc_classic_link(:vpc_ids => [self.identity]).body['vpcSet'].first['classicLinkEnabled']
|
53
|
+
rescue
|
54
|
+
nil
|
55
|
+
end
|
56
|
+
|
57
|
+
def enable_classic_link
|
58
|
+
requires :identity
|
59
|
+
service.enable_vpc_classic_link(self.identity).body['return']
|
60
|
+
end
|
61
|
+
|
62
|
+
def disable_classic_link
|
63
|
+
requires :identity
|
64
|
+
service.disable_vpc_classic_link(self.identity).body['return']
|
65
|
+
end
|
66
|
+
|
67
|
+
def classic_link_dns_enabled?
|
68
|
+
requires :identity
|
69
|
+
service.describe_vpc_classic_link_dns_support(:vpc_ids => [self.identity]).body['vpcs'].first['classicLinkDnsSupported']
|
70
|
+
rescue
|
71
|
+
nil
|
72
|
+
end
|
73
|
+
|
74
|
+
def enable_classic_link_dns
|
75
|
+
requires :identity
|
76
|
+
service.enable_vpc_classic_link_dns_support(self.identity).body['return']
|
77
|
+
end
|
78
|
+
|
79
|
+
def disable_classic_link_dns
|
80
|
+
requires :identity
|
81
|
+
service.disable_vpc_classic_link_dns_support(self.identity).body['return']
|
82
|
+
end
|
83
|
+
|
50
84
|
# Create a vpc
|
51
85
|
#
|
52
86
|
# >> g = AWS.vpcs.new(:cidr_block => "10.1.2.0/24")
|
@@ -29,8 +29,9 @@ module Fog
|
|
29
29
|
|
30
30
|
# group_owner_id defaults to the current owner_id
|
31
31
|
def authorize_ec2_security_group(group_name, group_owner_id=owner_id)
|
32
|
+
key = group_name.match(/^sg-/) ? 'EC2SecurityGroupId' : 'EC2SecurityGroupName'
|
32
33
|
authorize_ingress({
|
33
|
-
|
34
|
+
key => group_name,
|
34
35
|
'EC2SecurityGroupOwnerId' => group_owner_id
|
35
36
|
})
|
36
37
|
end
|
@@ -56,8 +57,9 @@ module Fog
|
|
56
57
|
|
57
58
|
# group_owner_id defaults to the current owner_id
|
58
59
|
def revoke_ec2_security_group(group_name, group_owner_id=owner_id)
|
60
|
+
key = group_name.match(/^sg-/) ? 'EC2SecurityGroupId' : 'EC2SecurityGroupName'
|
59
61
|
revoke_ingress({
|
60
|
-
|
62
|
+
key => group_name,
|
61
63
|
'EC2SecurityGroupOwnerId' => group_owner_id
|
62
64
|
})
|
63
65
|
end
|
@@ -219,7 +219,7 @@ module Fog
|
|
219
219
|
data = service.put_object(directory.key, key, body, options)
|
220
220
|
merge_attributes(data.headers.reject {|key, value| ['Content-Length', 'Content-Type'].include?(key)})
|
221
221
|
end
|
222
|
-
self.etag.gsub!('"','')
|
222
|
+
self.etag.gsub!('"','') if self.etag
|
223
223
|
self.content_length = Fog::Storage.get_body_size(body)
|
224
224
|
self.content_type ||= Fog::Storage.get_content_type(body)
|
225
225
|
true
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Compute
|
4
|
+
module AWS
|
5
|
+
class DescribeVolumesModifications < Fog::Parsers::Base
|
6
|
+
def reset
|
7
|
+
@response = { 'volumeModificationSet' => [] }
|
8
|
+
@modification = {}
|
9
|
+
end
|
10
|
+
|
11
|
+
def end_element(name)
|
12
|
+
case name
|
13
|
+
when 'modificationState', 'originalVolumeType', 'statusMessage', 'targetVolumeType', 'volumeId'
|
14
|
+
@modification[name] = value
|
15
|
+
when 'startTime', 'endTime'
|
16
|
+
@modification[name] = Time.parse(value)
|
17
|
+
when 'originalIops', 'originalSize', 'progress', 'targetIops', 'targetSize'
|
18
|
+
@modification[name] = value.to_i
|
19
|
+
when 'requestId'
|
20
|
+
@response[name] = value
|
21
|
+
when 'item'
|
22
|
+
@response['volumeModificationSet'] << @modification.dup
|
23
|
+
@modification = {}
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Compute
|
4
|
+
module AWS
|
5
|
+
class DescribeVpcClassicLinkDnsSupport < Fog::Parsers::Base
|
6
|
+
def reset
|
7
|
+
@vpc = {}
|
8
|
+
@response = { 'vpcs' => [] }
|
9
|
+
end
|
10
|
+
|
11
|
+
def end_element(name)
|
12
|
+
case name
|
13
|
+
when 'vpcId'
|
14
|
+
@vpc[name] = value
|
15
|
+
when 'classicLinkDnsSupported'
|
16
|
+
@vpc[name] = value == 'true'
|
17
|
+
when 'item'
|
18
|
+
@response['vpcs'] << @vpc
|
19
|
+
@vpc = {}
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Fog
|
2
|
+
module Parsers
|
3
|
+
module Compute
|
4
|
+
module AWS
|
5
|
+
class ModifyVolume < Fog::Parsers::Base
|
6
|
+
def reset
|
7
|
+
@response = {'volumeModification' => {}}
|
8
|
+
end
|
9
|
+
|
10
|
+
def end_element(name)
|
11
|
+
case name
|
12
|
+
when 'modificationState', 'originalVolumeType', 'statusMessage', 'targetVolumeType', 'volumeId'
|
13
|
+
@response['volumeModification'][name] = value
|
14
|
+
when 'startTime', 'endTime'
|
15
|
+
@response['volumeModification'][name] = Time.parse(value)
|
16
|
+
when 'originalIops', 'originalSize', 'progress', 'targetIops', 'targetSize'
|
17
|
+
@response['volumeModification'][name] = value.to_i
|
18
|
+
when 'requestId'
|
19
|
+
@response[name] = value
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/fog/aws/rds.rb
CHANGED
@@ -26,7 +26,7 @@ module Fog
|
|
26
26
|
'DryRun' => dry_run,
|
27
27
|
:parser => Fog::Parsers::Compute::AWS::Basic.new
|
28
28
|
}.merge(Fog::AWS.indexed_param('SecurityGroupId', security_group_ids)))
|
29
|
-
|
29
|
+
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
@@ -50,11 +50,11 @@ module Fog
|
|
50
50
|
'return' => true
|
51
51
|
}
|
52
52
|
unless dry_run
|
53
|
-
instance['classicLinkSecurityGroups'] = security_group_ids
|
53
|
+
instance['classicLinkSecurityGroups'] = security_group_ids
|
54
54
|
instance['classicLinkVpcId'] = vpc_id
|
55
55
|
end
|
56
56
|
response
|
57
|
-
elsif !instance
|
57
|
+
elsif !instance
|
58
58
|
raise Fog::Compute::AWS::NotFound.new("The instance ID '#{instance_id}' does not exist.")
|
59
59
|
elsif !vpc
|
60
60
|
raise Fog::Compute::AWS::NotFound.new("The VPC '#{vpc_id}' does not exist.")
|
@@ -43,15 +43,16 @@ module Fog
|
|
43
43
|
response.status = 200
|
44
44
|
vpc_id = Fog::AWS::Mock.vpc_id
|
45
45
|
vpc = {
|
46
|
-
'vpcId'
|
47
|
-
'state'
|
48
|
-
'cidrBlock'
|
49
|
-
'dhcpOptionsId'
|
50
|
-
'tagSet'
|
51
|
-
'enableDnsSupport'
|
52
|
-
'enableDnsHostnames'
|
53
|
-
'mapPublicIpOnLaunch'=> false,
|
54
|
-
'classicLinkEnabled'
|
46
|
+
'vpcId' => vpc_id,
|
47
|
+
'state' => 'pending',
|
48
|
+
'cidrBlock' => cidrBlock,
|
49
|
+
'dhcpOptionsId' => Fog::AWS::Mock.request_id,
|
50
|
+
'tagSet' => {},
|
51
|
+
'enableDnsSupport' => true,
|
52
|
+
'enableDnsHostnames' => false,
|
53
|
+
'mapPublicIpOnLaunch' => false,
|
54
|
+
'classicLinkEnabled' => false,
|
55
|
+
'classicLinkDnsSupport' => false
|
55
56
|
}
|
56
57
|
self.data[:vpcs].push(vpc)
|
57
58
|
|