Fail introspection early if no lookup attributes can be detected

Change-Id: If655250a3e62f7f68cdb425ddde138ce39d385e8
Closes-Bug: #1488526
This commit is contained in:
Dmitry Tantsur 2015-08-25 17:59:58 +02:00
parent ff08bf95e2
commit 0d113098e1
2 changed files with 19 additions and 0 deletions

View File

@ -131,6 +131,12 @@ def _background_introspect(ironic, node_info):
{'macs': macs, 'node': node_info.uuid})
firewall.update_filters(ironic)
if not node_info.attributes:
raise utils.Error(
_('No lookup attributes were found for node %s, inspector won\'t '
'be able to find it after introspection. Consider creating '
'ironic ports or providing an IPMI address.') % node_info.uuid)
LOG.info(_LI('The following attributes will be used for looking up '
'node %(uuid)s: %(attrs)s'),
{'attrs': node_info.attributes, 'uuid': node_info.uuid})

View File

@ -176,6 +176,19 @@ class TestIntrospect(BaseTest):
cli.node.set_power_state.assert_called_once_with(self.uuid,
'reboot')
def test_no_lookup_attrs(self, client_mock, add_mock, filters_mock):
cli = self._prepare(client_mock)
self.node_info.ports.return_value = []
add_mock.return_value = self.node_info
self.node_info.attributes = {}
introspect.introspect(self.uuid)
self.node_info.ports.assert_called_once_with(cli)
self.node_info.finished.assert_called_once_with(error=mock.ANY)
self.assertEqual(0, filters_mock.call_count)
self.assertEqual(0, cli.node.set_power_state.call_count)
def test_failed_to_get_node(self, client_mock, add_mock, filters_mock):
cli = client_mock.return_value
cli.node.get.side_effect = exceptions.NotFound()