When the trove.taskmanager.models.FreshInstanceTasks#_create_server_volume_individually path is used, cinderclient is used to create the volume and then that volume is supplied in the block_device_mapping (BDM) in the novaclient call. delete_on_terminate is set to True in that BDM. However, in a scenario in which cinderclient succeeds and the subsequent novaclient fails (e.g. quota), the volume is not cleaned up since there is no nova server.
relevant code-path: https://github.com/openstack/trove/blob/1654031cc6b0fa28efb322717efabf2bebffabf8/trove/taskmanager/models.py#L583-L597
this is not good, because the quotas are rolled back, meaning there's a provisioned volume that's not accounted for.
Fix proposed to branch: master /review. openstack. org/125550
Review: https:/