无分支 Tempest - 服务扩展

https://blueprints.launchpad.net/tempest/+spec/branchless-tempest-extensions

这是无分支 Tempest 的后续工作,用于在发布过程中添加的新服务扩展。

问题描述

在转向无分支 Tempest 后,我们现在正在多个 OpenStack 代码分支上运行 Tempest。目前是 icehouse 和 juno,但未来将是 icehouse、juno 和 kepler。

当 Nova 在 Juno 中添加一个新扩展,并且 Tempest 中需要针对该 API 部分的测试时会发生什么? 今天该测试会失败,因为它无法通过 icehouse。

提议的变更

建议的更改是在 devstack-gate 功能网格中添加另一层,该层指定每个发布版本支持哪些扩展。

目前在 nova 定义中我们有

nova:
  base:
     services: [n-api, n-cond, n-cpu, n-crt, n-net, n-obj, n-sch]

设想中的定义如下所示

nova:
  base:
     services: [n-api, n-cond, n-cpu, n-crt, n-net, n-obj, n-sch]
  icehouse:
     compute-ext: [floating-ips, aggregates, ... ]

扩展列表不存在意味着假定为“全部”。 此外,预计您能够像 rm-services 一样指定“rm-compute-ext”,以便您可以执行以下操作。

nova-cells:
  base:
    services: [n-cell]
    rm-compute-ext: [aggregates, hosts]

这将禁用配置时任何时候的这些 nova 扩展。

为了使之起作用,需要在以下方面进行更改

  • devstack-gate

    • 以解析这些额外的段落并将它们传递给 devstack

  • devstack

    • 根据它获取项目的扩展列表并设置正确的扩展

    • 正确计算 master 的“全部”情况(尤其是在我们支持 rm-compute-ext 段落的情况下)

    • 当这些映射到功能标志时,设置已启用功能的正确 tempest 字段。

替代方案

Nova API 微版本可能在这里消除分支情况下的需求,因为我们将能够指定特定的测试具有特定的必需版本。 但是,这不能解决 cells 的情况。

实现

负责人

主要负责人

目前还没有

里程碑

未知

工作项

工作项跨项目

  • 见上文

依赖项

仅以上列出的