summaryrefslogtreecommitdiff
path: root/ironic/tests/unit/drivers/modules/oneview/test_deploy_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'ironic/tests/unit/drivers/modules/oneview/test_deploy_utils.py')
-rw-r--r--ironic/tests/unit/drivers/modules/oneview/test_deploy_utils.py58
1 files changed, 52 insertions, 6 deletions
diff --git a/ironic/tests/unit/drivers/modules/oneview/test_deploy_utils.py b/ironic/tests/unit/drivers/modules/oneview/test_deploy_utils.py
index c19a61399..10e727bff 100644
--- a/ironic/tests/unit/drivers/modules/oneview/test_deploy_utils.py
+++ b/ironic/tests/unit/drivers/modules/oneview/test_deploy_utils.py
@@ -98,7 +98,12 @@ class OneViewDeployUtilsTestCase(db_base.DbTestCase):
"""`tear_down` behavior when node already has Profile applied
"""
- oneview_client = mock_get_ov_client()
+ sp_uri = '/rest/server-profiles/1234556789'
+ ov_client = mock_get_ov_client()
+ fake_sh = oneview_models.ServerHardware()
+ fake_sh.server_profile_uri = sp_uri
+ ov_client = mock_get_ov_client.return_value
+ ov_client.get_server_hardware_by_uuid.return_value = fake_sh
with task_manager.acquire(self.context, self.node.uuid) as task:
driver_info = task.node.driver_info
@@ -109,12 +114,12 @@ class OneViewDeployUtilsTestCase(db_base.DbTestCase):
self.assertTrue(
'applied_server_profile_uri' in task.node.driver_info
)
- deploy_utils.tear_down(oneview_client, task)
+ deploy_utils.tear_down(ov_client, task)
self.assertFalse(
'applied_server_profile_uri' in task.node.driver_info
)
self.assertTrue(
- oneview_client.delete_server_profile.called
+ ov_client.delete_server_profile.called
)
# Tests for prepare_cleaning
@@ -184,7 +189,12 @@ class OneViewDeployUtilsTestCase(db_base.DbTestCase):
"""Checks if Server Profile was deleted and its uri removed
"""
- oneview_client = mock_get_ov_client()
+ sp_uri = '/rest/server-profiles/1234556789'
+ ov_client = mock_get_ov_client()
+ fake_sh = oneview_models.ServerHardware()
+ fake_sh.server_profile_uri = sp_uri
+ ov_client = mock_get_ov_client.return_value
+ ov_client.get_server_hardware_by_uuid.return_value = fake_sh
with task_manager.acquire(self.context, self.node.uuid) as task:
driver_info = task.node.driver_info
@@ -193,10 +203,10 @@ class OneViewDeployUtilsTestCase(db_base.DbTestCase):
task.node.driver_info = driver_info
self.assertIn('applied_server_profile_uri', task.node.driver_info)
- deploy_utils.tear_down_cleaning(oneview_client, task)
+ deploy_utils.tear_down_cleaning(ov_client, task)
self.assertNotIn('applied_server_profile_uri',
task.node.driver_info)
- self.assertTrue(oneview_client.delete_server_profile.called)
+ self.assertTrue(ov_client.delete_server_profile.called)
# Tests for is_node_in_use_by_oneview
def test_is_node_in_use_by_oneview(self, mock_get_ov_client):
@@ -400,3 +410,39 @@ class OneViewDeployUtilsTestCase(db_base.DbTestCase):
self.assertTrue(
'applied_server_profile_uri' not in task.node.driver_info
)
+
+ @mock.patch.object(objects.Node, 'save')
+ def test_deallocate_server_hardware_from_ironic_missing_profile_uuid(
+ self, mock_node_save, mock_get_ov_client
+ ):
+ """Test for case when server profile application fails.
+
+ Due to an error when applying Server Profile in OneView,
+ the node will have no Server Profile uuid in the
+ 'applied_server_profile_uri' namespace. When the method
+ tested is called without Server Profile uuid, the client
+ will raise a ValueError when trying to delete the profile,
+ this error is converted to an OneViewError.
+ """
+
+ ov_client = mock_get_ov_client.return_value
+ fake_sh = oneview_models.ServerHardware()
+ fake_sh.server_profile_uri = 'any/applied_sp_uri/'
+ ov_client.get_server_hardware_by_uuid.return_value = fake_sh
+ ov_client.delete_server_profile.side_effect = ValueError
+ mock_get_ov_client.return_value = ov_client
+
+ with task_manager.acquire(self.context, self.node.uuid) as task:
+ driver_info = task.node.driver_info
+ driver_info['applied_server_profile_uri'] = 'any/applied_sp_uri/'
+ task.node.driver_info = driver_info
+ self.assertRaises(
+ exception.OneViewError,
+ deploy_utils.deallocate_server_hardware_from_ironic,
+ ov_client,
+ task.node
+ )
+ self.assertTrue(ov_client.delete_server_profile.called)
+ self.assertTrue(
+ 'applied_server_profile_uri' in task.node.driver_info
+ )