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:
parent
189457ba9d
commit
ba4ced4657
@ -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)
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user