fog 0.6.0 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile.lock +11 -6
- data/changelog.txt +49 -0
- data/fog.gemspec +5 -4
- data/lib/fog.rb +1 -1
- data/lib/fog/aws/cloud_formation.rb +124 -0
- data/lib/fog/aws/elb.rb +4 -1
- data/lib/fog/aws/iam.rb +6 -0
- data/lib/fog/aws/parsers/cloud_formation/basic.rb +12 -0
- data/lib/fog/aws/parsers/cloud_formation/create_stack.rb +19 -0
- data/lib/fog/aws/parsers/cloud_formation/describe_stack_events.rb +31 -0
- data/lib/fog/aws/parsers/cloud_formation/describe_stack_resources.rb +31 -0
- data/lib/fog/aws/parsers/cloud_formation/describe_stacks.rb +72 -0
- data/lib/fog/aws/parsers/cloud_formation/get_template.rb +19 -0
- data/lib/fog/aws/parsers/cloud_formation/validate_template.rb +52 -0
- data/lib/fog/aws/parsers/iam/login_profile.rb +27 -0
- data/lib/fog/aws/parsers/iam/upload_server_certificate.rb +26 -0
- data/lib/fog/aws/parsers/rds/authorize_db_security_group_ingress.rb +38 -0
- data/lib/fog/aws/parsers/rds/create_db_instance.rb +34 -0
- data/lib/fog/aws/parsers/rds/create_db_instance_read_replica.rb +34 -0
- data/lib/fog/aws/parsers/rds/create_db_parameter_group.rb +35 -0
- data/lib/fog/aws/parsers/rds/create_db_security_group.rb +38 -0
- data/lib/fog/aws/parsers/rds/create_db_snapshot.rb +35 -0
- data/lib/fog/aws/parsers/rds/db_parser.rb +123 -0
- data/lib/fog/aws/parsers/rds/delete_db_instance.rb +35 -0
- data/lib/fog/aws/parsers/rds/delete_db_parameter_group.rb +27 -0
- data/lib/fog/aws/parsers/rds/delete_db_security_group.rb +33 -0
- data/lib/fog/aws/parsers/rds/delete_db_snapshot.rb +34 -0
- data/lib/fog/aws/parsers/rds/describe_db_instances.rb +36 -0
- data/lib/fog/aws/parsers/rds/describe_db_parameter_groups.rb +38 -0
- data/lib/fog/aws/parsers/rds/describe_db_parameters.rb +44 -0
- data/lib/fog/aws/parsers/rds/describe_db_security_groups.rb +39 -0
- data/lib/fog/aws/parsers/rds/describe_db_snapshots.rb +39 -0
- data/lib/fog/aws/parsers/rds/modify_db_instance.rb +34 -0
- data/lib/fog/aws/parsers/rds/modify_db_parameter_group.rb +28 -0
- data/lib/fog/aws/parsers/rds/reboot_db_instance.rb +35 -0
- data/lib/fog/aws/parsers/rds/restore_db_instance_from_db_snapshot.rb +34 -0
- data/lib/fog/aws/parsers/rds/restore_db_instance_to_point_in_time.rb +35 -0
- data/lib/fog/aws/parsers/rds/revoke_db_security_group_ingress.rb +39 -0
- data/lib/fog/aws/parsers/rds/security_group_parser.rb +39 -0
- data/lib/fog/aws/parsers/rds/snapshot_parser.rb +40 -0
- data/lib/fog/aws/rds.rb +161 -0
- data/lib/fog/aws/rds/models/parameter.rb +21 -0
- data/lib/fog/aws/rds/models/parameter_group.rb +36 -0
- data/lib/fog/aws/rds/models/parameter_groups.rb +27 -0
- data/lib/fog/aws/rds/models/parameters.rb +37 -0
- data/lib/fog/aws/rds/models/security_group.rb +73 -0
- data/lib/fog/aws/rds/models/security_groups.rb +43 -0
- data/lib/fog/aws/rds/models/server.rb +105 -0
- data/lib/fog/aws/rds/models/servers.rb +27 -0
- data/lib/fog/aws/rds/models/snapshot.rb +49 -0
- data/lib/fog/aws/rds/models/snapshots.rb +45 -0
- data/lib/fog/aws/requests/cloud_formation/create_stack.rb +71 -0
- data/lib/fog/aws/requests/cloud_formation/delete_stack.rb +30 -0
- data/lib/fog/aws/requests/cloud_formation/describe_stack_events.rb +44 -0
- data/lib/fog/aws/requests/cloud_formation/describe_stack_resources.rb +43 -0
- data/lib/fog/aws/requests/cloud_formation/describe_stacks.rb +42 -0
- data/lib/fog/aws/requests/cloud_formation/get_template.rb +32 -0
- data/lib/fog/aws/requests/cloud_formation/validate_template.rb +34 -0
- data/lib/fog/aws/requests/elb/create_load_balancer.rb +4 -0
- data/lib/fog/aws/requests/iam/create_login_profile.rb +36 -0
- data/lib/fog/aws/requests/iam/delete_login_profile.rb +31 -0
- data/lib/fog/aws/requests/iam/delete_server_certificate.rb +32 -0
- data/lib/fog/aws/requests/iam/get_login_profile.rb +35 -0
- data/lib/fog/aws/requests/iam/update_login_profile.rb +33 -0
- data/lib/fog/aws/requests/iam/upload_server_certificate.rb +45 -0
- data/lib/fog/aws/requests/rds/authorize_db_security_group_ingress.rb +43 -0
- data/lib/fog/aws/requests/rds/create_db_instance.rb +56 -0
- data/lib/fog/aws/requests/rds/create_db_instance_read_replica.rb +42 -0
- data/lib/fog/aws/requests/rds/create_db_parameter_group.rb +41 -0
- data/lib/fog/aws/requests/rds/create_db_security_group.rb +37 -0
- data/lib/fog/aws/requests/rds/create_db_snapshot.rb +36 -0
- data/lib/fog/aws/requests/rds/delete_db_instance.rb +40 -0
- data/lib/fog/aws/requests/rds/delete_db_parameter_group.rb +36 -0
- data/lib/fog/aws/requests/rds/delete_db_security_group.rb +36 -0
- data/lib/fog/aws/requests/rds/delete_db_snapshot.rb +36 -0
- data/lib/fog/aws/requests/rds/describe_db_instances.rb +42 -0
- data/lib/fog/aws/requests/rds/describe_db_parameter_groups.rb +45 -0
- data/lib/fog/aws/requests/rds/describe_db_parameters.rb +46 -0
- data/lib/fog/aws/requests/rds/describe_db_security_groups.rb +39 -0
- data/lib/fog/aws/requests/rds/describe_db_snapshots.rb +42 -0
- data/lib/fog/aws/requests/rds/modify_db_instance.rb +54 -0
- data/lib/fog/aws/requests/rds/modify_db_parameter_group.rb +55 -0
- data/lib/fog/aws/requests/rds/reboot_db_instance.rb +34 -0
- data/lib/fog/aws/requests/rds/restore_db_instance_from_db_snapshot.rb +34 -0
- data/lib/fog/aws/requests/rds/restore_db_instance_to_point_in_time.rb +35 -0
- data/lib/fog/aws/requests/rds/revoke_db_security_group_ingress.rb +44 -0
- data/lib/fog/aws/simpledb.rb +21 -7
- data/lib/fog/bin.rb +2 -1
- data/lib/fog/bin/aws.rb +8 -0
- data/lib/fog/bin/virtual_box.rb +52 -0
- data/lib/fog/cdn/aws.rb +9 -8
- data/lib/fog/cdn/rackspace.rb +6 -6
- data/lib/fog/cdn/requests/rackspace/post_container.rb +30 -0
- data/lib/fog/cdn/requests/rackspace/put_container.rb +1 -1
- data/lib/fog/compute.rb +6 -3
- data/lib/fog/compute/aws.rb +11 -7
- data/lib/fog/compute/bluebox.rb +5 -6
- data/lib/fog/compute/brightbox.rb +3 -0
- data/lib/fog/compute/go_grid.rb +5 -6
- data/lib/fog/compute/linode.rb +5 -6
- data/lib/fog/compute/models/aws/flavors.rb +19 -18
- data/lib/fog/compute/models/aws/server.rb +23 -0
- data/lib/fog/compute/models/aws/tag.rb +1 -1
- data/lib/fog/compute/models/brightbox/server.rb +7 -1
- data/lib/fog/compute/models/virtual_box/medium.rb +87 -0
- data/lib/fog/compute/models/virtual_box/medium_format.rb +34 -0
- data/lib/fog/compute/models/virtual_box/mediums.rb +32 -0
- data/lib/fog/compute/models/virtual_box/nat_engine.rb +65 -0
- data/lib/fog/compute/models/virtual_box/nat_redirect.rb +91 -0
- data/lib/fog/compute/models/virtual_box/nat_redirects.rb +41 -0
- data/lib/fog/compute/models/virtual_box/network_adapter.rb +82 -0
- data/lib/fog/compute/models/virtual_box/network_adapters.rb +42 -0
- data/lib/fog/compute/models/virtual_box/server.rb +241 -0
- data/lib/fog/compute/models/virtual_box/servers.rb +41 -0
- data/lib/fog/compute/models/virtual_box/storage_controller.rb +83 -0
- data/lib/fog/compute/models/virtual_box/storage_controllers.rb +38 -0
- data/lib/fog/compute/models/voxel/servers.rb +7 -6
- data/lib/fog/compute/new_servers.rb +5 -6
- data/lib/fog/compute/parsers/aws/monitor_unmonitor_instances.rb +35 -0
- data/lib/fog/compute/rackspace.rb +7 -7
- data/lib/fog/compute/requests/aws/delete_tags.rb +12 -9
- data/lib/fog/compute/requests/aws/monitor_instances.rb +52 -0
- data/lib/fog/compute/requests/aws/revoke_security_group_ingress.rb +24 -8
- data/lib/fog/compute/requests/aws/unmonitor_instances.rb +53 -0
- data/lib/fog/compute/requests/brightbox/activate_console_server.rb +20 -0
- data/lib/fog/compute/requests/brightbox/add_listeners_load_balancer.rb +20 -0
- data/lib/fog/compute/requests/brightbox/remove_listeners_load_balancer.rb +20 -0
- data/lib/fog/compute/slicehost.rb +5 -6
- data/lib/fog/compute/virtual_box.rb +48 -0
- data/lib/fog/compute/voxel.rb +30 -27
- data/lib/fog/core.rb +1 -0
- data/lib/fog/core/attributes.rb +3 -1
- data/lib/fog/core/collection.rb +2 -2
- data/lib/fog/core/credentials.rb +13 -3
- data/lib/fog/core/scp.rb +0 -4
- data/lib/fog/core/service.rb +0 -8
- data/lib/fog/core/ssh.rb +0 -4
- data/lib/fog/dns.rb +3 -3
- data/lib/fog/dns/aws.rb +8 -8
- data/lib/fog/dns/bluebox.rb +5 -7
- data/lib/fog/dns/dnsimple.rb +7 -7
- data/lib/fog/dns/linode.rb +5 -6
- data/lib/fog/dns/models/dnsimple/record.rb +11 -1
- data/lib/fog/dns/models/dnsimple/records.rb +7 -7
- data/lib/fog/dns/models/dnsimple/zones.rb +2 -1
- data/lib/fog/dns/requests/dnsimple/get_record.rb +34 -0
- data/lib/fog/dns/slicehost.rb +5 -6
- data/lib/fog/dns/zerigo.rb +5 -7
- data/lib/fog/providers.rb +2 -1
- data/lib/fog/providers/aws.rb +10 -8
- data/lib/fog/providers/virtual_box.rb +11 -0
- data/lib/fog/storage.rb +21 -0
- data/lib/fog/storage/aws.rb +16 -32
- data/lib/fog/storage/google.rb +6 -27
- data/lib/fog/storage/local.rb +7 -7
- data/lib/fog/storage/models/rackspace/directory.rb +1 -1
- data/lib/fog/storage/models/rackspace/file.rb +1 -0
- data/lib/fog/storage/rackspace.rb +5 -27
- data/lib/fog/storage/requests/aws/put_object.rb +2 -2
- data/lib/fog/storage/requests/aws/upload_part.rb +1 -1
- data/lib/fog/storage/requests/google/put_object.rb +2 -2
- data/lib/fog/storage/requests/rackspace/put_object.rb +1 -1
- data/tests/aws/requests/cloud_formation/stack_tests.rb +130 -0
- data/tests/aws/requests/iam/login_profile_tests.rb +64 -0
- data/tests/aws/requests/rds/helper.rb +169 -0
- data/tests/aws/requests/rds/instance_tests.rb +129 -0
- data/tests/aws/requests/rds/model_tests.rb +98 -0
- data/tests/aws/requests/rds/parameter_group_tests.rb +68 -0
- data/tests/aws/requests/rds/parameter_request_tests.rb +35 -0
- data/tests/compute/models/aws/server_monitor_tests.rb +47 -0
- data/tests/compute/models/server_tests.rb +7 -23
- data/tests/compute/parsers/aws/monitor_unmonitor_instances_tests.rb +49 -0
- data/tests/compute/requests/aws/security_group_tests.rb +69 -52
- data/tests/compute/requests/aws/tag_tests.rb +5 -5
- data/tests/compute/requests/brightbox/helper.rb +7 -6
- data/tests/compute/requests/brightbox/server_tests.rb +5 -0
- data/tests/compute/requests/voxel/server_tests.rb +2 -3
- data/tests/storage/requests/aws/bucket_tests.rb +10 -0
- metadata +148 -12
@@ -30,7 +30,7 @@ module Fog
|
|
30
30
|
# http://docs.amazonwebservices.com/AmazonS3/latest/API/RESTObjectPUT.html
|
31
31
|
#
|
32
32
|
def put_object(bucket_name, object_name, data, options = {})
|
33
|
-
data = parse_data(data)
|
33
|
+
data = Fog::Storage.parse_data(data)
|
34
34
|
headers = data[:headers].merge!(options)
|
35
35
|
request({
|
36
36
|
:body => data[:body],
|
@@ -56,7 +56,7 @@ module Fog
|
|
56
56
|
@data[:acls][:object][bucket_name][object_name] = self.class.acls(acl)
|
57
57
|
end
|
58
58
|
|
59
|
-
data = parse_data(data)
|
59
|
+
data = Fog::Storage.parse_data(data)
|
60
60
|
unless data[:body].is_a?(String)
|
61
61
|
data[:body] = data[:body].read
|
62
62
|
end
|
@@ -23,7 +23,7 @@ module Fog
|
|
23
23
|
# http://docs.amazonwebservices.com/AmazonS3/latest/API/mpUploadUploadPart.html
|
24
24
|
#
|
25
25
|
def upload_part(bucket_name, object_name, upload_id, part_number, data, options = {})
|
26
|
-
data = parse_data(data)
|
26
|
+
data = Fog::Storage.parse_data(data)
|
27
27
|
headers = options
|
28
28
|
headers['Content-Length'] = data[:headers]['Content-Length']
|
29
29
|
request({
|
@@ -24,7 +24,7 @@ module Fog
|
|
24
24
|
# * headers<~Hash>:
|
25
25
|
# * 'ETag'<~String> - etag of new object
|
26
26
|
def put_object(bucket_name, object_name, data, options = {})
|
27
|
-
data = parse_data(data)
|
27
|
+
data = Fog::Storage.parse_data(data)
|
28
28
|
headers = data[:headers].merge!(options)
|
29
29
|
request({
|
30
30
|
:body => data[:body],
|
@@ -50,7 +50,7 @@ module Fog
|
|
50
50
|
@data[:acls][:object][bucket_name][object_name] = self.class.acls(acl)
|
51
51
|
end
|
52
52
|
|
53
|
-
data = parse_data(data)
|
53
|
+
data = Fog::Storage.parse_data(data)
|
54
54
|
unless data[:body].is_a?(String)
|
55
55
|
data[:body] = data[:body].read
|
56
56
|
end
|
@@ -9,7 +9,7 @@ module Fog
|
|
9
9
|
# * container<~String> - Name for container, should be < 256 bytes and must not contain '/'
|
10
10
|
#
|
11
11
|
def put_object(container, object, data, options = {})
|
12
|
-
data = parse_data(data)
|
12
|
+
data = Fog::Storage.parse_data(data)
|
13
13
|
headers = data[:headers].merge!(options)
|
14
14
|
response = request(
|
15
15
|
:body => data[:body],
|
@@ -0,0 +1,130 @@
|
|
1
|
+
Shindo.tests('AWS::CloudFormation | stack requests', ['aws', 'cloudformation']) do
|
2
|
+
|
3
|
+
@validate_template_format = {
|
4
|
+
'Description' => String,
|
5
|
+
'Parameters' => [
|
6
|
+
{
|
7
|
+
'DefaultValue' => Fog::Nullable::String,
|
8
|
+
'Description' => String,
|
9
|
+
'NoEcho' => Fog::Boolean,
|
10
|
+
'ParameterKey' => String,
|
11
|
+
}
|
12
|
+
],
|
13
|
+
'RequestId' => String
|
14
|
+
}
|
15
|
+
|
16
|
+
@create_stack_format = {
|
17
|
+
'RequestId' => String,
|
18
|
+
'StackId' => String
|
19
|
+
}
|
20
|
+
|
21
|
+
@get_template_format = {
|
22
|
+
'RequestId' => String,
|
23
|
+
'TemplateBody' => String
|
24
|
+
}
|
25
|
+
|
26
|
+
@describe_stacks_format = {
|
27
|
+
'RequestId' => String,
|
28
|
+
'Stacks' => [
|
29
|
+
{
|
30
|
+
'CreationTime' => Time,
|
31
|
+
'DisableRollback' => Fog::Boolean,
|
32
|
+
'Outputs' => [
|
33
|
+
{
|
34
|
+
'OutputKey' => String,
|
35
|
+
'OutputValue' => String
|
36
|
+
}
|
37
|
+
],
|
38
|
+
'Parameters' => [
|
39
|
+
{
|
40
|
+
'ParameterKey' => String,
|
41
|
+
'ParameterValue' => String,
|
42
|
+
}
|
43
|
+
],
|
44
|
+
'StackId' => String,
|
45
|
+
'StackName' => String,
|
46
|
+
'StackStatus' => String,
|
47
|
+
}
|
48
|
+
]
|
49
|
+
}
|
50
|
+
|
51
|
+
@describe_stack_events_format = {
|
52
|
+
'RequestId' => String,
|
53
|
+
'StackEvents' => [
|
54
|
+
{
|
55
|
+
'EventId' => String,
|
56
|
+
'LogicalResourceId' => String,
|
57
|
+
'PhysicalResourceId' => String,
|
58
|
+
'ResourceProperties' => String,
|
59
|
+
'ResourceStatus' => String,
|
60
|
+
'ResourceStatusReason' => String,
|
61
|
+
'ResourceType' => String,
|
62
|
+
'StackId' => String,
|
63
|
+
'StackName' => String,
|
64
|
+
'Timestamp' => Time
|
65
|
+
}
|
66
|
+
]
|
67
|
+
}
|
68
|
+
|
69
|
+
@describe_stack_resources_format = {
|
70
|
+
'RequestId' => String,
|
71
|
+
'StackResources' => [
|
72
|
+
{
|
73
|
+
'LogicalResourceId' => String,
|
74
|
+
'PhysicalResourceId' => String,
|
75
|
+
'ResourceStatus' => String,
|
76
|
+
'ResourceType' => String,
|
77
|
+
'StackId' => String,
|
78
|
+
'StackName' => String,
|
79
|
+
'Timestamp' => Time
|
80
|
+
}
|
81
|
+
]
|
82
|
+
}
|
83
|
+
|
84
|
+
tests('success') do
|
85
|
+
|
86
|
+
@stack_name = 'fogstack' << Time.now.to_i.to_s
|
87
|
+
@keypair = AWS[:compute].key_pairs.create(:name => 'cloudformation')
|
88
|
+
@template_url = 'https://s3.amazonaws.com/cloudformation-templates-us-east-1/EC2InstanceSample-1.0.0.template'
|
89
|
+
|
90
|
+
tests("validate_template('TemplateURL' => '#{@template_url}')").formats(@validate_template_format) do
|
91
|
+
AWS[:cloud_formation].validate_template('TemplateURL' => @template_url).body
|
92
|
+
end
|
93
|
+
|
94
|
+
tests("create_stack('#{@stack_name}', 'TemplateURL' => '#{@template_url}', Parameters => {'KeyName' => 'cloudformation'})").formats(@create_stack_format) do
|
95
|
+
AWS[:cloud_formation].create_stack(
|
96
|
+
@stack_name,
|
97
|
+
'TemplateURL' => @template_url,
|
98
|
+
'Parameters' => {'KeyName' => 'cloudformation'}
|
99
|
+
).body
|
100
|
+
end
|
101
|
+
|
102
|
+
tests("get_template('#{@stack_name})").formats(@get_template_format) do
|
103
|
+
AWS[:cloud_formation].get_template(@stack_name).body
|
104
|
+
end
|
105
|
+
|
106
|
+
tests("describe_stacks").formats(@describe_stacks_format) do
|
107
|
+
AWS[:cloud_formation].describe_stacks.body
|
108
|
+
end
|
109
|
+
|
110
|
+
tests("describe_stack_events('#{@stack_name}')").formats(@describe_stack_events_format) do
|
111
|
+
AWS[:cloud_formation].describe_stack_events(@stack_name).body
|
112
|
+
end
|
113
|
+
|
114
|
+
tests("describe_stack_resources('StackName' => '#{@stack_name}')").formats(@describe_stack_resources_format) do
|
115
|
+
AWS[:cloud_formation].describe_stack_resources('StackName' => @stack_name).body
|
116
|
+
end
|
117
|
+
|
118
|
+
tests("delete_stack('#{@stack_name}')").succeeds do
|
119
|
+
AWS[:cloud_formation].delete_stack(@stack_name)
|
120
|
+
end
|
121
|
+
|
122
|
+
@keypair.destroy
|
123
|
+
|
124
|
+
end
|
125
|
+
|
126
|
+
tests('failure') do
|
127
|
+
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
@@ -0,0 +1,64 @@
|
|
1
|
+
Shindo.tests('AWS::IAM | user requests', ['aws']) do
|
2
|
+
|
3
|
+
unless Fog.mocking?
|
4
|
+
AWS[:iam].create_user('fog_user')
|
5
|
+
end
|
6
|
+
|
7
|
+
|
8
|
+
tests('success') do
|
9
|
+
@login_profile_format = {
|
10
|
+
'LoginProfile' => {
|
11
|
+
'UserName' => String,
|
12
|
+
'CreateDate' => Time
|
13
|
+
|
14
|
+
},
|
15
|
+
'RequestId' => String
|
16
|
+
}
|
17
|
+
|
18
|
+
tests("#create_login_profile('fog_user')").formats(@login_profile_format) do
|
19
|
+
pending if Fog.mocking?
|
20
|
+
AWS[:iam].create_login_profile('fog_user', 'somepassword').body
|
21
|
+
end
|
22
|
+
|
23
|
+
tests("#get_login_profile('fog_user')").formats(@login_profile_format) do
|
24
|
+
pending if Fog.mocking?
|
25
|
+
result = AWS[:iam].get_login_profile('fog_user').body
|
26
|
+
returns('fog_user') {result['LoginProfile']['UserName']}
|
27
|
+
result
|
28
|
+
end
|
29
|
+
|
30
|
+
tests("#modify_login_profile('fog_user')").formats(AWS::IAM::Formats::BASIC) do
|
31
|
+
pending if Fog.mocking?
|
32
|
+
begin
|
33
|
+
AWS[:iam].update_login_profile('fog_user', 'otherpassword').body
|
34
|
+
rescue Excon::Errors::Conflict #profile cannot be updated or deleted until it has finished creating; api provides no way of telling whether creation process complete
|
35
|
+
sleep 5
|
36
|
+
retry
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
tests("#delete_login_profile('fog_user')").formats(AWS::IAM::Formats::BASIC) do
|
41
|
+
pending if Fog.mocking?
|
42
|
+
AWS[:iam].delete_login_profile('fog_user').body
|
43
|
+
end
|
44
|
+
|
45
|
+
tests("#get_login_profile('fog_user')") do
|
46
|
+
pending if Fog.mocking?
|
47
|
+
raises(Excon::Errors::NotFound) {AWS[:iam].get_login_profile('fog_user')}
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
tests('failure') do
|
53
|
+
tests('get login profile for non existing user') do
|
54
|
+
pending if Fog.mocking?
|
55
|
+
raises(Excon::Errors::NotFound) { AWS[:iam].get_login_profile('idontexist')}
|
56
|
+
raises(Excon::Errors::NotFound) { AWS[:iam].delete_login_profile('fog_user')}
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
|
61
|
+
unless Fog.mocking?
|
62
|
+
AWS[:iam].delete_user('fog_user')
|
63
|
+
end
|
64
|
+
end
|
@@ -0,0 +1,169 @@
|
|
1
|
+
class AWS
|
2
|
+
|
3
|
+
module RDS
|
4
|
+
|
5
|
+
module Formats
|
6
|
+
|
7
|
+
BASIC = {
|
8
|
+
'ResponseMetadata' => {'RequestId' => String}
|
9
|
+
}
|
10
|
+
|
11
|
+
DB_PARAMETER_GROUP = {
|
12
|
+
'DBParameterGroupFamily' => String,
|
13
|
+
'DBParameterGroupName'=> String,
|
14
|
+
'Description'=> String
|
15
|
+
}
|
16
|
+
CREATE_DB_PARAMETER_GROUP = {
|
17
|
+
'ResponseMetadata' => {'RequestId' => String},
|
18
|
+
'CreateDBParameterGroupResult' => {
|
19
|
+
'DBParameterGroup' => DB_PARAMETER_GROUP
|
20
|
+
}
|
21
|
+
}
|
22
|
+
|
23
|
+
DESCRIBE_DB_PARAMETER_GROUP = {
|
24
|
+
'ResponseMetadata' => {'RequestId' => String},
|
25
|
+
'DescribeDBParameterGroupsResult' =>{
|
26
|
+
'DBParameterGroups' => [DB_PARAMETER_GROUP]
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
MODIFY_PARAMETER_GROUP = BASIC.merge({
|
31
|
+
'ModifyDBParameterGroupResult' => {
|
32
|
+
'DBParameterGroupName' => String
|
33
|
+
}
|
34
|
+
})
|
35
|
+
|
36
|
+
DB_PARAMETER = {
|
37
|
+
'ParameterValue' => Fog::Nullable::String,
|
38
|
+
'DataType' => String,
|
39
|
+
'AllowedValues' => Fog::Nullable::String,
|
40
|
+
'Source' => String,
|
41
|
+
'IsModifiable' => Fog::Boolean,
|
42
|
+
'Description' => String,
|
43
|
+
'ParameterName' => String,
|
44
|
+
'ApplyType' => String,
|
45
|
+
}
|
46
|
+
DESCRIBE_DB_PARAMETERS = BASIC.merge({
|
47
|
+
'DescribeDBParametersResult' => {
|
48
|
+
'Marker' => Fog::Nullable::String,
|
49
|
+
'Parameters' => [DB_PARAMETER]
|
50
|
+
}
|
51
|
+
|
52
|
+
})
|
53
|
+
|
54
|
+
|
55
|
+
SNAPSHOT={
|
56
|
+
'AllocatedStorage' => Integer,
|
57
|
+
'AvailabilityZone' => String,
|
58
|
+
'DBInstanceIdentifier' => String,
|
59
|
+
'DBSnapshotIdentifier' => String,
|
60
|
+
'EngineVersion' => String,
|
61
|
+
'Engine' => String,
|
62
|
+
'InstanceCreateTime' => Time,
|
63
|
+
'MasterUsername' => String,
|
64
|
+
'Port' => Integer,
|
65
|
+
'SnapshotCreateTime' => Fog::Nullable::Time,
|
66
|
+
'Status' => String
|
67
|
+
}
|
68
|
+
INSTANCE = {
|
69
|
+
'AllocatedStorage' => Integer,
|
70
|
+
'AutoMinorVersionUpgrade' => Fog::Boolean,
|
71
|
+
'AvailabilityZone' => Fog::Nullable::String,
|
72
|
+
'BackupRetentionPeriod' => Integer,
|
73
|
+
'DBInstanceClass' => String,
|
74
|
+
'DBInstanceIdentifier' => String,
|
75
|
+
'DBInstanceStatus' => String,
|
76
|
+
'DBName' => Fog::Nullable::String,
|
77
|
+
'DBParameterGroups' => [{
|
78
|
+
'ParameterApplyStatus' => String,
|
79
|
+
'DBParameterGroupName' => String
|
80
|
+
}],
|
81
|
+
'DBSecurityGroups' => [{
|
82
|
+
'Status' => String,
|
83
|
+
'DBSecurityGroupName' => String
|
84
|
+
}],
|
85
|
+
'Endpoint' => {
|
86
|
+
'Address' => Fog::Nullable::String,
|
87
|
+
'Port' => Fog::Nullable::Integer
|
88
|
+
},
|
89
|
+
'Engine' => String,
|
90
|
+
'EngineVersion' => String,
|
91
|
+
'InstanceCreateTime' => Fog::Nullable::Time,
|
92
|
+
'LatestRestorableTime' => Fog::Nullable::Time,
|
93
|
+
'MasterUsername' => String,
|
94
|
+
'MultiAZ' => Fog::Boolean,
|
95
|
+
'PendingModifiedValues' => {
|
96
|
+
'BackupRetentionPeriod' => Fog::Nullable::Integer,
|
97
|
+
'DBInstanceClass' => Fog::Nullable::String,
|
98
|
+
'EngineVersion' => Fog::Nullable::String,
|
99
|
+
'MasterUserPassword' => Fog::Nullable::String,
|
100
|
+
'MultiAZ' => Fog::Nullable::String,
|
101
|
+
'AllocatedStorage' => Fog::Nullable::Integer,
|
102
|
+
'Port' => Fog::Nullable::Integer
|
103
|
+
},
|
104
|
+
'PreferredBackupWindow'=> String,
|
105
|
+
'PreferredMaintenanceWindow'=> String,
|
106
|
+
'ReadReplicaDBInstanceIdentifiers'=> [String],
|
107
|
+
'ReadReplicaSourceDBInstanceIdentifier'=> Fog::Nullable::String
|
108
|
+
}
|
109
|
+
|
110
|
+
CREATE_DB_INSTANCE = BASIC.merge({
|
111
|
+
'CreateDBInstanceResult' => {
|
112
|
+
'DBInstance' => INSTANCE
|
113
|
+
}
|
114
|
+
})
|
115
|
+
|
116
|
+
DESCRIBE_DB_INSTANCES = BASIC.merge({
|
117
|
+
'DescribeDBInstancesResult' => {
|
118
|
+
'Marker' => Fog::Nullable::String,
|
119
|
+
'DBInstances' => [INSTANCE]
|
120
|
+
}
|
121
|
+
})
|
122
|
+
|
123
|
+
MODIFY_DB_INSTANCE = BASIC.merge({
|
124
|
+
'ModifyDBInstanceResult' => {
|
125
|
+
'DBInstance' => INSTANCE
|
126
|
+
}
|
127
|
+
})
|
128
|
+
|
129
|
+
DELETE_DB_INSTANCE = BASIC.merge({
|
130
|
+
'DeleteDBInstanceResult' => {
|
131
|
+
'DBInstance' => INSTANCE
|
132
|
+
}
|
133
|
+
})
|
134
|
+
|
135
|
+
REBOOT_DB_INSTANCE = BASIC.merge({
|
136
|
+
'RebootDBInstanceResult' => {
|
137
|
+
'DBInstance' => INSTANCE
|
138
|
+
}
|
139
|
+
})
|
140
|
+
|
141
|
+
CREATE_READ_REPLICA = BASIC.merge({
|
142
|
+
'CreateDBInstanceReadReplicaResult' => {
|
143
|
+
'DBInstance' => INSTANCE
|
144
|
+
}
|
145
|
+
})
|
146
|
+
|
147
|
+
CREATE_DB_SNAPSHOT = BASIC.merge({
|
148
|
+
'CreateDBSnapshotResult' => {
|
149
|
+
'DBSnapshot' => SNAPSHOT
|
150
|
+
}
|
151
|
+
})
|
152
|
+
|
153
|
+
DESCRIBE_DB_SNAPSHOTS = BASIC.merge({
|
154
|
+
'DescribeDBSnapshotsResult' => {
|
155
|
+
'Marker' => Fog::Nullable::String,
|
156
|
+
'DBSnapshots' => [SNAPSHOT]
|
157
|
+
}
|
158
|
+
})
|
159
|
+
DELETE_DB_SNAPSHOT = BASIC.merge({
|
160
|
+
'DeleteDBSnapshotResult' => {
|
161
|
+
'DBSnapshot' => SNAPSHOT
|
162
|
+
}
|
163
|
+
})
|
164
|
+
|
165
|
+
end
|
166
|
+
|
167
|
+
end
|
168
|
+
|
169
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
Shindo.tests('AWS::RDS | instance requests', ['aws', 'rds']) do
|
2
|
+
@db_instance_id='fog-test'
|
3
|
+
@db_replica_id='fog-replica'
|
4
|
+
|
5
|
+
tests('success') do
|
6
|
+
pending if Fog.mocking?
|
7
|
+
|
8
|
+
tests("#create_db_instance").formats(AWS::RDS::Formats::CREATE_DB_INSTANCE) do
|
9
|
+
result = AWS[:rds].create_db_instance(@db_instance_id, 'AllocatedStorage' => 5,
|
10
|
+
'DBInstanceClass' => 'db.m1.small',
|
11
|
+
'Engine' => 'mysql',
|
12
|
+
'EngineVersion' => '5.1.50',
|
13
|
+
'MasterUsername' => 'foguser',
|
14
|
+
'BackupRetentionPeriod' => 1,
|
15
|
+
'MasterUserPassword' => 'fogpassword').body
|
16
|
+
|
17
|
+
instance = result['CreateDBInstanceResult']['DBInstance']
|
18
|
+
returns('creating'){ instance['DBInstanceStatus']}
|
19
|
+
result
|
20
|
+
end
|
21
|
+
|
22
|
+
tests("#describe_db_instances").formats(AWS::RDS::Formats::DESCRIBE_DB_INSTANCES) do
|
23
|
+
AWS[:rds].describe_db_instances.body
|
24
|
+
end
|
25
|
+
|
26
|
+
server = AWS[:rds].servers.get(@db_instance_id)
|
27
|
+
server.wait_for {ready?}
|
28
|
+
|
29
|
+
|
30
|
+
tests("#modify_db_instance with immediate apply").formats(AWS::RDS::Formats::MODIFY_DB_INSTANCE) do
|
31
|
+
body = AWS[:rds].modify_db_instance( @db_instance_id, true, 'AllocatedStorage'=> 10).body
|
32
|
+
tests 'pending storage' do
|
33
|
+
instance = body['ModifyDBInstanceResult']['DBInstance']
|
34
|
+
returns(10){instance['PendingModifiedValues']['AllocatedStorage']}
|
35
|
+
end
|
36
|
+
body
|
37
|
+
end
|
38
|
+
server.wait_for { state == 'modifying'}
|
39
|
+
server.wait_for { state == 'available'}
|
40
|
+
|
41
|
+
server.reload
|
42
|
+
tests 'new storage' do
|
43
|
+
returns(10){ server.allocated_storage}
|
44
|
+
end
|
45
|
+
|
46
|
+
tests("reboot db instance") do
|
47
|
+
tests("#reboot").formats(AWS::RDS::Formats::REBOOT_DB_INSTANCE) do
|
48
|
+
AWS[:rds].reboot_db_instance( @db_instance_id).body
|
49
|
+
end
|
50
|
+
|
51
|
+
server.wait_for { state == 'rebooting'}
|
52
|
+
server.wait_for { state == 'available'}
|
53
|
+
server.reload
|
54
|
+
end
|
55
|
+
|
56
|
+
|
57
|
+
tests("#create_db_snapshot").formats(AWS::RDS::Formats::CREATE_DB_SNAPSHOT) do
|
58
|
+
body = AWS[:rds].create_db_snapshot(@db_instance_id, 'fog-snapshot').body
|
59
|
+
returns('creating'){ body['CreateDBSnapshotResult']['DBSnapshot']['Status']}
|
60
|
+
body
|
61
|
+
end
|
62
|
+
|
63
|
+
tests("#describe_db_snapshots").formats(AWS::RDS::Formats::DESCRIBE_DB_SNAPSHOTS) do
|
64
|
+
body = AWS[:rds].describe_db_snapshots().body
|
65
|
+
end
|
66
|
+
|
67
|
+
Fog.wait_for do
|
68
|
+
data = AWS[:rds].describe_db_snapshots(:snapshot_id => 'fog-snapshot')
|
69
|
+
status = data.body['DescribeDBSnapshotsResult']['DBSnapshots'].first['Status']
|
70
|
+
status =='available'
|
71
|
+
end
|
72
|
+
|
73
|
+
tests( "#create read replica").formats(AWS::RDS::Formats::CREATE_READ_REPLICA) do
|
74
|
+
AWS[:rds].create_db_instance_read_replica(@db_replica_id, @db_instance_id).body
|
75
|
+
end
|
76
|
+
|
77
|
+
replica = AWS[:rds].servers.get(@db_replica_id)
|
78
|
+
replica.wait_for {ready?}
|
79
|
+
|
80
|
+
tests("replica source") do
|
81
|
+
returns(@db_instance_id){replica.read_replica_source}
|
82
|
+
end
|
83
|
+
server.reload
|
84
|
+
|
85
|
+
tests("replica identifiers") do
|
86
|
+
returns([@db_replica_id]){server.read_replica_identifiers}
|
87
|
+
end
|
88
|
+
|
89
|
+
tests("#delete_db_instance").formats(AWS::RDS::Formats::DELETE_DB_INSTANCE) do
|
90
|
+
AWS[:rds].delete_db_instance(@db_replica_id, nil, true)
|
91
|
+
body = AWS[:rds].delete_db_instance(@db_instance_id, 'fog-final-snapshot').body
|
92
|
+
Fog.wait_for do
|
93
|
+
AWS[:rds].servers.length == 0
|
94
|
+
end
|
95
|
+
|
96
|
+
tests "final snapshot" do
|
97
|
+
returns('available'){AWS[:rds].describe_db_snapshots(:snapshot_id => 'fog-final-snapshot').body['DescribeDBSnapshotsResult']['DBSnapshots'].first['Status']}
|
98
|
+
end
|
99
|
+
body
|
100
|
+
end
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
tests("#delete_db_snapshot").formats(AWS::RDS::Formats::DELETE_DB_SNAPSHOT) do
|
105
|
+
AWS[:rds].delete_db_snapshot('fog-snapshot').body
|
106
|
+
end
|
107
|
+
|
108
|
+
AWS[:rds].delete_db_snapshot('fog-final-snapshot')
|
109
|
+
|
110
|
+
returns([]){ AWS[:rds].describe_db_snapshots.body['DescribeDBSnapshotsResult']['DBSnapshots']}
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
tests('failure') do
|
115
|
+
pending if Fog.mocking?
|
116
|
+
|
117
|
+
tests "deleting nonexisting instance" do
|
118
|
+
raises(Fog::AWS::RDS::NotFound) {AWS[:rds].delete_db_instance('doesnexist', 'irrelevant')}
|
119
|
+
end
|
120
|
+
tests "deleting non existing snapshot" do
|
121
|
+
raises(Fog::AWS::RDS::NotFound) {AWS[:rds].delete_db_snapshot('doesntexist')}
|
122
|
+
end
|
123
|
+
tests "modifying non existing instance" do
|
124
|
+
raises(Fog::AWS::RDS::NotFound) { AWS[:rds].modify_db_instance 'doesntexit', true, 'AllocatedStorage'=> 10}
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
|
129
|
+
|