This work is licensed under a Creative Commons Attribution 3.0 Unported License.

http://creativecommons.org/licenses/by/3.0/legalcode

测试帐户 持续

https://blueprints.launchpad.net/tempest/+spec/test-accounts-continued

Tempest 测试帐户管理

问题描述

“测试帐户”规范提供了预配置帐户的支持,以及以 YAML 格式配置这些帐户的支持。现有实现存在一些限制

  • 所有帐户必须属于同一网络

  • 所有帐户必须是同一类型,因此我们在 tempest.conf 和 accounts.yaml 中配置了帐户的组合

提议的变更

扩展帐户 YAML 文件的格式,以支持指定为帐户预配置的资源名称和类型。这些资源旨在被测试重用,并且不应被清理。

- credentials:
      username: 'user_1'
      tenant_name: 'test_tenant_1'
      password: 'test_password'
  resources:
      network: 'my_network'
      subnet: 'my_subnet'

- credentials:
      username: 'user_2'
      (...)

扩展帐户 YAML 文件的格式,以支持指定帐户类型。我们可以有一个帐户类型标识符,或者替代地,一个角色列表。

- credentials:
      username: 'admin'
      tenant_name: 'admin_tenant'
      password: 'admin_password'
  type: 'admin'

- credentials:
      username: 'swift_admin'
      tenant_name: 'admin_tenant'
      password: 'admin_password'
  roles:
      - reseller

调整凭证提供程序,使其能够处理基于特定角色以及帐户类型(目前通过专用方法可用)的凭证请求。

抽象实现可能如下所示

@abc.abstractmethod
def get_creds_by_roles(self, roles=None):
    return

def get_creds_by_type(self, type=None):
    if type == "primary":
        return get_primary_creds()
        (...)

调整非预配置帐户场景,也从 accounts YAML 文件中读取帐户,并弃用 tempest.conf 中除了帐户文件名之外的任何帐户信息。

提供一个工具供 devstack 使用,以生成预配置的帐户和相应的 YAML 文件。 这方面的工作已经开始 https://review.openstack.org/#/c/107758/

与运行后清理工具集成,以避免删除 YAML 文件中指定的预配置资源。

替代方案

当前实现是可用的但未完成的,因此唯一的替代方案是不使用它,或者忍受它的限制。

实现

负责人

Andrea Frittoli <andrea.frittoli@hp.com>

里程碑

完成目标里程碑

Kilo-final

工作项

  • 扩展 YAML 文件解析器

  • 实现配置资源的非清理

  • 弃用帐户配置选项

  • 从 YAML 读取帐户信息,并回退到弃用的配置选项

  • 实现配置工具

  • 在租户隔离以及预配置帐户的情况下,切换 devstack 和作业定义以使用 accounts YAML 文件

  • 配置 check/gate 以运行租户隔离和预配置帐户的组合

依赖项