Add an option to auto create a full backup when requesting to create an incremental one on a volume whose size or SHA block size changes.

Registered by Nguyen Luu Hoang Minh

Problem description:
Currently, when a volume size or SHA block size changes since the last backup, requests to create an incremental backup from that volume raises exceptions and user are asked to create a full backup instead.

This is because of SHA calculation and comparison of incremental backup which ensure SHA block size and volume size to be consistent. I call this a "checkpoint" of a volume in backup perspective.

Any changes (size extended, sha block sizes changes) that cause incremental backup to fail can be considered a "checkpoint".

Sometimes user try to automate a chain of requests to create incremental backup on a volume. When the volume size is extended ('checkpoint') the chain will fail and the user has to manually create a full backup.

-> I propose a way that when user send a request to create incremental backup, it can automatically check whenever a volume is at a "checkpoint" to create a full backup instead.

Proposed solution:
Add a parameter to enable this mode and set default value = False.
Some names to be chosen:
- auto_full_on_resize
- auto_full_on_checkpoint

Example usages:
With python-openstackclient:

Suppose volume A has changed its size.
openstack volume backup create --incremental <<volume_A_id>>
=> Raise exception an ask the user to create a full backup.

openstack volume backup create --incremental --auto-full-on-checkpoint <<volume_A_id>>
=> Create a full backup instead of incremental.

With openstacksdk:
client.block_storage.create_backup(volume_id="vol_id", is_incremental=True, auto_full_on_checkpoint=True)

Affected components (estimated):
cinder-backup, cinder-api, openstacksdk, python-openstackclient

Blueprint information

Status:
Not started
Approver:
None
Priority:
Undefined
Drafter:
Nguyen Luu Hoang Minh
Direction:
Needs approval
Assignee:
None
Definition:
New
Series goal:
None
Implementation:
Unknown
Milestone target:
None

Related branches

Sprints

Whiteboard

(?)

Work Items

This blueprint contains Public information 
Everyone can see this information.

Subscribers

No subscribers.