summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--nova/tests/baremetal/test_virtual_power_driver.py85
-rw-r--r--nova/virt/baremetal/virtual_power_driver.py10
2 files changed, 54 insertions, 41 deletions
diff --git a/nova/tests/baremetal/test_virtual_power_driver.py b/nova/tests/baremetal/test_virtual_power_driver.py
index a63d8add1..689677698 100644
--- a/nova/tests/baremetal/test_virtual_power_driver.py
+++ b/nova/tests/baremetal/test_virtual_power_driver.py
@@ -101,7 +101,7 @@ class BareMetalVPDTestCase(bm_db_base.BMDBTestCase):
return self.pm
-class VPDClassMethodsTestCase(BareMetalVPDTestCase):
+class VPDMissingOptionsTestCase(BareMetalVPDTestCase):
def test_get_conn_missing_options(self):
self.flags(virtual_power_ssh_host=None, group="baremetal")
@@ -121,10 +121,16 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self.assertRaises(exception.NovaException,
self.pm._get_conn)
- def test_get_conn_success(self):
+
+class VPDClassMethodsTestCase(BareMetalVPDTestCase):
+
+ def setUp(self):
+ super(VPDClassMethodsTestCase, self).setUp()
self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal")
self.flags(virtual_power_host_user='user', group="baremetal")
self.flags(virtual_power_host_pass='password', group="baremetal")
+
+ def test_get_conn_success(self):
self._create_node()
self._create_pm()
self._conn = self.pm._get_conn()
@@ -138,9 +144,6 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self.mox.VerifyAll()
def test_get_full_node_list(self):
- self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal")
- self.flags(virtual_power_host_user='user', group="baremetal")
- self.flags(virtual_power_host_pass='password', group="baremetal")
self._create_node()
self._create_pm()
@@ -154,9 +157,6 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self.mox.VerifyAll()
def test_check_for_node(self):
- self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal")
- self.flags(virtual_power_host_user='user', group="baremetal")
- self.flags(virtual_power_host_pass='password', group="baremetal")
self._create_node()
self._create_pm()
@@ -175,9 +175,6 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self.mox.VerifyAll()
def test_check_for_node_not_found(self):
- self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal")
- self.flags(virtual_power_host_user='user', group="baremetal")
- self.flags(virtual_power_host_pass='password', group="baremetal")
self._create_node()
self._create_pm()
@@ -194,9 +191,6 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self.mox.VerifyAll()
def test_activate_node(self):
- self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal")
- self.flags(virtual_power_host_user='user', group="baremetal")
- self.flags(virtual_power_host_pass='password', group="baremetal")
self._create_node()
self._create_pm()
@@ -212,9 +206,6 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self.mox.VerifyAll()
def test_activate_node_fail(self):
- self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal")
- self.flags(virtual_power_host_user='user', group="baremetal")
- self.flags(virtual_power_host_pass='password', group="baremetal")
self._create_node()
self._create_pm()
@@ -230,9 +221,6 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self.mox.VerifyAll()
def test_deactivate_node(self):
- self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal")
- self.flags(virtual_power_host_user='user', group="baremetal")
- self.flags(virtual_power_host_pass='password', group="baremetal")
self._create_node()
self._create_pm()
@@ -249,9 +237,6 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self.mox.VerifyAll()
def test_deactivate_node_fail(self):
- self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal")
- self.flags(virtual_power_host_user='user', group="baremetal")
- self.flags(virtual_power_host_pass='password', group="baremetal")
self._create_node()
self._create_pm()
@@ -268,9 +253,6 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self.mox.VerifyAll()
def test_reboot_node(self):
- self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal")
- self.flags(virtual_power_host_user='user', group="baremetal")
- self.flags(virtual_power_host_pass='password', group="baremetal")
self._create_node()
self._create_pm()
@@ -286,9 +268,6 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self.mox.VerifyAll()
def test_reboot_node_fail(self):
- self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal")
- self.flags(virtual_power_host_user='user', group="baremetal")
- self.flags(virtual_power_host_pass='password', group="baremetal")
self._create_node()
self._create_pm()
@@ -304,9 +283,6 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self.mox.VerifyAll()
def test_is_power_on(self):
- self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal")
- self.flags(virtual_power_host_user='user', group="baremetal")
- self.flags(virtual_power_host_pass='password', group="baremetal")
self._create_node()
self._create_pm()
@@ -322,9 +298,6 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self.mox.VerifyAll()
def test_is_power_on_fail(self):
- self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal")
- self.flags(virtual_power_host_user='user', group="baremetal")
- self.flags(virtual_power_host_pass='password', group="baremetal")
self._create_node()
self._create_pm()
@@ -340,9 +313,6 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
self.mox.VerifyAll()
def test_run_command(self):
- self.flags(virtual_power_ssh_host='127.0.0.1', group="baremetal")
- self.flags(virtual_power_host_user='user', group="baremetal")
- self.flags(virtual_power_host_pass='password', group="baremetal")
self._create_node()
self._create_pm()
@@ -356,3 +326,42 @@ class VPDClassMethodsTestCase(BareMetalVPDTestCase):
result = self.pm._run_command("test return")
self.assertEqual(result, ['test', 'return'])
self.mox.VerifyAll()
+
+ def test_run_command_raises_exception(self):
+ self._create_node()
+ self._create_pm()
+
+ self.mox.StubOutWithMock(self.pm, '_set_connection')
+ self.mox.StubOutWithMock(nutils, 'ssh_execute')
+
+ self.pm._set_connection().AndReturn(True)
+ nutils.ssh_execute(None, '/usr/bin/VBoxManage test return',
+ check_exit_code=True).\
+ AndRaise(exception.ProcessExecutionError)
+ self.mox.ReplayAll()
+
+ result = self.pm._run_command("test return")
+ self.assertEqual(result, [])
+ self.mox.VerifyAll()
+
+ def test_activate_node_with_exception(self):
+ self._create_node()
+ self._create_pm()
+
+ self.mox.StubOutWithMock(self.pm, '_check_for_node')
+ self.mox.StubOutWithMock(nutils, 'ssh_execute')
+
+ self.pm._check_for_node().AndReturn(["testNode"])
+ self.pm._check_for_node().AndReturn(["testNode"])
+ nutils.ssh_execute('test', '/usr/bin/VBoxManage startvm ',
+ check_exit_code=True).\
+ AndRaise(exception.ProcessExecutionError)
+ nutils.ssh_execute('test', '/usr/bin/VBoxManage list runningvms',
+ check_exit_code=True).\
+ AndRaise(exception.ProcessExecutionError)
+
+ self.mox.ReplayAll()
+ self.pm._connection = 'test'
+ state = self.pm.activate_node()
+ self.assertEqual(state, 'error')
+ self.mox.VerifyAll()
diff --git a/nova/virt/baremetal/virtual_power_driver.py b/nova/virt/baremetal/virtual_power_driver.py
index 22dd3a954..f77579dba 100644
--- a/nova/virt/baremetal/virtual_power_driver.py
+++ b/nova/virt/baremetal/virtual_power_driver.py
@@ -212,8 +212,12 @@ class VirtualPowerManager(base.PowerManager):
cmd = '%s %s' % (self._vp_cmd.base_cmd, cmd)
- stdout, stderr = utils.ssh_execute(self._connection, cmd,
+ try:
+ stdout, stderr = utils.ssh_execute(self._connection, cmd,
check_exit_code=check_exit_code)
- result = stdout.strip().splitlines()
- LOG.debug('Result for run_command: %s' % result)
+ result = stdout.strip().splitlines()
+ LOG.debug('Result for run_command: %s' % result)
+ except exception.ProcessExecutionError:
+ result = []
+ LOG.exception("Error running command: %s" % cmd)
return result