compute: Allow snapshots to be created from PAUSED volume backed instances

Iabeb44f843c3c04f767c4103038fcf6c52966ff3 allowed snapshots to be
created from PAUSED non-volume backed instances but missed the volume
backed use case.

This change simply adds PAUSED to the list of acceptable vm_states when
creating a snapshot from a volume backed instance in addition to the
already supported ACTIVE, STOPPED and SUSPENDED vm_states.

Closes-Bug: #1878583
Change-Id: I9f95a054de9d43ecaa50ff7ffc9343490e212d53
(cherry picked from commit cfde53e4b4)
(cherry picked from commit a270eeeb9b)
(cherry picked from commit c93ca60956)
(cherry picked from commit 04a8399f1d)
(cherry picked from commit 35c1846d5c)
This commit is contained in:
Lee Yarwood 2020-05-14 10:49:07 +01:00 committed by Elod Illes
parent 8f7dc3d870
commit 69ae27579d
2 changed files with 6 additions and 1 deletions

View File

@ -2938,7 +2938,7 @@ class API(base.Base):
# NOTE(melwitt): We don't check instance lock for snapshot because lock is
# intended to prevent accidental change/delete of instances
@check_instance_state(vm_state=[vm_states.ACTIVE, vm_states.STOPPED,
vm_states.SUSPENDED])
vm_states.PAUSED, vm_states.SUSPENDED])
def snapshot_volume_backed(self, context, instance, name,
extra_properties=None):
"""Snapshot the given volume-backed instance.

View File

@ -3415,6 +3415,11 @@ class _ComputeAPIUnitTestMixIn(object):
quiesce_unsupported=True,
vm_state=vm_states.SUSPENDED)
def test_snapshot_volume_backed_with_pause(self):
self._test_snapshot_volume_backed(quiesce_required=False,
quiesce_unsupported=True,
vm_state=vm_states.PAUSED)
@mock.patch.object(context, 'set_target_cell')
@mock.patch.object(objects.BlockDeviceMapping, 'get_by_volume')
def test_get_bdm_by_volume_id(self, mock_get_by_volume,