Fix power status command error reporting

With pyghmi API, some methods return generic IPMI error
codes, while some return payload values. This patch fixes
the `get_power_state()` method to raise exception instead
of returning IPMI error code because the latter goes against
pyghmi API.

Change-Id: If30c1ee49982a7a1198a39a7afdc1edc2c516078
This commit is contained in:
Ilya Etingof 2018-05-09 13:46:49 +02:00
parent 189457ba9d
commit ba4ced4657
2 changed files with 8 additions and 7 deletions

View File

@ -16,6 +16,7 @@
import libvirt
import mock
from virtualbmc import exception
from virtualbmc.tests.unit import base
from virtualbmc.tests.unit import utils as test_utils
from virtualbmc import utils
@ -132,8 +133,7 @@ class VirtualBMCTestCase(base.TestCase):
def test_get_power_state_error(self, mock_libvirt_domain,
mock_libvirt_open):
mock_libvirt_domain.side_effect = libvirt.libvirtError('boom')
ret = self.vbmc.get_power_state()
self.assertEqual(0xC0, ret)
self.assertRaises(exception.VirtualBMCError, self.vbmc.get_power_state)
self._assert_libvirt_calls(mock_libvirt_domain, mock_libvirt_open,
readonly=True)

View File

@ -15,6 +15,7 @@ import xml.etree.ElementTree as ET
import libvirt
import pyghmi.ipmi.bmc as bmc
from virtualbmc import exception
from virtualbmc import log
from virtualbmc import utils
@ -116,11 +117,11 @@ class VirtualBMC(bmc.Bmc):
if domain.isActive():
return POWERON
except libvirt.libvirtError as e:
LOG.error('Error getting the power state of domain %(domain)s. '
'Error: %(error)s', {'domain': self.domain_name,
'error': e})
# Command failed, but let client to retry
return IPMI_COMMAND_NODE_BUSY
msg = ('Error getting the power state of domain %(domain)s. '
'Error: %(error)s', {'domain': self.domain_name,
'error': e})
LOG.error(msg)
raise exception.VirtualBMCError(message=msg)
return POWEROFF