移除提供者 YAML 文件中的特性跟踪支持¶
https://blueprints.launchpad.net/nova/+spec/copy-applied-provider-yaml
本文档提出一项功能,以确保从提供者 YAML 文件中移除的特性也会从资源提供者中正确删除。
问题描述¶
Nova-compute 具有使用配置文件(provider.yaml)向资源提供者注册自定义特性的功能。https://docs.openstack.org/nova/latest/admin/managing-resource-providers.html
在这种配置文件中,即使自定义特性的值被修改或特性被删除,原始特性也不会从目标资源提供者中移除。在用资源提供者注册的自定义特性被替换,并且旧的自定义特性影响调度的情况下,这种行为可能成为一个问题。
用例¶
作为云运营商,我希望确保对于相同类型的自定义特性,只有一种特性与资源提供者注册。
作为云运营商,我希望在 nova-compute 的配置文件中完成自定义特性的注册,而无需额外的实现(在另一个系统中调用 Placement API 使用 API/CLI)。
提议的变更¶
我们建议添加一个流程,让 nova-compute 在将内容应用于 placement 后,将 provider.yaml 文件的内容复制到 /var/lib/nova/applied_provider.yaml。
然后,当基于 provider.yaml 文件更新 placement 时,nova-compute 会在 /var/lib/nova/applied_provider.yaml 和 /etc/nova/provider.yaml 之间执行差异比较,以检测 provider.yaml 文件中是否删除了任何特性。
目前,差异比较仅限于特性,但以后可以将此逻辑扩展到允许使用差异比较 provider.yaml 的任何部分。
备选方案¶
仅将文件中定义的自定义特性注册到资源提供者,将 provider.yaml 视为声明性数据。但是,这是一个破坏性更改,并且存在对现有环境的影响的担忧。
在 provider.yaml 中添加类似
declarative_prefix的定义,以仅声明性地处理具有declarative_prefix的特性。在这种情况下,对 provider.yaml 中非特性元素的扩展性有限,并且 provider.yaml 中的定义和资源跟踪器的代码都变得复杂。
数据模型影响¶
无
REST API 影响¶
无
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
无
性能影响¶
预计不会对 nova 的性能产生影响。如果自定义特性更新频繁,则删除和创建特性的请求将频繁发送到 Placement API。
其他部署者影响¶
无
开发人员影响¶
无
升级影响¶
无
实现¶
负责人¶
- 主要负责人
mkuroha
- 其他贡献者
无
功能联络人¶
- 功能联络人
需要联络人
工作项¶
在
_merge_provider_configs方法中实现 provider.yaml 的复制以及与 applied_provider.yaml 的特性差异提取。
依赖项¶
无
测试¶
添加单元/功能测试
文档影响¶
更新现有的 使用配置文件管理资源提供者 指南,以解释与 applied_provider.yaml 相关的行为。
参考资料¶
无
历史¶
发布名称 |
描述 |
|---|---|
2025.2 Flamingo |
已批准 |
2026.1 Flamingo |
重新提出 |