rebuild_instance doesn't detach cinder volumes correctly
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
OpenStack Compute (nova) |
In Progress
|
Low
|
David McNally |
Bug Description
The compute manager's rebuild_instance doesn't detach a volume correctly prior to trying to stand up the vm again.
https:/
rebuild_instance() defines detach_
This doesn't actually detach anything. Cinder's detach API just updates the record of the volume in the Cinder DB.
https:/
The cinder volume manager calls the cinder driver's detach_volume method, which doesn't actually detach anything.
The proper way to detach a volume is to call terminate_
Nova compute manager detach_volume does this correctly
https:/
I have included a stack dump of what happens due to this.
Changed in nova: | |
status: | New → Confirmed |
importance: | Undecided → Low |
Changed in nova: | |
assignee: | Loganathan Parthipan (parthipan) → nobody |
Changed in nova: | |
assignee: | nobody → David McNally (dave-mcnally) |
tags: | added: volumes |
IMHO, we may have got the context wrong here. You only need to remove the volume from libvirt and not do anything beyond it. Calling a full detach preceded by volume_termination will make the volumes available for other instances and this is not what we want.
I think the original error in the rebuild is calling volume_api.detach() instead of just self._detach_ volume( ). What do you all say?