This framework provides CloudStack users the ability to backup their guest VMs for recovery purposes, in case they suffer a hardware or software issue with their instances or the underlying infrastructure. This framework allows CloudStack to be integrated with Backup and Recovery providers, as pluggable solutions. Each provider should implement the backup and recovery methods provided by the framework in their own way. Previous draft: Backup & Recovery
Users wish to be able to back up their guest instances for recovery purposes should they suffer a hardware or software issue.
The current mechanism which users leverage is the volume snapshot feature as this has the feature set closest to that of a backup regime. i.e. images are stored on alternate location (although this may actually be the same physical array) it can be scheduled and users can set how many backups can be kept.
The volume snapshot mechanism causes a VM snapshot to be taken, then the required volume transferred to secondary storage from a hypervisor host in the cluster within which the VM resides. In the case of VMware, the image is compressed into an OVA by the SSVM.
This transfer can be slow and at times unreliable. Also the user cannot snapshot other volumes attached to the VM during this time, nor perform a number of other BAU operations. Large transfers and concurrency issues can saturate available bandwidth on network or storage.
The requirements for the a feature to fix this problem are:
It is possible to register a Backup and Recovery provider per zone. The entry point for each API request is the BackupManager. The BackupManager invokes the corresponding BackupProvider registered in a zone, and it should communicate with the Backup and Recovery provider API Server. A high level representation of this is shown in the following diagram:

The Backup and Recovery framework defines new functionalities which should be implemented by each Backup and Recovery provider plugin as a pluggable solution.
For administrators:
Backend Configuration related:
Offering assignment based:
Backup operational APIs:
User-defined backup schedule:
This feature introduces changes in the schema, adding the following entities:
Each Backup and Recovery provider plugin in CloudStack should implement the BackupProvider interface.
A dummy Backup and Recovery provider is already created for testing purposes.
Zone level settings for registering a Backup and Recovery provider