This fixes a regression from some local delete code added for cells v2
where it assumed that if an instance did not have a host, it wasn't
scheduled to a cell yet. That assumption misses the fact that the
instance won't have a host if it was shelved offloaded. And to be
shelved offloaded, the instance had to have first been built on a host
in a cell.
So we simply duplicate the same check as later in the _delete() method
for instance.host or shelved-offloaded to decide what the case is.
Obviously this is all a giant mess of duplicate delete path code that
needs to be unwound, and that's the plan, but first we're fixing
regressions and then we can start rolling this duplication all back
so we can get back to the single local delete flow that we know and love.
Change-Id: Ie2063f621618c1d90aeb59f0f1d7da351862ea9f
Closes-Bug: #
1678326
(cherry picked from commit
9245bbf79ddbfd8a2e2310af654711f9d3a547b1)
instance=instance)
return
- # If there is an instance.host the instance has been scheduled and
- # sent to a cell/compute which means it was pulled from the cell db.
+ # If there is an instance.host (or the instance is shelved-offloaded),
+ # the instance has been scheduled and sent to a cell/compute which
+ # means it was pulled from the cell db.
# Normal delete should be attempted.
- if not instance.host:
+ if not (instance.host or
+ instance.vm_state == vm_states.SHELVED_OFFLOADED):
try:
if self._delete_while_booting(context, instance):
return
self.flags(driver='chance_scheduler', group='scheduler')
self.start_service('scheduler')
self.start_service('compute')
+ # The consoleauth service is needed for deleting console tokens.
+ self.start_service('consoleauth')
self.useFixture(cast_as_call.CastAsCall(self.stubs))
LOG.info('Validating that volume %s was detached from server %s.',
volume_id, server_id)
- # When bug 1675570 is fixed, this should be assertNotIn.
- self.assertIn(volume_id, self.cinder.attachments[server_id])
+ # Now that the bug is fixed, assert the volume was detached.
+ self.assertNotIn(volume_id, self.cinder.attachments[server_id])