summaryrefslogtreecommitdiff
path: root/ironic/drivers/modules/redfish/inspect.py
diff options
context:
space:
mode:
authorIlya Etingof <etingof@gmail.com>2019-03-06 14:46:20 +0100
committerIlya Etingof <etingof@gmail.com>2019-03-08 08:18:48 +0100
commita8087359370ff9f162be7c6b521969a8fb54a96b (patch)
tree4c4f125368759eaf1a9c68dbb1c1e315bcdc8d8c /ironic/drivers/modules/redfish/inspect.py
parent5d25189b139961ee1cdd7243dbd19cd924b85d56 (diff)
downloadironic-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.py16
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: