Blueprint-flagged-module-loading
| |
旧设计页面
此页面曾用于帮助设计 OpenStack 早期版本的一个特性。它可能已经被实现,也可能没有。因此,此页面可能不会更新,并且可能包含过时的信息。上次更新时间为 2014-03-26 |
我们目前使用 utils.LazyPluggable 和 utils.import_class 来加载类。我们应该使用一种单一的方法。我建议我们使用 LazyPluggable 的技术,但对其进行修改,这样我们就不需要指定后端列表,而是可以像 import_class 中使用的那样提供类引用。这样我们就可以获得后端的延迟加载,从而减少对操作顺序的关注,例如加载标志,并且我们不需要维护可能值的列表,甚至可以在其他包中引用类,并允许驱动程序编写在 nova 主源代码树之外。
目前,nova 使用至少四种不同的方法来延迟加载组件
- utils.import_object (managers 和 drivers)
- utils.import_class (auth manager)
- utils.LazyPluggable (db backend)
- switch 语句 (virt connections)
它们都以一个标志开始。没有理由拥有四种不同的延迟对象加载方式。
- Launchpad 条目:NovaSpec:foo 或 SwiftSpec:foo
- 创建:
- 贡献者:
总结
发布说明
本节应包含一个段落,描述此更改对最终用户的影响。它旨在包含在首次实现此更改的发布说明中。(并非所有这些都会实际包含在发布说明中,具体由发布经理酌情决定;但编写它们是一项有用的练习。)
这是强制性的。
原理
用户故事
前提条件
设计
您可以拥有更好的描述问题特定部分的子部分。
实现
本节应描述实施所讨论更改的行动计划(“如何”)。可以包括诸如
UI 变更
应涵盖对 UI 的要求更改或实施此功能的特定 UI
代码变更
代码变更应包括需要更改的内容的概述,并且在某些情况下甚至包括具体细节。
迁移
包括
- 数据迁移(如果有)
- 从旧 URL 到新 URL 的重定向(如果有)
- 如何引导用户使用新的操作方式(如果需要)。
测试/演示计划
这不必在规范接近 Beta 之前添加或完成。
未解决的问题
这应该突出显示需要在进一步的规范中解决的任何问题,而不是规范本身的问题;因为任何存在问题的规范都无法获得批准。
BoF 议程和讨论
使用本节记录 BoF 期间的笔记;如果将其保留在批准的规范中,请用于总结讨论内容并记录任何被拒绝的选项。