Removing a Cinder disk might fail because the engine removes all the Cinder disk's volumes/snapshots at the same time and Cinder doesn't support remove of a Cinder volume if it has snapshots which are based on it.
Disks are failed to be deleted from Cinder
Implementing a recursive way to remove Cinder volumes.
As part of this implementation the behavior should be as follow:
When trying to remove a Cinder disk we aggregate all the volumes of the
Cinder disk, snapshots and Cinder volumes (commited snapshots).
Then we execute them one at a time, if there is a failure in the middle
we change the disk status to illegal and fail the command.
Once an illegal Cinder disk is being removed we only remove the Cinder
disk and its volumes from the DB, without removing it from the Cinder