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 libvirt
|
||||||
import mock
|
import mock
|
||||||
|
|
||||||
|
from virtualbmc import exception
|
||||||
from virtualbmc.tests.unit import base
|
from virtualbmc.tests.unit import base
|
||||||
from virtualbmc.tests.unit import utils as test_utils
|
from virtualbmc.tests.unit import utils as test_utils
|
||||||
from virtualbmc import utils
|
from virtualbmc import utils
|
||||||
@ -132,8 +133,7 @@ class VirtualBMCTestCase(base.TestCase):
|
|||||||
def test_get_power_state_error(self, mock_libvirt_domain,
|
def test_get_power_state_error(self, mock_libvirt_domain,
|
||||||
mock_libvirt_open):
|
mock_libvirt_open):
|
||||||
mock_libvirt_domain.side_effect = libvirt.libvirtError('boom')
|
mock_libvirt_domain.side_effect = libvirt.libvirtError('boom')
|
||||||
ret = self.vbmc.get_power_state()
|
self.assertRaises(exception.VirtualBMCError, self.vbmc.get_power_state)
|
||||||
self.assertEqual(0xC0, ret)
|
|
||||||
self._assert_libvirt_calls(mock_libvirt_domain, mock_libvirt_open,
|
self._assert_libvirt_calls(mock_libvirt_domain, mock_libvirt_open,
|
||||||
readonly=True)
|
readonly=True)
|
||||||
|
|
||||||
|
@ -15,6 +15,7 @@ import xml.etree.ElementTree as ET
|
|||||||
import libvirt
|
import libvirt
|
||||||
import pyghmi.ipmi.bmc as bmc
|
import pyghmi.ipmi.bmc as bmc
|
||||||
|
|
||||||
|
from virtualbmc import exception
|
||||||
from virtualbmc import log
|
from virtualbmc import log
|
||||||
from virtualbmc import utils
|
from virtualbmc import utils
|
||||||
|
|
||||||
@ -116,11 +117,11 @@ class VirtualBMC(bmc.Bmc):
|
|||||||
if domain.isActive():
|
if domain.isActive():
|
||||||
return POWERON
|
return POWERON
|
||||||
except libvirt.libvirtError as e:
|
except libvirt.libvirtError as e:
|
||||||
LOG.error('Error getting the power state of domain %(domain)s. '
|
msg = ('Error getting the power state of domain %(domain)s. '
|
||||||
'Error: %(error)s', {'domain': self.domain_name,
|
'Error: %(error)s', {'domain': self.domain_name,
|
||||||
'error': e})
|
'error': e})
|
||||||
# Command failed, but let client to retry
|
LOG.error(msg)
|
||||||
return IPMI_COMMAND_NODE_BUSY
|
raise exception.VirtualBMCError(message=msg)
|
||||||
|
|
||||||
return POWEROFF
|
return POWEROFF
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user