Merge "Handle ironicclient failures in Ironic driver"
This commit is contained in:
@@ -2077,6 +2077,17 @@ class IronicDriverTestCase(test.NoDBTestCase):
|
|||||||
mock_node.list_volume_connectors.assert_called_once_with(
|
mock_node.list_volume_connectors.assert_called_once_with(
|
||||||
node_uuid, detail=True)
|
node_uuid, detail=True)
|
||||||
|
|
||||||
|
@mock.patch.object(FAKE_CLIENT, 'node')
|
||||||
|
@mock.patch.object(ironic_driver.LOG, 'error')
|
||||||
|
def test_ironicclient_bad_response(self, mock_error, mock_node):
|
||||||
|
mock_node.list.side_effect = [["node1", "node2"], Exception()]
|
||||||
|
result = self.driver._get_node_list()
|
||||||
|
mock_error.assert_not_called()
|
||||||
|
self.assertEqual(["node1", "node2"], result)
|
||||||
|
result = self.driver._get_node_list()
|
||||||
|
mock_error.assert_called_once()
|
||||||
|
self.assertEqual([], result)
|
||||||
|
|
||||||
|
|
||||||
class IronicDriverSyncTestCase(IronicDriverTestCase):
|
class IronicDriverSyncTestCase(IronicDriverTestCase):
|
||||||
|
|
||||||
|
|||||||
@@ -589,10 +589,15 @@ class IronicDriver(virt_driver.ComputeDriver):
|
|||||||
:returns: a list of raw node from ironic
|
:returns: a list of raw node from ironic
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
node_list = []
|
||||||
try:
|
try:
|
||||||
node_list = self.ironicclient.call("node.list", **kwargs)
|
node_list = self.ironicclient.call("node.list", **kwargs)
|
||||||
except exception.NovaException:
|
except exception.NovaException as e:
|
||||||
node_list = []
|
LOG.error("Failed to get the list of nodes from the Ironic "
|
||||||
|
"inventory. Error: %s", e)
|
||||||
|
except Exception as e:
|
||||||
|
LOG.error("An unknown error has occurred when trying to get the "
|
||||||
|
"list of nodes from the Ironic inventory. Error: %s", e)
|
||||||
return node_list
|
return node_list
|
||||||
|
|
||||||
def list_instances(self):
|
def list_instances(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user