Implementing snapshots on rds delete

This commit is contained in:
Jack Danger Canty 2017-06-20 14:00:56 -07:00
parent ccb4ffde7c
commit fb2efb1c6d
2 changed files with 7 additions and 4 deletions

View File

@ -114,7 +114,8 @@ class RDSResponse(BaseResponse):
def delete_db_instance(self):
db_instance_identifier = self._get_param('DBInstanceIdentifier')
database = self.backend.delete_database(db_instance_identifier)
db_snapshot_name = self._get_param('FinalDBSnapshotIdentifier')
database = self.backend.delete_database(db_instance_identifier, db_snapshot_name)
template = self.response_template(DELETE_DATABASE_TEMPLATE)
return template.render(database=database)

View File

@ -403,10 +403,10 @@ class Database(BaseModel):
class Snapshot(BaseModel):
def __init__(self, database, snapshot_id, tags):
def __init__(self, database, snapshot_id, tags=None):
self.database = database
self.snapshot_id = snapshot_id
self.tags = tags
self.tags = tags or []
self.created_at = iso_8601_datetime_with_milliseconds(datetime.datetime.now())
@property
@ -746,13 +746,15 @@ class RDS2Backend(BaseBackend):
return backend.describe_databases(db_name)[0]
def delete_database(self, db_instance_identifier):
def delete_database(self, db_instance_identifier, db_snapshot_name):
if db_instance_identifier in self.databases:
database = self.databases.pop(db_instance_identifier)
if database.is_replica:
primary = self.find_db_from_id(database.source_db_identifier)
primary.remove_replica(database)
database.status = 'deleting'
if db_snapshot_name:
self.snapshots[db_snapshot_name] = Snapshot(database, db_snapshot_name)
return database
else:
raise DBInstanceNotFoundError(db_instance_identifier)