fog-aws 0.8.1 → 0.9.0

Sign up to get free protection for your applications and to get access to all the features.
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