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 目录中。

实现

负责人

主要负责人
其他贡献者

里程碑

完成目标里程碑

Kilo-2

工作项

  • 在 Devstack 中添加支持。

  • 设置一个示例仓库。

  • 让像 nova-docker 这样的项目使用它。 * (glusterfs 是一个很好的当前候选者)