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。