Schedule Snapshot Design
||Renaming VMSS fields and APIs. API message_create superseeds vmss_create_alerts.
||Remove VMSS alarm_config details and use existing pool wide alarm config
||Renaming field from retention-value to retained-snapshots and schedule-snapshot to scheduled-snapshot
||Add new API task_set_status
The scheduled snapshot feature will utilize the existing architecture of VMPR. In terms of functionality, scheduled snapshot is basically VMPR without its archiving capability.
- Schedule snapshot will be a new object in xapi as VMSS.
- A pool can have multiple VMSS.
- Multiple VMs can be a part of VMSS but a VM cannot be a part of multiple VMSS.
- A VMSS takes VMs snapshot with type [
- VMSS takes snapshot of VMs on configured intervals:
hourly -> On everyday, Each hour, Mins [0;15;30;45]
daily -> On everyday, Hour [0 to 23], Mins [0;15;30;45]
weekly -> Days [
Sunday], Hour[0 to 23], Mins [0;15;30;45]
- VMSS will have a limit on retaining number of VM snapshots in range [1 to 10].
- There will be a cron job for VMSS.
- VMSS plugin will go through all the scheduled snapshot policies in the pool and check if any of them are due.
- If a snapshot is due then : Go through all the VM objects in XAPI associated with this scheduled snapshot policy and create a new snapshot.
- If the snapshot operation fails, create a notification alert for the event and move to the next VM.
- Check if an older snapshot now needs to be deleted to comply with the retained snapshots defined in the scheduled policy.
- If we need to delete any existing snapshots, delete the oldest snapshot created via scheduled policy.
- Set the last-run timestamp in the scheduled policy.
There is a new record for VM Scheduled Snapshot with new fields.
String : Name label for VMSS.
String : Name description for VMSS.
Bool : Enable/Disable VMSS to take snapshot.
snapshot_with_quiesce] : Type of snapshot VMSS takes.
Int64 : Number of snapshots limit for a VM, max limit is 10 and default is 7.
weekly] : Frequency of taking snapshot of VMs.
Map(String,String) with (key, value) pair:
- hour : 0 to 23
- min : [0;15;30;45]
- days : [
last-run-time type Date : DateTime of last execution of VMSS.
VMs type VM refs : List of VMs part of VMSS.
New fields to VM record:
scheduled-snapshot type VMSS ref : VM part of VMSS.
is-vmss-snapshot type Bool : If snapshot created from VMSS.
- vmss_snapshot_now (Ref vmss, Pool_Operater) -> String : This call executes the scheduled snapshot immediately.
- vmss_set_retained_snapshots (Ref vmss, Int value, Pool_Operater) -> unit : Set the value of vmss retained snapshots, max is 10.
- vmss_set_frequency (Ref vmss, String “value”, Pool_Operater) -> unit : Set the value of the vmss frequency field.
- vmss_set_type (Ref vmss, String “value”, Pool_Operater) -> unit : Set the snapshot type of the vmss type field.
- vmss_set_scheduled (Ref vmss, Map(String,String) “value”, Pool_Operater) -> unit : Set the vmss scheduled to take snapshot.
- vmss_add_to_schedule (Ref vmss, String “key”, String “value”, Pool_Operater) -> unit : Add key value pair to VMSS schedule.
- vmss_remove_from_schedule (Ref vmss, String “key”, Pool_Operater) -> unit : Remove key from VMSS schedule.
- vmss_set_last_run_time (Ref vmss, DateTime “value”, Local_Root) -> unit : Set the last run time for VMSS.
- task_set_status (Ref task, status_type “value”, READ_ONLY) -> unit : Set the status of task owned by same user, Pool_Operator can set status for any tasks.
- vmss-create (required : “name-label”;”type”;”frequency”, optional : “name-description”;”enabled”;”schedule:”;”retained-snapshots”) -> unit : Creates VM scheduled snapshot.
- vmss-destroy (required : uuid) -> unit : Destroys a VM scheduled snapshot.