It might be a good idea to expose "block_device_allocate_retries" as a dedicated config option in charm although it can be tweaked by "config-flags" option easily.
"block_device_allocate_retries" is an option I change in every engagement Windows guests are involved. The default block device attachment time out is 3 minutes (block_device_allocate_retries_interval=3 * block_device_allocate_retries=60 = 180 seconds). It may not be enough to download 10+ GB Windows image and convert it from QCOW2 to RAW (if the image was uploaded as QCOW2 originally and needs to be converted to RAW for Ceph backend).
I usually bump "block_device_allocate_retries" to 300 to set the timeout as 15 min to be safe (block_device_allocate_retries_interval=3 * block_device_allocate_retries=300 = 900 seconds).
block_device_allocate_retries_interval = 3
> (Integer) Interval (in seconds) between block device allocation retries on failures.
>
> This option allows the user to specify the time interval between consecutive retries. ‘block_device_allocate_retries’ option specifies the maximum number of retries.
block_device_allocate_retries = 60
> (Integer) Number of times to retry block device allocation on failures. Starting with Liberty, Cinder can use image volume cache. This may help with block device allocation performance. Look at the cinder image_volume_cache_enabled configuration option.
I agree with changing this and I think we should set the default to 10 or 15 minutes.
Many environments use qcow2 but with ceph volumes which requires the cinder node to download the volume, then convert it, then upload it. Usually using a HDD on the root disk. This both thrashes the HDD on these nodes affecting performance. But also if you try to create more than 2-6 VMs at once it will almost certainly timeout with the default (120) or even 240.