DRAC 厂商透传用于 BIOS 设置管理

https://blueprints.launchpad.net/ironic/+spec/drac-bios-mgmt

本规范将暴露厂商透传方法,以便外部服务获取、设置和提交对 BIOS 设置的更改。本规范假定外部服务完全了解其将要管理的特定硬件,并且不会尝试标准化、规范化或简化暴露的设置,除了进行一些最小的便利措施以及在 XML 和 JSON 之间映射所需的操作外。

问题描述

针对特定工作负载和功耗配置调整服务器涉及许多不同的参数,其中一些参数必须在系统固件级别进行调整。在 Dell 系统上,通过带外方式进行操作涉及与 DRAC 通信,让其代表您进行更改。

提议的变更

为了暴露这些更改,我建议向 drac 驱动程序添加 4 个厂商透传方法

  • get_bios_config - 获取系统当前的 BIOS 配置,并将其返回。这将返回一个包含系统当前 BIOS 配置的 JSON 结构。它没有参数。

  • set_bios_config - 将 BIOS 配置的更改排队,以供稍后提交。它将接受与 get_bios_config 返回的 JSON 数据结构相同的格式。如果任何更改的设置无法验证为正确的更改、尝试更改只读设置或由于其他原因无法在 DRAC 中排队更改,则将引发异常。

  • commit_bios_config - 提交一组排队的 BIOS 配置更改,并在需要提交更改时安排系统重新启动。

  • abandon_bios_config - 放弃一组排队的 BIOS 配置更改。

对于本规范,仅考虑可以通过 DCIM Bios 和 Boot Management Profile 进行的更改,尽管 DRAC 可以更改许多其他 BIOS 和硬件参数。

备选方案

创建一个大多数厂商都同意的通用 BIOS 接口。这是一个长期解决方案,将来应该取代或驱动此实现。

数据模型影响

无。

REST API 影响

四个新的 API 调用

  • get_bios_config - 一个 GET 方法。不接受任何参数,返回一个包含系统 BIOS 配置参数的 JSON 数据块。

  • set_bios_config - 一个 POST 方法。接受一个与 get_bios_config 返回的格式和设置相同的 JSON 数据块。返回以下状态码

    • 200 如果所提出的新参数通过验证并被接受进行进一步处理。

    • 204 如果所提出的新参数通过验证,但实际上并未更改 BIOS 配置。

    • 409 如果所提出的新参数包含一个无法设置为请求值的参数,因为该参数是只读的,或者所提出的新参数无效。

    • 403 如果已经有提议的更改正在提交过程中。

  • commit_bios_config - 一个 POST 方法。不接受任何参数,提交由 set_bios_config 调用所做的更改,并在需要时安排系统重新启动以应用更改。返回以下状态码

    • 202 如果创建了一个提交作业,并且系统需要重新启动。

    • 200 如果设置已在无需重新启动的情况下提交。

    • 204 如果没有需要提交的设置。

    • 403 如果已经有提议的更改正在提交过程中。

  • abandon_bios_config - 一个 POST 方法。不接受任何参数,并放弃由 set_bios_config 调用所做的,尚未由 commit_bios_config 作业提交的任何更改。返回以下状态码

    • 200 如果所提出的更改已成功从队列中删除。

    • 204 如果没有要从队列中删除的提议的更改

    • 403 如果所提出的更改已经在提交过程中。

RPC API 影响

驱动程序 API 影响

Nova 驱动程序影响

目前没有。如果此规范被推广到其他驱动程序,我们需要确定应该向 Nova 暴露哪些(如果有)功能。

安全影响

通过此 API 很容易使系统无法启动,因为它允许您启用和禁用各种硬件,并随意更改启动顺序。

其他最终用户影响

可扩展性影响

性能影响

无。

其他部署者影响

开发人员影响

实现

负责人

主要负责人

victor-lowther

工作项

  • 创建并实现 DracVendorPassthruBios 类

依赖项

  • 此功能依赖于 OpenWSMAN 库的 Python 绑定,我们已经将其用于 DRAC 驱动程序的其余部分。

  • 此功能需要第 11 代或更高版本的 Dell PowerEdge 服务器。

测试

  • 单元测试

  • 第三方 CI:我将尝试在实现此驱动程序的同时实现它,前提是我能够获得足够的内部资源和适当的网络连接。

升级和向后兼容性

预计没有,并且不应为此 API 提供稳定性保证。

文档影响

用户文档应提及此厂商透传 API。

参考资料

DCIM Bios 和 Boot Management Profile