diff --git a/nova/compute/manager.py b/nova/compute/manager.py index e26d0b9c2149..540e656f00e9 100644 --- a/nova/compute/manager.py +++ b/nova/compute/manager.py @@ -1184,6 +1184,8 @@ class ComputeManager(manager.Manager): vm_power_state = power_state.PAUSED elif event.get_transition() == virtevent.EVENT_LIFECYCLE_RESUMED: vm_power_state = power_state.RUNNING + elif event.get_transition() == virtevent.EVENT_LIFECYCLE_SUSPENDED: + vm_power_state = power_state.SUSPENDED else: LOG.warning(_LW("Unexpected power state %d"), event.get_transition()) diff --git a/nova/tests/unit/compute/test_compute_mgr.py b/nova/tests/unit/compute/test_compute_mgr.py index 7ece89e9b819..c2af3b18a432 100644 --- a/nova/tests/unit/compute/test_compute_mgr.py +++ b/nova/tests/unit/compute/test_compute_mgr.py @@ -72,7 +72,10 @@ class ComputeManagerUnitTestCase(test.NoDBTestCase): event_map = {virtevent.EVENT_LIFECYCLE_STOPPED: power_state.SHUTDOWN, virtevent.EVENT_LIFECYCLE_STARTED: power_state.RUNNING, virtevent.EVENT_LIFECYCLE_PAUSED: power_state.PAUSED, - virtevent.EVENT_LIFECYCLE_RESUMED: power_state.RUNNING} + virtevent.EVENT_LIFECYCLE_RESUMED: power_state.RUNNING, + virtevent.EVENT_LIFECYCLE_SUSPENDED: + power_state.SUSPENDED, + } event = mock.Mock() event.get_instance_uuid.return_value = mock.sentinel.uuid for transition, pwr_state in event_map.iteritems(): diff --git a/nova/virt/event.py b/nova/virt/event.py index 02b9cddbd590..3b065bcb4226 100644 --- a/nova/virt/event.py +++ b/nova/virt/event.py @@ -28,12 +28,14 @@ EVENT_LIFECYCLE_STARTED = 0 EVENT_LIFECYCLE_STOPPED = 1 EVENT_LIFECYCLE_PAUSED = 2 EVENT_LIFECYCLE_RESUMED = 3 +EVENT_LIFECYCLE_SUSPENDED = 4 NAMES = { EVENT_LIFECYCLE_STARTED: _('Started'), EVENT_LIFECYCLE_STOPPED: _('Stopped'), EVENT_LIFECYCLE_PAUSED: _('Paused'), - EVENT_LIFECYCLE_RESUMED: _('Resumed') + EVENT_LIFECYCLE_RESUMED: _('Resumed'), + EVENT_LIFECYCLE_SUSPENDED: _('Suspended'), }