diff options
author | Ilya Etingof <etingof@gmail.com> | 2019-03-06 14:46:20 +0100 |
---|---|---|
committer | Ilya Etingof <etingof@gmail.com> | 2019-03-08 08:18:48 +0100 |
commit | a8087359370ff9f162be7c6b521969a8fb54a96b (patch) | |
tree | 4c4f125368759eaf1a9c68dbb1c1e315bcdc8d8c /ironic/drivers/modules/redfish/inspect.py | |
parent | 5d25189b139961ee1cdd7243dbd19cd924b85d56 (diff) | |
download | ironic-a8087359370ff9f162be7c6b521969a8fb54a96b.tar.gz |
Set boot_mode in node properties during Redfish introspection
If Redfish OOB inspection returns current boot mode of the
node, add this boot mode into node properties/capabilities.
The idea behind this change is to align with the in-band
inspection behavior [1].
1. https://docs.openstack.org/ironic-inspector/ocata/usage.html#boot-mode
Story: 1668487
Task: 29855
Change-Id: I11de35fa87512d12eb6a259b26e88cd94e4a803d
Diffstat (limited to 'ironic/drivers/modules/redfish/inspect.py')
-rw-r--r-- | ironic/drivers/modules/redfish/inspect.py | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/ironic/drivers/modules/redfish/inspect.py b/ironic/drivers/modules/redfish/inspect.py index aab0427c3..0d1e24b51 100644 --- a/ironic/drivers/modules/redfish/inspect.py +++ b/ironic/drivers/modules/redfish/inspect.py @@ -17,12 +17,15 @@ from oslo_log import log from oslo_utils import importutils from oslo_utils import units +from ironic.common import boot_modes from ironic.common import exception from ironic.common.i18n import _ from ironic.common import states +from ironic.common import utils from ironic.drivers import base from ironic.drivers.modules import inspect_utils from ironic.drivers.modules.redfish import utils as redfish_utils +from ironic.drivers import utils as drivers_utils LOG = log.getLogger(__name__) @@ -37,6 +40,11 @@ if sushy: sushy.PROCESSOR_ARCH_OEM: 'oem' } + BOOT_MODE_MAP = { + sushy.BOOT_SOURCE_MODE_UEFI: boot_modes.UEFI, + sushy.BOOT_SOURCE_MODE_BIOS: boot_modes.LEGACY_BIOS + } + class RedfishInspect(base.InspectInterface): @@ -188,6 +196,14 @@ class RedfishInspect(base.InspectInterface): {'node': task.node.uuid}) inspected_properties['local_gb'] = '0' + if system.boot.mode: + if not drivers_utils.get_node_capability(task.node, 'boot_mode'): + capabilities = utils.get_updated_capabilities( + inspected_properties.get('capabilities', ''), + {'boot_mode': BOOT_MODE_MAP[system.boot.mode]}) + + inspected_properties['capabilities'] = capabilities + valid_keys = self.ESSENTIAL_PROPERTIES missing_keys = valid_keys - set(inspected_properties) if missing_keys: |