fog-aws 0.8.1 → 0.9.0
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/.gitignore +1 -0
- data/.travis.yml +4 -0
- data/README.md +1 -1
- data/gemfiles/Gemfile-edge +5 -0
- data/lib/fog/aws/models/compute/security_group.rb +4 -4
- data/lib/fog/aws/models/rds/cluster.rb +93 -0
- data/lib/fog/aws/models/rds/cluster_snapshots.rb +48 -0
- data/lib/fog/aws/models/rds/clusters.rb +23 -0
- data/lib/fog/aws/models/rds/parameters.rb +15 -0
- data/lib/fog/aws/models/rds/server.rb +29 -11
- data/lib/fog/aws/models/rds/servers.rb +4 -0
- data/lib/fog/aws/models/rds/snapshot.rb +36 -17
- data/lib/fog/aws/parsers/rds/create_db_cluster.rb +32 -0
- data/lib/fog/aws/parsers/rds/create_db_cluster_snapshot.rb +33 -0
- data/lib/fog/aws/parsers/rds/db_cluster_parser.rb +71 -0
- data/lib/fog/aws/parsers/rds/db_cluster_snapshot_parser.rb +32 -0
- data/lib/fog/aws/parsers/rds/db_parameter_parser.rb +30 -0
- data/lib/fog/aws/parsers/rds/db_parser.rb +2 -1
- data/lib/fog/aws/parsers/rds/delete_db_cluster.rb +32 -0
- data/lib/fog/aws/parsers/rds/delete_db_cluster_snapshot.rb +32 -0
- data/lib/fog/aws/parsers/rds/describe_db_cluster_snapshots.rb +34 -0
- data/lib/fog/aws/parsers/rds/describe_db_clusters.rb +34 -0
- data/lib/fog/aws/parsers/rds/describe_engine_default_parameters.rb +34 -0
- data/lib/fog/aws/parsers/rds/restore_db_instance_from_db_snapshot.rb +2 -2
- data/lib/fog/aws/parsers/rds/snapshot_parser.rb +6 -13
- data/lib/fog/aws/rds.rb +25 -0
- data/lib/fog/aws/requests/compute/describe_availability_zones.rb +5 -2
- data/lib/fog/aws/requests/rds/create_db_cluster.rb +98 -0
- data/lib/fog/aws/requests/rds/create_db_cluster_snapshot.rb +68 -0
- data/lib/fog/aws/requests/rds/create_db_instance.rb +42 -4
- data/lib/fog/aws/requests/rds/create_db_snapshot.rb +1 -1
- data/lib/fog/aws/requests/rds/delete_db_cluster.rb +55 -0
- data/lib/fog/aws/requests/rds/delete_db_cluster_snapshot.rb +43 -0
- data/lib/fog/aws/requests/rds/delete_db_instance.rb +9 -0
- data/lib/fog/aws/requests/rds/delete_db_snapshot.rb +2 -1
- data/lib/fog/aws/requests/rds/describe_db_cluster_snapshots.rb +66 -0
- data/lib/fog/aws/requests/rds/describe_db_clusters.rb +54 -0
- data/lib/fog/aws/requests/rds/describe_db_instances.rb +4 -0
- data/lib/fog/aws/requests/rds/describe_db_parameters.rb +15 -1
- data/lib/fog/aws/requests/rds/describe_engine_default_parameters.rb +40 -0
- data/lib/fog/aws/requests/rds/modify_db_instance.rb +52 -49
- data/lib/fog/aws/requests/rds/modify_db_parameter_group.rb +28 -1
- data/lib/fog/aws/requests/rds/restore_db_instance_from_db_snapshot.rb +63 -2
- data/lib/fog/aws/version.rb +1 -1
- data/tests/models/rds/cluster_tests.rb +54 -0
- data/tests/models/rds/clusters_tests.rb +5 -0
- data/tests/models/rds/helper.rb +13 -0
- data/tests/models/rds/server_tests.rb +3 -3
- data/tests/models/rds/servers_tests.rb +18 -0
- data/tests/requests/compute/instance_tests.rb +2 -3
- data/tests/requests/rds/cluster_snapshot_tests.rb +43 -0
- data/tests/requests/rds/cluster_tests.rb +37 -0
- data/tests/requests/rds/helper.rb +84 -0
- data/tests/requests/rds/instance_tests.rb +16 -4
- data/tests/requests/rds/parameter_group_tests.rb +1 -1
- data/tests/requests/rds/parameter_request_tests.rb +0 -2
- metadata +27 -3
@@ -0,0 +1,54 @@
|
|
1
|
+
module Fog
|
2
|
+
module AWS
|
3
|
+
class RDS
|
4
|
+
class Real
|
5
|
+
require 'fog/aws/parsers/rds/describe_db_clusters'
|
6
|
+
|
7
|
+
# Describe all or specified db clusters
|
8
|
+
# http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeDBClusters.html
|
9
|
+
#
|
10
|
+
# ==== Parameters ====
|
11
|
+
# * DBClusterIdentifier<~String> - The user-supplied DB cluster identifier
|
12
|
+
#
|
13
|
+
# ==== Returns ====
|
14
|
+
# * response<~Excon::Response>:
|
15
|
+
# * body<~Hash>:
|
16
|
+
def describe_db_clusters(identifier=nil, opts={})
|
17
|
+
params = {}
|
18
|
+
params['DBClusterIdentifier'] = identifier if identifier
|
19
|
+
params['Marker'] = opts[:marker] if opts[:marker]
|
20
|
+
params['MaxRecords'] = opts[:max_records] if opts[:max_records]
|
21
|
+
|
22
|
+
request({
|
23
|
+
'Action' => 'DescribeDBClusters',
|
24
|
+
:parser => Fog::Parsers::AWS::RDS::DescribeDBClusters.new
|
25
|
+
}.merge(params))
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
class Mock
|
30
|
+
def describe_db_clusters(identifier=nil, opts={})
|
31
|
+
response = Excon::Response.new
|
32
|
+
cluster_set = []
|
33
|
+
|
34
|
+
if identifier
|
35
|
+
if cluster = self.data[:clusters][identifier]
|
36
|
+
cluster_set << cluster
|
37
|
+
else
|
38
|
+
raise Fog::AWS::RDS::NotFound.new("DBCluster #{identifier} not found")
|
39
|
+
end
|
40
|
+
else
|
41
|
+
cluster_set = self.data[:clusters].values
|
42
|
+
end
|
43
|
+
|
44
|
+
response.status = 200
|
45
|
+
response.body = {
|
46
|
+
"ResponseMetadata" => { "RequestId" => Fog::AWS::Mock.request_id },
|
47
|
+
"DescribeDBClustersResult" => { "DBClusters" => cluster_set }
|
48
|
+
}
|
49
|
+
response
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
@@ -64,6 +64,10 @@ module Fog
|
|
64
64
|
when "modifying"
|
65
65
|
# TODO there are some fields that only applied after rebooting
|
66
66
|
if Time.now - self.data[:modify_time] >= Fog::Mock.delay
|
67
|
+
if new_id = server["PendingModifiedValues"] && server["PendingModifiedValues"]["DBInstanceIdentifier"]
|
68
|
+
self.data[:servers][new_id] = self.data[:servers].delete(server["DBInstanceIdentifier"])
|
69
|
+
end
|
70
|
+
|
67
71
|
server.merge!(server["PendingModifiedValues"])
|
68
72
|
server["PendingModifiedValues"] = {}
|
69
73
|
server["DBInstanceStatus"] = 'available'
|
@@ -34,7 +34,21 @@ module Fog
|
|
34
34
|
|
35
35
|
class Mock
|
36
36
|
def describe_db_parameters(name, opts={})
|
37
|
-
|
37
|
+
group = self.data[:parameter_groups][name]
|
38
|
+
|
39
|
+
unless group
|
40
|
+
raise Fog::AWS::RDS::NotFound.new("parameter group does not exist")
|
41
|
+
end
|
42
|
+
|
43
|
+
parameters = group[:parameters]
|
44
|
+
|
45
|
+
response = Excon::Response.new
|
46
|
+
response.body = {
|
47
|
+
"ResponseMetadata" => { "RequestId" => Fog::AWS::Mock.request_id },
|
48
|
+
"DescribeDBParametersResult" => { "Parameters" => parameters }
|
49
|
+
}
|
50
|
+
response.status = 200
|
51
|
+
response
|
38
52
|
end
|
39
53
|
end
|
40
54
|
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
module Fog
|
2
|
+
module AWS
|
3
|
+
class RDS
|
4
|
+
class Real
|
5
|
+
require 'fog/aws/parsers/rds/describe_engine_default_parameters'
|
6
|
+
|
7
|
+
# Returns the default engine and system parameter information for the specified database engine
|
8
|
+
# http://docs.aws.amazon.com/AmazonRDS/latest/APIReference/API_DescribeEngineDefaultParameters.html
|
9
|
+
#
|
10
|
+
# ==== Parameters ====
|
11
|
+
# * DBParameterGroupFamily<~String> - The name of the DB parameter group family
|
12
|
+
#
|
13
|
+
# ==== Returns ====
|
14
|
+
# * response<~Excon::Response>:
|
15
|
+
# * body<~Hash>:
|
16
|
+
|
17
|
+
def describe_engine_default_parameters(family, opts={})
|
18
|
+
request({
|
19
|
+
'Action' => 'DescribeEngineDefaultParameters',
|
20
|
+
'DBParameterGroupFamily' => family,
|
21
|
+
:parser => Fog::Parsers::AWS::RDS::DescribeEngineDefaultParameters.new,
|
22
|
+
}.merge(opts))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
class Mock
|
27
|
+
def describe_engine_default_parameters(family, opts={})
|
28
|
+
response = Excon::Response.new
|
29
|
+
|
30
|
+
response.status = 200
|
31
|
+
response.body = {
|
32
|
+
"ResponseMetadata" => { "RequestId" => Fog::AWS::Mock.request_id },
|
33
|
+
"DescribeEngineDefaultParametersResult" => { "Parameters" => self.data[:default_parameters]}
|
34
|
+
}
|
35
|
+
response
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
@@ -49,58 +49,61 @@ module Fog
|
|
49
49
|
def modify_db_instance(db_name, apply_immediately, _options={})
|
50
50
|
options = _options.dup
|
51
51
|
response = Excon::Response.new
|
52
|
+
if server = self.data[:servers][db_name]
|
53
|
+
if server["DBInstanceStatus"] != "available"
|
54
|
+
raise Fog::AWS::RDS::NotFound.new("DBInstance #{db_name} not available for modification")
|
55
|
+
else
|
56
|
+
self.data[:modify_time] = Time.now
|
57
|
+
# TODO verify the params options
|
58
|
+
# if apply_immediately is false, all the options go to pending_modified_values and then apply and clear after either
|
59
|
+
# a reboot or the maintainance window
|
60
|
+
#if apply_immediately
|
61
|
+
# modified_server = server.merge(options)
|
62
|
+
#else
|
63
|
+
# modified_server = server["PendingModifiedValues"].merge!(options) # it appends
|
64
|
+
#end
|
65
|
+
if options["NewDBInstanceIdentifier"]
|
66
|
+
options["DBInstanceIdentifier"] = options.delete("NewDBInstanceIdentifier")
|
67
|
+
options["Endpoint"] = {"Port" => server["Endpoint"]["Port"], "Address"=> Fog::AWS::Mock.rds_address(options["DBInstanceIdentifier"],region)}
|
68
|
+
end
|
69
|
+
|
70
|
+
rds_security_groups = self.data[:security_groups].values
|
71
|
+
ec2_security_groups = Fog::Compute::AWS::Mock.data[@region][@aws_access_key_id][:security_groups].values
|
72
|
+
|
73
|
+
db_security_group_names = Array(options.delete("DBSecurityGroups"))
|
74
|
+
db_security_groups = db_security_group_names.inject([]) do |r, group_name|
|
75
|
+
unless rds_security_groups.find { |sg| sg["DBSecurityGroupName"] == group_name }
|
76
|
+
raise Fog::AWS::RDS::Error.new("InvalidParameterValue => Invalid security group , groupId= , groupName=#{group_name}")
|
77
|
+
end
|
78
|
+
r << {"Status" => "active", "DBSecurityGroupName" => group_name }
|
79
|
+
end
|
80
|
+
|
81
|
+
vpc_security_groups = Array(options.delete("VpcSecurityGroups")).inject([]) do |r, group_id|
|
82
|
+
unless ec2_security_groups.find { |sg| sg["groupId"] == group_id }
|
83
|
+
raise Fog::AWS::RDS::Error.new("InvalidParameterValue => Invalid security group , groupId=#{group_id} , groupName=")
|
84
|
+
end
|
85
|
+
|
86
|
+
r << {"Status" => "active", "VpcSecurityGroupId" => group_id }
|
87
|
+
end
|
88
|
+
|
89
|
+
options.merge!(
|
90
|
+
"DBSecurityGroups" => db_security_groups,
|
91
|
+
"VpcSecurityGroups" => vpc_security_groups
|
92
|
+
)
|
93
|
+
|
94
|
+
self.data[:servers][db_name]["PendingModifiedValues"].merge!(options) # it appends
|
95
|
+
self.data[:servers][db_name]["DBInstanceStatus"] = "modifying"
|
96
|
+
response.status = 200
|
97
|
+
response.body = {
|
98
|
+
"ResponseMetadata" => { "RequestId" => Fog::AWS::Mock.request_id },
|
99
|
+
"ModifyDBInstanceResult" => { "DBInstance" => self.data[:servers][db_name] }
|
100
|
+
}
|
101
|
+
response
|
52
102
|
|
53
|
-
server = self.data[:servers][db_name]
|
54
|
-
|
55
|
-
if server.nil?
|
56
|
-
raise Fog::AWS::RDS::NotFound.new("DBInstance #{db_name} not found")
|
57
|
-
end
|
58
|
-
|
59
|
-
if server["DBInstanceStatus"] != "available"
|
60
|
-
raise Fog::AWS::RDS::NotFound.new("DBInstance #{db_name} not available for modification")
|
61
|
-
end
|
62
|
-
|
63
|
-
db_security_group_names = Array(options.delete("DBSecurityGroups"))
|
64
|
-
|
65
|
-
rds_security_groups = self.data[:security_groups].values
|
66
|
-
|
67
|
-
db_security_groups = db_security_group_names.map do |r, group_name|
|
68
|
-
unless rds_security_groups.find { |sg| sg["DBSecurityGroupName"] == group_name }
|
69
|
-
raise Fog::AWS::RDS::Error.new("InvalidParameterValue => Invalid security group , groupId= , groupName=#{group_name}")
|
70
|
-
end
|
71
|
-
r << {"Status" => "active", "DBSecurityGroupName" => group_name }
|
72
|
-
end
|
73
|
-
|
74
|
-
ec2_security_groups = Fog::Compute::AWS::Mock.data[@region][@aws_access_key_id][:security_groups].values
|
75
|
-
|
76
|
-
vpc_security_groups = Array(options.delete("VpcSecurityGroups")).map do |group_id|
|
77
|
-
unless ec2_security_groups.find { |sg| sg["groupId"] == group_id }
|
78
|
-
raise Fog::AWS::RDS::Error.new("InvalidParameterValue => Invalid security group , groupId=#{group_id} , groupName=")
|
79
103
|
end
|
80
|
-
|
81
|
-
|
82
|
-
end
|
83
|
-
|
84
|
-
options.merge!(
|
85
|
-
"DBSecurityGroups" => db_security_groups,
|
86
|
-
"VpcSecurityGroups" => vpc_security_groups
|
87
|
-
)
|
88
|
-
|
89
|
-
if options["NewDBInstanceIdentifier"]
|
90
|
-
options["DBInstanceIdentifier"] = options.delete("NewDBInstanceIdentifier")
|
104
|
+
else
|
105
|
+
raise Fog::AWS::RDS::NotFound.new("DBInstance #{db_name} not found")
|
91
106
|
end
|
92
|
-
|
93
|
-
self.data[:modify_time] = Time.now
|
94
|
-
server["PendingModifiedValues"].merge!(options)
|
95
|
-
server["DBInstanceStatus"] = "modifying"
|
96
|
-
|
97
|
-
response.status = 200
|
98
|
-
response.body = {
|
99
|
-
"ResponseMetadata" => { "RequestId" => Fog::AWS::Mock.request_id },
|
100
|
-
"ModifyDBInstanceResult" => { "DBInstance" => server }
|
101
|
-
}
|
102
|
-
|
103
|
-
response
|
104
107
|
end
|
105
108
|
end
|
106
109
|
end
|
@@ -42,7 +42,34 @@ module Fog
|
|
42
42
|
|
43
43
|
class Mock
|
44
44
|
def modify_db_parameter_group(group_name, parameters)
|
45
|
-
|
45
|
+
group = self.data[:parameter_groups][group_name]
|
46
|
+
|
47
|
+
unless group
|
48
|
+
raise Fog::AWS::RDS::NotFound.new("Parameter group not found")
|
49
|
+
end
|
50
|
+
|
51
|
+
parameters.each do |p|
|
52
|
+
p.merge!(
|
53
|
+
"Source" => "user",
|
54
|
+
"IsModifiable" => true,
|
55
|
+
"Description" => "some string",
|
56
|
+
"DataType" => "string",
|
57
|
+
"AllowedValues" => p["ParameterValue"],
|
58
|
+
"ApplyType" => "dynamic"
|
59
|
+
)
|
60
|
+
end
|
61
|
+
|
62
|
+
group[:parameters] = parameters
|
63
|
+
|
64
|
+
self.data[:parameter_groups][group_name] = group
|
65
|
+
|
66
|
+
response = Excon::Response.new
|
67
|
+
response.body = {
|
68
|
+
"ResponseMetadata" => {"RequestId" => Fog::AWS::Mock.request_id},
|
69
|
+
"ModifyDBParameterGroupResult" => {"DBParameterGroupName" => group_name}
|
70
|
+
}
|
71
|
+
response.status = 200
|
72
|
+
response
|
46
73
|
end
|
47
74
|
end
|
48
75
|
end
|
@@ -20,8 +20,69 @@ module Fog
|
|
20
20
|
end
|
21
21
|
|
22
22
|
class Mock
|
23
|
-
def restore_db_instance_from_db_snapshot(snapshot_id,
|
24
|
-
|
23
|
+
def restore_db_instance_from_db_snapshot(snapshot_id, db_name, options={})
|
24
|
+
|
25
|
+
if self.data[:servers] and self.data[:servers][db_name]
|
26
|
+
raise Fog::AWS::RDS::IdentifierTaken.new("DBInstanceAlreadyExists #{response.body.to_s}")
|
27
|
+
end
|
28
|
+
|
29
|
+
unless self.data[:snapshots] and snapshot = self.data[:snapshots][snapshot_id]
|
30
|
+
raise Fog::AWS::RDS::NotFound.new("DBSnapshotNotFound #{response.body.to_s}")
|
31
|
+
end
|
32
|
+
|
33
|
+
if !!options["MultiAZ"] && !!options["AvailabilityZone"]
|
34
|
+
raise Fog::AWS::RDS::InvalidParameterCombination.new('Requesting a specific availability zone is not valid for Multi-AZ instances.')
|
35
|
+
end
|
36
|
+
|
37
|
+
option_group_membership =
|
38
|
+
if option_group_name = options['OptionGroupName']
|
39
|
+
[{ 'OptionGroupMembership' =>
|
40
|
+
[{ 'OptionGroupName' => option_group_name, 'Status' => "pending-apply"}] }]
|
41
|
+
else
|
42
|
+
[{ 'OptionGroupMembership' =>
|
43
|
+
[{ 'OptionGroupName' => 'default: mysql-5.6', 'Status' => "pending-apply"}] }]
|
44
|
+
end
|
45
|
+
|
46
|
+
data = {
|
47
|
+
"AllocatedStorage" => snapshot['AllocatedStorage'],
|
48
|
+
"AutoMinorVersionUpgrade" => options['AutoMinorVersionUpgrade'].nil? ? true : options['AutoMinorVersionUpgrade'],
|
49
|
+
"AvailabilityZone" => options['AvailabilityZone'],
|
50
|
+
"BackupRetentionPeriod" => options['BackupRetentionPeriod'] || 1,
|
51
|
+
"CACertificateIdentifier" => 'rds-ca-2015',
|
52
|
+
"DBInstanceClass" => options['DBInstanceClass'] || 'db.m3.medium',
|
53
|
+
"DBInstanceIdentifier" => db_name,
|
54
|
+
"DBInstanceStatus" => 'creating',
|
55
|
+
"DBName" => options['DBName'],
|
56
|
+
"DBParameterGroups" => [{'DBParameterGroupName'=>'default.mysql5.5', 'ParameterApplyStatus'=>'in-sync'}],
|
57
|
+
"DBSecurityGroups" => [{'Status'=>'active', 'DBSecurityGroupName'=>'default'}],
|
58
|
+
"Endpoint" => {},
|
59
|
+
"Engine" => options['Engine'] || snapshot['Engine'],
|
60
|
+
"EngineVersion" => options['EngineVersion'] || snapshot['EngineVersion'],
|
61
|
+
"InstanceCreateTime" => nil,
|
62
|
+
"Iops" => options['Iops'],
|
63
|
+
"LicenseModel" => options['LicenseModel'] || snapshot['LicenseModel'] || 'general-public-license',
|
64
|
+
"MasterUsername" => options['MasterUsername'] || snapshot['MasterUsername'],
|
65
|
+
"MultiAZ" => !!options['MultiAZ'],
|
66
|
+
"OptiongroupMemberships" => option_group_membership,
|
67
|
+
"PendingModifiedValues" => { 'MasterUserPassword' => '****' }, # This clears when is available
|
68
|
+
"PreferredBackupWindow" => '08:00-08:30',
|
69
|
+
"PreferredMaintenanceWindow" => 'mon:04:30-mon:05:00',
|
70
|
+
"PubliclyAccessible" => true,
|
71
|
+
"ReadReplicaDBInstanceIdentifiers" => [],
|
72
|
+
"StorageType" => options['StorageType'] || (options['Iops'] ? 'io1' : 'standard'),
|
73
|
+
"VpcSecurityGroups" => nil,
|
74
|
+
"StorageEncrypted" => false,
|
75
|
+
}
|
76
|
+
|
77
|
+
self.data[:servers][db_name] = data
|
78
|
+
response = Excon::Response.new
|
79
|
+
response.body =
|
80
|
+
{ "ResponseMetadata" => { "RequestId" => Fog::AWS::Mock.request_id },
|
81
|
+
"RestoreDBInstanceFromDBSnapshotResult" => { "DBInstance" => data }
|
82
|
+
}
|
83
|
+
response.status = 200
|
84
|
+
self.data[:servers][db_name]["InstanceCreateTime"] = Time.now
|
85
|
+
response
|
25
86
|
end
|
26
87
|
end
|
27
88
|
end
|
data/lib/fog/aws/version.rb
CHANGED
@@ -0,0 +1,54 @@
|
|
1
|
+
Shindo.tests("AWS::RDS | cluster", ["aws", "rds"]) do
|
2
|
+
model_tests(Fog::AWS[:rds].clusters, rds_default_cluster_params) do
|
3
|
+
@cluster_id = @instance.id
|
4
|
+
@instance.wait_for(20*60) { ready? }
|
5
|
+
@cluster_with_final_snapshot = Fog::AWS[:rds].clusters.create(rds_default_cluster_params.merge(:id => uniq_id("fog-snapshot-test"), :backup_retention_period => 1))
|
6
|
+
|
7
|
+
tests("#servers") do
|
8
|
+
returns([]) { @instance.servers }
|
9
|
+
end
|
10
|
+
|
11
|
+
@server = Fog::AWS[:rds].servers.create(rds_default_server_params.reject { |k,v| [:allocated_storage, :master_username, :password, :backup_retention_period].include?(k) }.merge(:engine => "aurora", :cluster_id => @instance.id, :flavor_id => "db.r3.large"))
|
12
|
+
@server.wait_for(20*60) { ready? }
|
13
|
+
|
14
|
+
tests("#servers") do
|
15
|
+
@instance.reload
|
16
|
+
returns([{"DBInstanceIdentifier" => @server.id, "master" => true}]) { @instance.db_cluster_members }
|
17
|
+
returns([@server]) { @instance.servers }
|
18
|
+
end
|
19
|
+
|
20
|
+
tests("#snapshots") do
|
21
|
+
returns([]) { @instance.snapshots }
|
22
|
+
|
23
|
+
snapshot_id = uniq_id("manual-snapshot")
|
24
|
+
snapshot = @instance.snapshots.create(:id => snapshot_id)
|
25
|
+
returns(snapshot_id) { snapshot.id }
|
26
|
+
snapshot.wait_for { ready? }
|
27
|
+
returns([snapshot.id]) { @instance.snapshots.map(&:id) }
|
28
|
+
snapshot.destroy
|
29
|
+
end
|
30
|
+
|
31
|
+
tests("#destroy") do
|
32
|
+
snapshot_id = uniq_id("fog-snapshot")
|
33
|
+
|
34
|
+
@instance.servers.map(&:destroy)
|
35
|
+
|
36
|
+
@cluster_with_final_snapshot.wait_for(20*60) { ready? }
|
37
|
+
@cluster_with_final_snapshot.destroy(snapshot_id)
|
38
|
+
|
39
|
+
snapshot = Fog::AWS[:rds].cluster_snapshots.get(snapshot_id)
|
40
|
+
snapshot.wait_for { ready? }
|
41
|
+
returns(snapshot_id) { snapshot.id }
|
42
|
+
snapshot.destroy
|
43
|
+
end
|
44
|
+
|
45
|
+
after do
|
46
|
+
if cluster = Fog::AWS[:rds].clusters.get(@cluster_id)
|
47
|
+
unless cluster.state = 'deleting'
|
48
|
+
cluster.servers.map(&:destroy)
|
49
|
+
cluster.destroy
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
data/tests/models/rds/helper.rb
CHANGED
@@ -10,3 +10,16 @@ def rds_default_server_params
|
|
10
10
|
:flavor_id => 'db.m3.medium',
|
11
11
|
}
|
12
12
|
end
|
13
|
+
|
14
|
+
def rds_default_cluster_params
|
15
|
+
{
|
16
|
+
:allocated_storage => 50,
|
17
|
+
:backup_retention_period => 10,
|
18
|
+
:engine => "aurora",
|
19
|
+
:version => "5.6.10a",
|
20
|
+
:id => uniq_id,
|
21
|
+
:master_username => "fogclusteruser",
|
22
|
+
:password => "fogpassword",
|
23
|
+
:flavor_id => "db.r3.large"
|
24
|
+
}
|
25
|
+
end
|
@@ -6,6 +6,7 @@ Shindo.tests("AWS::RDS | server", ['aws', 'rds']) do
|
|
6
6
|
|
7
7
|
@instance.wait_for(20*60) { ready? }
|
8
8
|
@instance_with_encrypted_storage.wait_for(20*60) { ready? }
|
9
|
+
@final_snapshot_id = uniq_id('fog-test-snapshot')
|
9
10
|
|
10
11
|
tests("#storage_encrypted") do
|
11
12
|
returns(true) { @instance_with_encrypted_storage.storage_encrypted }
|
@@ -114,12 +115,11 @@ Shindo.tests("AWS::RDS | server", ['aws', 'rds']) do
|
|
114
115
|
replica && replica.destroy
|
115
116
|
|
116
117
|
test("Destroying with a final snapshot") do
|
117
|
-
final_snapshot_id = uniq_id('fog-test-snapshot')
|
118
118
|
|
119
119
|
@instance_with_final_snapshot.wait_for { ready? }
|
120
|
-
@instance_with_final_snapshot.destroy(final_snapshot_id)
|
120
|
+
@instance_with_final_snapshot.destroy(@final_snapshot_id)
|
121
121
|
returns(true, "Final snapshot created") do
|
122
|
-
@final_snapshot = Fog::AWS[:rds].snapshots.get(final_snapshot_id)
|
122
|
+
@final_snapshot = Fog::AWS[:rds].snapshots.get(@final_snapshot_id)
|
123
123
|
!@final_snapshot.nil?
|
124
124
|
end
|
125
125
|
|