summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJenkins <jenkins@review.openstack.org>2016-03-04 11:46:53 +0000
committerGerrit Code Review <review@openstack.org>2016-03-04 11:46:53 +0000
commitee5a245806446caa8a1650bf2b945777fd74b786 (patch)
tree273a783712419c3a586a68a35276849d54bbb232
parentb8dfababce7ac463514ac6c6090e723ac96f58fa (diff)
parent4ab12310978f3f1a912f4f27a85064e791a36e56 (diff)
downloadironic-4.2.3.tar.gz
Merge "Fixes automated cleaning failure in iLO drivers" into stable/liberty4.2.3
-rw-r--r--ironic/drivers/modules/ilo/deploy.py5
-rw-r--r--ironic/tests/drivers/ilo/test_deploy.py7
-rw-r--r--releasenotes/notes/ilo-automated-cleaning-fails-14ee438de3dd8690.yaml7
3 files changed, 17 insertions, 2 deletions
diff --git a/ironic/drivers/modules/ilo/deploy.py b/ironic/drivers/modules/ilo/deploy.py
index 14542b329..792e51d26 100644
--- a/ironic/drivers/modules/ilo/deploy.py
+++ b/ironic/drivers/modules/ilo/deploy.py
@@ -690,6 +690,11 @@ class IloVirtualMediaAgentDeploy(base.DeployInterface):
def prepare_cleaning(self, task):
"""Boot into the agent to prepare for cleaning."""
+
+ # Powering off the Node before initiating boot for node cleaning.
+ # If node is in system POST, setting boot device fails.
+ manager_utils.node_power_action(task, states.POWER_OFF)
+
# Create cleaning ports if necessary
provider = dhcp_factory.DHCPFactory().provider
diff --git a/ironic/tests/drivers/ilo/test_deploy.py b/ironic/tests/drivers/ilo/test_deploy.py
index 06014bb40..c5e239607 100644
--- a/ironic/tests/drivers/ilo/test_deploy.py
+++ b/ironic/tests/drivers/ilo/test_deploy.py
@@ -1089,11 +1089,14 @@ class IloVirtualMediaAgentDeployTestCase(db_base.DbTestCase):
spec_set=True, autospec=True)
@mock.patch.object(ilo_deploy, '_prepare_agent_vmedia_boot', spec_set=True,
autospec=True)
- def test_prepare_cleaning(self, vmedia_boot_mock, create_port_mock,
- delete_mock):
+ @mock.patch.object(manager_utils, 'node_power_action', spec_set=True,
+ autospec=True)
+ def test_prepare_cleaning(self, power_mock, vmedia_boot_mock,
+ create_port_mock, delete_mock):
with task_manager.acquire(self.context, self.node.uuid,
shared=False) as task:
returned_state = task.driver.deploy.prepare_cleaning(task)
+ power_mock.assert_called_once_with(task, states.POWER_OFF)
vmedia_boot_mock.assert_called_once_with(task)
self.assertEqual(states.CLEANWAIT, returned_state)
create_port_mock.assert_called_once_with(mock.ANY, task)
diff --git a/releasenotes/notes/ilo-automated-cleaning-fails-14ee438de3dd8690.yaml b/releasenotes/notes/ilo-automated-cleaning-fails-14ee438de3dd8690.yaml
new file mode 100644
index 000000000..d9ee80aac
--- /dev/null
+++ b/releasenotes/notes/ilo-automated-cleaning-fails-14ee438de3dd8690.yaml
@@ -0,0 +1,7 @@
+---
+fixes:
+ - Fixes issue where automated cleaning fails for iLO
+ drivers.
+ Automated cleaning fails for iLO driver if iLO is
+ in System POST state. iLO does not allow setting
+ of boot device when it is in System POST state.