Trove/IncrementalBackupSequenceForceDelete

Description
Incremental backups Wiki page

Use case:
 * I can create N chained incremental backups in a row.
 * I can delete any backup i want by its ID.
 * I can't successfuly restore instance if one(or more) backup(from incremental sequence) is missing.

Justification

 * If one(or more) of the incremental sequence item missing user wouldn't be able to successfuly restore an instance because certain deltas are missing and there would be no guaranteed consistency.

Benefits

 * Guaranteed consistency while restoring instance from incremental backup sequence.

Impacts

 * From user perspective behaviour would be slightly changed:


 * user would not be able to delete single backup if given backup is a parent of any tenant-owned backup (see bug-report)
 * user would be able to to delete incremental backup sequence of any lenght from starting from given backup
 * user would still be able to delete single backup if it doesn't have any childs
 * Trove API will ignore 'force_delete' flag if given backup has no childs
 * Trove API will recursively delete all backups (dependent on given) starting from given.

Configuration
None

Database
None

Public API
None

CLI interface
Changes backup-delete shell call:

trove backup-delete  --force-delete True

where: --force-delete - allows Trove-API to delete all incremental backups sequence starting from given backup.

ReST Part
Changes backup-delete API:

HTTP method: Delete

Route /{tenant_id}/backups/{backup_id}

Body: {     'force_delete': True }

Internal API
- No. Implementation will reuse existing internal API.
 * Does this change any internal messages between API and Task Manager or Task Manager to Guest?

RPC API description
None

Guest Agent
- No. Task will be executed within Trove API and Taskamanger services.
 * Does this change behavior on the Guest Agent? If so, is it backwards compatible with API and Task Manager?