Merge "ironic: Log an error when API version is not available"
This commit is contained in:
commit
cb0bf8a5e1
@ -2875,6 +2875,25 @@ class IronicDriverSyncTestCase(IronicDriverTestCase):
|
||||
self.driver.rescue,
|
||||
self.ctx, instance, None, None, 'xyz')
|
||||
|
||||
@mock.patch.object(ironic_driver.IronicDriver, '_can_send_version')
|
||||
@mock.patch.object(ironic_driver, 'LOG', autospec=True)
|
||||
def test_rescue_api_unavailable(self, mock_log, mock_csv):
|
||||
node = ironic_utils.get_test_node()
|
||||
instance = fake_instance.fake_instance_obj(self.ctx,
|
||||
node=node.uuid)
|
||||
mock_csv.side_effect = exception.IronicAPIVersionNotAvailable(
|
||||
version='1.38')
|
||||
|
||||
def _fake_log_error(msg, *args, **kwargs):
|
||||
regex = r'Required Ironic API version.*for rescuing.'
|
||||
self.assertThat(msg, matchers.MatchesRegex(regex))
|
||||
mock_log.error.side_effect = _fake_log_error
|
||||
|
||||
self.assertRaises(exception.InstanceRescueFailure,
|
||||
self.driver.rescue,
|
||||
self.ctx, instance, None, None, 'xyz')
|
||||
self.assertTrue(mock_log.error.called)
|
||||
|
||||
@mock.patch.object(loopingcall, 'FixedIntervalLoopingCall')
|
||||
@mock.patch.object(FAKE_CLIENT.node, 'set_provision_state')
|
||||
def test_unrescue(self, mock_sps, mock_looping):
|
||||
@ -2933,6 +2952,26 @@ class IronicDriverSyncTestCase(IronicDriverTestCase):
|
||||
self.driver.unrescue,
|
||||
instance, None)
|
||||
|
||||
@mock.patch.object(ironic_driver.IronicDriver, '_can_send_version')
|
||||
@mock.patch.object(ironic_driver, 'LOG', autospec=True)
|
||||
def test_unrescue_api_unavailable(self, mock_log, mock_csv):
|
||||
node = ironic_utils.get_test_node()
|
||||
instance = fake_instance.fake_instance_obj(self.ctx,
|
||||
node=node.uuid)
|
||||
|
||||
mock_csv.side_effect = exception.IronicAPIVersionNotAvailable(
|
||||
version='1.38')
|
||||
|
||||
def _fake_log_error(msg, *args, **kwargs):
|
||||
regex = r'Required Ironic API version.*for unrescuing.'
|
||||
self.assertThat(msg, matchers.MatchesRegex(regex))
|
||||
mock_log.error.side_effect = _fake_log_error
|
||||
|
||||
self.assertRaises(exception.InstanceUnRescueFailure,
|
||||
self.driver.unrescue,
|
||||
instance, None)
|
||||
self.assertTrue(mock_log.error.called)
|
||||
|
||||
def test__can_send_version(self):
|
||||
self.assertIsNone(
|
||||
self.driver._can_send_version(
|
||||
|
@ -2018,6 +2018,11 @@ class IronicDriver(virt_driver.ComputeDriver):
|
||||
self.ironicclient.call("node.set_provision_state",
|
||||
node_uuid, ironic_states.RESCUE,
|
||||
rescue_password=rescue_password)
|
||||
except exception.IronicAPIVersionNotAvailable as e:
|
||||
LOG.error('Required Ironic API version %(version)s is not '
|
||||
'available for rescuing.',
|
||||
version='1.38', instance=instance)
|
||||
raise exception.InstanceRescueFailure(reason=six.text_type(e))
|
||||
except Exception as e:
|
||||
raise exception.InstanceRescueFailure(reason=six.text_type(e))
|
||||
|
||||
@ -2056,6 +2061,11 @@ class IronicDriver(virt_driver.ComputeDriver):
|
||||
self._can_send_version(min_version='1.38')
|
||||
self.ironicclient.call("node.set_provision_state",
|
||||
node_uuid, ironic_states.UNRESCUE)
|
||||
except exception.IronicAPIVersionNotAvailable as e:
|
||||
LOG.error('Required Ironic API version %(version)s is not '
|
||||
'available for unrescuing.',
|
||||
version='1.38', instance=instance)
|
||||
raise exception.InstanceUnRescueFailure(reason=six.text_type(e))
|
||||
except Exception as e:
|
||||
raise exception.InstanceUnRescueFailure(reason=six.text_type(e))
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user