Devstack 外部插件¶
https://blueprints.launchpad.net/tempest/+spec/devstack-external-plugins
支持 Devstack 的外部插件。
问题描述¶
Devstack 具有相当强大的插件支持,你只需要将你的额外功能放入 extras.d/ 目录中,它就会自动解析该文件并安装该功能,只要你在 local.conf 中启用了它即可。
这一切工作得很好,但对于无法直接集成到 Devstack 核心的项目来说,这不够灵活。目前,一个希望告知其用户如何测试功能的外部 OpenStack 项目必须解释如何下载文件并将其放入 extras.d 目录并启用它。
对于集成项目,他们可能希望直接在自己的仓库中处理 Devstack 的方式,并让 Devstack 使用它,而不是必须请求在 Devstack 仓库中进行更改。
提议的变更¶
Devstack 将提供一个新的 enable_plugin 函数调用,其格式如下
enable_plugin <name> <http://git.openstack.org/foo/external_feature>
[refname]
name 是为启用而选择的任意名称,repo 是 git 仓库的完整 URL,refname 是可选的引用描述(如果未提供,则默认为 master)。
Devstack 将在 ${DEST}/name 中检出该仓库,并在仓库的根目录下查找 /devstack/ 目录。
该目录中的文件将包含
/devstack/settings - 一个将被读取以覆盖全局设置的文件,这些变量将立即在全局命名空间中可用。
/devstack/plugin.sh - 各个阶段的调度器
Devstack 在执行时将
获取 extras.d 仓库的配置。
将 extras 仓库克隆到 ${DEST}
在特定阶段运行所有 extras.d 脚本
在特定阶段运行所有插件 plugin.sh
这将允许需要沟通其配置的树外项目通过设置导出数据,从而让其他项目根据其设置进行配置。
替代方案¶
另一种选择是保持现状,就像现在一样,让他们从外部仓库中 curl extras 文件并将其放在 extras.d 目录中。
实现¶
负责人¶
- 主要负责人
Chmouel Boudjnah <chmouel@chmouel.com>
- 其他贡献者
Sean Dague <sean@dague.net>
里程碑¶
- 完成目标里程碑
Kilo-2
工作项¶
在 Devstack 中添加支持。
设置一个示例仓库。
让像 nova-docker 这样的项目使用它。 * (glusterfs 是一个很好的当前候选者)