def power_off(self, instance, timeout=0, retry_interval=0): """Power off the specified instance. :param instance: nova.objects.instance.Instance :param timeout: time to wait for GuestOS to shutdown :param retry_interval: How often to signal guest while waiting for it to shutdown """ self._log_operation('power_off', instance) force_immediate = (timeout == 0) timeout = timeout or None vm.power_off(self.adapter, instance, force_immediate=force_immediate, timeout=timeout)
def revert(self, result, flow_failures): if isinstance(result, task_fail.Failure): # The power on itself failed...can't power off. LOG.debug('Power on failed. Not performing power off.', instance=self.instance) return LOG.warning('Powering off instance.', instance=self.instance) try: vm.power_off(self.adapter, self.instance, force_immediate=True) except pvm_exc.Error: # Don't raise revert exceptions LOG.exception("Power-off failed during revert.", instance=self.instance)
def test_power_off(self, mock_wrap, mock_lock, mock_power_off): entry = mock.Mock(state=pvm_bp.LPARState.NOT_ACTIVATED) mock_wrap.return_value = entry vm.power_off(None, self.inst) self.assertEqual(0, mock_power_off.call_count) mock_lock.assert_called_once_with('power_%s' % self.inst.uuid) stop_states = [ pvm_bp.LPARState.RUNNING, pvm_bp.LPARState.STARTING, pvm_bp.LPARState.OPEN_FIRMWARE, pvm_bp.LPARState.SHUTTING_DOWN, pvm_bp.LPARState.ERROR, pvm_bp.LPARState.RESUMING, pvm_bp.LPARState.SUSPENDING] for stop_state in stop_states: entry.state = stop_state mock_power_off.reset_mock() mock_lock.reset_mock() vm.power_off(None, self.inst) mock_power_off.assert_called_once_with( entry, None, force_immediate=power.Force.ON_FAILURE) mock_lock.assert_called_once_with('power_%s' % self.inst.uuid) mock_power_off.reset_mock() mock_lock.reset_mock() vm.power_off(None, self.inst, force_immediate=True, timeout=5) mock_power_off.assert_called_once_with( entry, None, force_immediate=True, timeout=5) mock_lock.assert_called_once_with('power_%s' % self.inst.uuid)
def test_power_off(self, mock_wrap, mock_lock, mock_power_off, mock_pop): entry = mock.Mock(state=pvm_bp.LPARState.NOT_ACTIVATED) mock_wrap.return_value = entry vm.power_off(None, self.inst) self.assertEqual(0, mock_power_off.call_count) self.assertEqual(0, mock_pop.stop.call_count) mock_lock.assert_called_once_with('power_%s' % self.inst.uuid) stop_states = [ pvm_bp.LPARState.RUNNING, pvm_bp.LPARState.STARTING, pvm_bp.LPARState.OPEN_FIRMWARE, pvm_bp.LPARState.SHUTTING_DOWN, pvm_bp.LPARState.ERROR, pvm_bp.LPARState.RESUMING, pvm_bp.LPARState.SUSPENDING ] for stop_state in stop_states: entry.state = stop_state mock_power_off.reset_mock() mock_pop.stop.reset_mock() mock_lock.reset_mock() vm.power_off(None, self.inst) mock_power_off.assert_called_once_with(entry) self.assertEqual(0, mock_pop.stop.call_count) mock_lock.assert_called_once_with('power_%s' % self.inst.uuid) mock_power_off.reset_mock() mock_lock.reset_mock() vm.power_off(None, self.inst, force_immediate=True, timeout=5) self.assertEqual(0, mock_power_off.call_count) mock_pop.stop.assert_called_once_with(entry, opts=mock.ANY, timeout=5) self.assertEqual('PowerOff(immediate=true, operation=shutdown)', str(mock_pop.stop.call_args[1]['opts'])) mock_lock.assert_called_once_with('power_%s' % self.inst.uuid)
def test_power_off(self, mock_wrap, mock_lock, mock_power_off, mock_pop): entry = mock.Mock(state=pvm_bp.LPARState.NOT_ACTIVATED) mock_wrap.return_value = entry vm.power_off(None, self.inst) self.assertEqual(0, mock_power_off.call_count) self.assertEqual(0, mock_pop.stop.call_count) mock_lock.assert_called_once_with('power_%s' % self.inst.uuid) stop_states = [ pvm_bp.LPARState.RUNNING, pvm_bp.LPARState.STARTING, pvm_bp.LPARState.OPEN_FIRMWARE, pvm_bp.LPARState.SHUTTING_DOWN, pvm_bp.LPARState.ERROR, pvm_bp.LPARState.RESUMING, pvm_bp.LPARState.SUSPENDING] for stop_state in stop_states: entry.state = stop_state mock_power_off.reset_mock() mock_pop.stop.reset_mock() mock_lock.reset_mock() vm.power_off(None, self.inst) mock_power_off.assert_called_once_with(entry) self.assertEqual(0, mock_pop.stop.call_count) mock_lock.assert_called_once_with('power_%s' % self.inst.uuid) mock_power_off.reset_mock() mock_lock.reset_mock() vm.power_off(None, self.inst, force_immediate=True, timeout=5) self.assertEqual(0, mock_power_off.call_count) mock_pop.stop.assert_called_once_with( entry, opts=mock.ANY, timeout=5) self.assertEqual('PowerOff(immediate=true, operation=shutdown)', str(mock_pop.stop.call_args[1]['opts'])) mock_lock.assert_called_once_with('power_%s' % self.inst.uuid)
def test_power_off(self, mock_wrap, mock_lock, mock_power_off): entry = mock.Mock(state=pvm_bp.LPARState.NOT_ACTIVATED) mock_wrap.return_value = entry vm.power_off(None, self.inst) self.assertEqual(0, mock_power_off.call_count) mock_lock.assert_called_once_with('power_%s' % self.inst.uuid) stop_states = [ pvm_bp.LPARState.RUNNING, pvm_bp.LPARState.STARTING, pvm_bp.LPARState.OPEN_FIRMWARE, pvm_bp.LPARState.SHUTTING_DOWN, pvm_bp.LPARState.ERROR, pvm_bp.LPARState.RESUMING, pvm_bp.LPARState.SUSPENDING ] for stop_state in stop_states: entry.state = stop_state mock_power_off.reset_mock() mock_lock.reset_mock() vm.power_off(None, self.inst) mock_power_off.assert_called_once_with( entry, None, force_immediate=power.Force.ON_FAILURE) mock_lock.assert_called_once_with('power_%s' % self.inst.uuid) mock_power_off.reset_mock() mock_lock.reset_mock() vm.power_off(None, self.inst, force_immediate=True, timeout=5) mock_power_off.assert_called_once_with(entry, None, force_immediate=True, timeout=5) mock_lock.assert_called_once_with('power_%s' % self.inst.uuid)
def execute(self): vm.power_off(self.adapter, self.instance, force_immediate=self.force_immediate)