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.
Files changed (58) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +4 -0
  4. data/README.md +1 -1
  5. data/gemfiles/Gemfile-edge +5 -0
  6. data/lib/fog/aws/models/compute/security_group.rb +4 -4
  7. data/lib/fog/aws/models/rds/cluster.rb +93 -0
  8. data/lib/fog/aws/models/rds/cluster_snapshots.rb +48 -0
  9. data/lib/fog/aws/models/rds/clusters.rb +23 -0
  10. data/lib/fog/aws/models/rds/parameters.rb +15 -0
  11. data/lib/fog/aws/models/rds/server.rb +29 -11
  12. data/lib/fog/aws/models/rds/servers.rb +4 -0
  13. data/lib/fog/aws/models/rds/snapshot.rb +36 -17
  14. data/lib/fog/aws/parsers/rds/create_db_cluster.rb +32 -0
  15. data/lib/fog/aws/parsers/rds/create_db_cluster_snapshot.rb +33 -0
  16. data/lib/fog/aws/parsers/rds/db_cluster_parser.rb +71 -0
  17. data/lib/fog/aws/parsers/rds/db_cluster_snapshot_parser.rb +32 -0
  18. data/lib/fog/aws/parsers/rds/db_parameter_parser.rb +30 -0
  19. data/lib/fog/aws/parsers/rds/db_parser.rb +2 -1
  20. data/lib/fog/aws/parsers/rds/delete_db_cluster.rb +32 -0
  21. data/lib/fog/aws/parsers/rds/delete_db_cluster_snapshot.rb +32 -0
  22. data/lib/fog/aws/parsers/rds/describe_db_cluster_snapshots.rb +34 -0
  23. data/lib/fog/aws/parsers/rds/describe_db_clusters.rb +34 -0
  24. data/lib/fog/aws/parsers/rds/describe_engine_default_parameters.rb +34 -0
  25. data/lib/fog/aws/parsers/rds/restore_db_instance_from_db_snapshot.rb +2 -2
  26. data/lib/fog/aws/parsers/rds/snapshot_parser.rb +6 -13
  27. data/lib/fog/aws/rds.rb +25 -0
  28. data/lib/fog/aws/requests/compute/describe_availability_zones.rb +5 -2
  29. data/lib/fog/aws/requests/rds/create_db_cluster.rb +98 -0
  30. data/lib/fog/aws/requests/rds/create_db_cluster_snapshot.rb +68 -0
  31. data/lib/fog/aws/requests/rds/create_db_instance.rb +42 -4
  32. data/lib/fog/aws/requests/rds/create_db_snapshot.rb +1 -1
  33. data/lib/fog/aws/requests/rds/delete_db_cluster.rb +55 -0
  34. data/lib/fog/aws/requests/rds/delete_db_cluster_snapshot.rb +43 -0
  35. data/lib/fog/aws/requests/rds/delete_db_instance.rb +9 -0
  36. data/lib/fog/aws/requests/rds/delete_db_snapshot.rb +2 -1
  37. data/lib/fog/aws/requests/rds/describe_db_cluster_snapshots.rb +66 -0
  38. data/lib/fog/aws/requests/rds/describe_db_clusters.rb +54 -0
  39. data/lib/fog/aws/requests/rds/describe_db_instances.rb +4 -0
  40. data/lib/fog/aws/requests/rds/describe_db_parameters.rb +15 -1
  41. data/lib/fog/aws/requests/rds/describe_engine_default_parameters.rb +40 -0
  42. data/lib/fog/aws/requests/rds/modify_db_instance.rb +52 -49
  43. data/lib/fog/aws/requests/rds/modify_db_parameter_group.rb +28 -1
  44. data/lib/fog/aws/requests/rds/restore_db_instance_from_db_snapshot.rb +63 -2
  45. data/lib/fog/aws/version.rb +1 -1
  46. data/tests/models/rds/cluster_tests.rb +54 -0
  47. data/tests/models/rds/clusters_tests.rb +5 -0
  48. data/tests/models/rds/helper.rb +13 -0
  49. data/tests/models/rds/server_tests.rb +3 -3
  50. data/tests/models/rds/servers_tests.rb +18 -0
  51. data/tests/requests/compute/instance_tests.rb +2 -3
  52. data/tests/requests/rds/cluster_snapshot_tests.rb +43 -0
  53. data/tests/requests/rds/cluster_tests.rb +37 -0
  54. data/tests/requests/rds/helper.rb +84 -0
  55. data/tests/requests/rds/instance_tests.rb +16 -4
  56. data/tests/requests/rds/parameter_group_tests.rb +1 -1
  57. data/tests/requests/rds/parameter_request_tests.rb +0 -2
  58. 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
- Fog::Mock.not_implemented
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
- {"Status" => "active", "VpcSecurityGroupId" => group_id }
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
- Fog::Mock.not_implemented
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, db_id, options={})
24
- Fog::Mock.not_implemented
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
@@ -1,5 +1,5 @@
1
1
  module Fog
2
2
  module AWS
3
- VERSION = "0.8.1"
3
+ VERSION = "0.9.0"
4
4
  end
5
5
  end
@@ -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
@@ -0,0 +1,5 @@
1
+ Shindo.tests("AWS::RDS | clusters", ["aws", "rds"]) do
2
+ collection_tests(Fog::AWS[:rds].clusters, rds_default_cluster_params) do
3
+ @instance.wait_for { ready? }
4
+ end
5
+ end
@@ -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