Add settable `IndicatorLED` of `System` and `Chassis`
The ``IndicatorLED`` property of ``System`` and ``Chassis`` resources made settable with the introduction of the ``.set_indicator_led()`` method to the respective sushy classes. Change-Id: Ie4e0d3ad20f051fa0fc1d679f020d174de71bca0 Story: 2005342 Task: 30290
This commit is contained in:
parent
7180a45763
commit
c8a63542cf
|
@ -0,0 +1,6 @@
|
||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
The ``IndicatorLED`` property of ``System`` and ``Chassis`` resources
|
||||||
|
made settable with the introduction of the ``.set_indicator_led()``
|
||||||
|
method to the respective sushy classes.
|
|
@ -196,6 +196,26 @@ class Chassis(base.ResourceBase):
|
||||||
self._conn.post(target_uri, data={'ResetType': value})
|
self._conn.post(target_uri, data={'ResetType': value})
|
||||||
LOG.info('The Chassis %s is being reset', self.identity)
|
LOG.info('The Chassis %s is being reset', self.identity)
|
||||||
|
|
||||||
|
def set_indicator_led(self, state):
|
||||||
|
"""Set IndicatorLED to the given state.
|
||||||
|
|
||||||
|
:param state: Desired LED state, lit (INDICATOR_LED_LIT), blinking
|
||||||
|
(INDICATOR_LED_BLINKING), off (INDICATOR_LED_OFF)
|
||||||
|
:raises: InvalidParameterValueError, if any information passed is
|
||||||
|
invalid.
|
||||||
|
"""
|
||||||
|
if state not in res_maps.INDICATOR_LED_VALUE_MAP_REV:
|
||||||
|
raise exceptions.InvalidParameterValueError(
|
||||||
|
parameter='state', value=state,
|
||||||
|
valid_values=list(res_maps.INDICATOR_LED_VALUE_MAP_REV))
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'IndicatorLED': res_maps.INDICATOR_LED_VALUE_MAP_REV[state]
|
||||||
|
}
|
||||||
|
|
||||||
|
self._conn.patch(self.path, data=data)
|
||||||
|
self.invalidate()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
@utils.cache_it
|
@utils.cache_it
|
||||||
def managers(self):
|
def managers(self):
|
||||||
|
|
|
@ -53,6 +53,8 @@ INDICATOR_LED_VALUE_MAP = {
|
||||||
'Unknown': res_cons.INDICATOR_LED_UNKNOWN,
|
'Unknown': res_cons.INDICATOR_LED_UNKNOWN,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
INDICATOR_LED_VALUE_MAP_REV = utils.revert_dictionary(INDICATOR_LED_VALUE_MAP)
|
||||||
|
|
||||||
POWER_STATE_VALUE_MAP = {
|
POWER_STATE_VALUE_MAP = {
|
||||||
'On': res_cons.POWER_STATE_ON,
|
'On': res_cons.POWER_STATE_ON,
|
||||||
'Off': res_cons.POWER_STATE_OFF,
|
'Off': res_cons.POWER_STATE_OFF,
|
||||||
|
|
|
@ -246,6 +246,26 @@ class System(base.ResourceBase):
|
||||||
# Probably we should call refresh() as well.
|
# Probably we should call refresh() as well.
|
||||||
self._conn.patch(self.path, data=data)
|
self._conn.patch(self.path, data=data)
|
||||||
|
|
||||||
|
def set_indicator_led(self, state):
|
||||||
|
"""Set IndicatorLED to the given state.
|
||||||
|
|
||||||
|
:param state: Desired LED state, lit (INDICATOR_LED_LIT), blinking
|
||||||
|
(INDICATOR_LED_BLINKING), off (INDICATOR_LED_OFF)
|
||||||
|
:raises: InvalidParameterValueError, if any information passed is
|
||||||
|
invalid.
|
||||||
|
"""
|
||||||
|
if state not in res_maps.INDICATOR_LED_VALUE_MAP_REV:
|
||||||
|
raise exceptions.InvalidParameterValueError(
|
||||||
|
parameter='state', value=state,
|
||||||
|
valid_values=list(res_maps.INDICATOR_LED_VALUE_MAP_REV))
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'IndicatorLED': res_maps.INDICATOR_LED_VALUE_MAP_REV[state]
|
||||||
|
}
|
||||||
|
|
||||||
|
self._conn.patch(self.path, data=data)
|
||||||
|
self.invalidate()
|
||||||
|
|
||||||
def _get_processor_collection_path(self):
|
def _get_processor_collection_path(self):
|
||||||
"""Helper function to find the ProcessorCollection path"""
|
"""Helper function to find the ProcessorCollection path"""
|
||||||
return utils.get_sub_resource_path_by(self, 'Processors')
|
return utils.get_sub_resource_path_by(self, 'Processors')
|
||||||
|
|
|
@ -120,6 +120,21 @@ class ChassisTestCase(base.TestCase):
|
||||||
self.assertRaises(exceptions.InvalidParameterValueError,
|
self.assertRaises(exceptions.InvalidParameterValueError,
|
||||||
self.chassis.reset_chassis, 'invalid-value')
|
self.chassis.reset_chassis, 'invalid-value')
|
||||||
|
|
||||||
|
def test_set_indicator_led(self):
|
||||||
|
with mock.patch.object(
|
||||||
|
self.chassis, 'invalidate', autospec=True) as invalidate_mock:
|
||||||
|
self.chassis.set_indicator_led(sushy.INDICATOR_LED_BLINKING)
|
||||||
|
self.chassis._conn.patch.assert_called_once_with(
|
||||||
|
'/redfish/v1/Chassis/Blade1',
|
||||||
|
data={'IndicatorLED': 'Blinking'})
|
||||||
|
|
||||||
|
invalidate_mock.assert_called_once_with()
|
||||||
|
|
||||||
|
def test_set_indicator_led_invalid_state(self):
|
||||||
|
self.assertRaises(exceptions.InvalidParameterValueError,
|
||||||
|
self.chassis.set_indicator_led,
|
||||||
|
'spooky-glowing')
|
||||||
|
|
||||||
def test_managers(self):
|
def test_managers(self):
|
||||||
# | GIVEN |
|
# | GIVEN |
|
||||||
with open('sushy/tests/unit/json_samples/'
|
with open('sushy/tests/unit/json_samples/'
|
||||||
|
|
|
@ -233,6 +233,21 @@ class SystemTestCase(base.TestCase):
|
||||||
sushy.BOOT_SOURCE_TARGET_HDD,
|
sushy.BOOT_SOURCE_TARGET_HDD,
|
||||||
enabled='invalid-enabled')
|
enabled='invalid-enabled')
|
||||||
|
|
||||||
|
def test_set_indicator_led(self):
|
||||||
|
with mock.patch.object(
|
||||||
|
self.sys_inst, 'invalidate', autospec=True) as invalidate_mock:
|
||||||
|
self.sys_inst.set_indicator_led(sushy.INDICATOR_LED_BLINKING)
|
||||||
|
self.sys_inst._conn.patch.assert_called_once_with(
|
||||||
|
'/redfish/v1/Systems/437XR1138R2',
|
||||||
|
data={'IndicatorLED': 'Blinking'})
|
||||||
|
|
||||||
|
invalidate_mock.assert_called_once_with()
|
||||||
|
|
||||||
|
def test_set_indicator_led_invalid_state(self):
|
||||||
|
self.assertRaises(exceptions.InvalidParameterValueError,
|
||||||
|
self.sys_inst.set_indicator_led,
|
||||||
|
'spooky-glowing')
|
||||||
|
|
||||||
def test__get_processor_collection_path_missing_processors_attr(self):
|
def test__get_processor_collection_path_missing_processors_attr(self):
|
||||||
self.sys_inst._json.pop('Processors')
|
self.sys_inst._json.pop('Processors')
|
||||||
self.assertRaisesRegex(
|
self.assertRaisesRegex(
|
||||||
|
|
Loading…
Reference in New Issue