Add a "remove_dep" api to allow user to remove all dependency to a given volume

Registered by Xiaoxi Chen

willing to allow user to use something like
   cinder volume remove_dep <vol_id>
This API all will remove all dependency to the given volume.Including CoW snapshot and CoW child volumes.
 After this call, the volume with given vol_id is safe for delete.

Blueprint information

Status:
Complete
Approver:
None
Priority:
Undefined
Drafter:
Xiaoxi Chen
Direction:
Needs approval
Assignee:
Xiaoxi Chen
Definition:
Obsolete
Series goal:
None
Implementation:
Started
Milestone target:
None
Started by
Xiaoxi Chen
Completed by
Sean McGinnis

Related branches

Sprints

Whiteboard

(smcginnis): Marking obsolete as this has been sitting out there for a long time. If this is still needed, please submit a new bp.

>What's the difference between remove_dep and flatten vol? I thought they were the same. >Actually, remove dependency sounds more generic than flatten volume.

If a Volume A has a snapshot S, and a child volume B is cloned from S.

Cinder volume remove_dep <id of volume A> will iterate across all snapshots and child volumes of A, that's B and S in this example, so it will flat both B and S. Suppose this api will only be used by superadmin of a tenant.
Use case: admin want to remove a volume template.

Cinder volume flat <id of volume B> will only flat volume B.This may be called the owner of volume B. Actually,remove_dep may depends on this.
Use case:
1.dependency of remove_dep
2.some user just do not want a CoW mechanism , because CoW will slow down the write requests.so they can use this API to make their volume flatten.

(?)

Work Items

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.