Baremetal ensures node is off before powering on
During spawn(), ensure that a node is really off before trying to turn it on. This fixes bug 1178919, in which a node that had previously gotten stuck in a power-on state (eg, in the BIOS screen) would fail to spawn() because the baremetal driver would send a power-on request, the BMC would ignore it, and then baremetal driver would wait indefinitely for a DHCP request. Change-Id: Ie73e6ab488abe99c70ad3d149d702577941056d1
This commit is contained in:
parent
57236a414d
commit
58fe97eebd
|
@ -226,6 +226,7 @@ class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase):
|
|||
|
||||
self.mox.StubOutWithMock(fake.FakePowerManager, 'activate_node')
|
||||
self.mox.StubOutWithMock(fake.FakePowerManager, 'deactivate_node')
|
||||
fake.FakePowerManager.deactivate_node().AndReturn(None)
|
||||
fake.FakePowerManager.activate_node().AndRaise(test.TestingException)
|
||||
fake.FakePowerManager.deactivate_node().AndRaise(test.TestingException)
|
||||
self.mox.ReplayAll()
|
||||
|
@ -250,6 +251,7 @@ class BareMetalDriverWithDBTestCase(bm_db_base.BMDBTestCase):
|
|||
node = self._create_node()
|
||||
|
||||
self.mox.StubOutWithMock(fake.FakePowerManager, 'deactivate_node')
|
||||
fake.FakePowerManager.deactivate_node().AndReturn(None)
|
||||
fake.FakePowerManager.deactivate_node().AndRaise(test.TestingException)
|
||||
self.mox.ReplayAll()
|
||||
|
||||
|
|
|
@ -250,6 +250,9 @@ class BareMetalDriver(driver.ComputeDriver):
|
|||
)
|
||||
self.driver.activate_bootloader(context, node, instance,
|
||||
network_info=network_info)
|
||||
# NOTE(deva): ensure node is really off before we turn it on
|
||||
# fixes bug https://code.launchpad.net/bugs/1178919
|
||||
self.power_off(instance, node)
|
||||
self.power_on(context, instance, network_info, block_device_info,
|
||||
node)
|
||||
self.driver.activate_node(context, node, instance)
|
||||
|
|
Loading…
Reference in New Issue