Javelin 2

https://blueprints.launchpad.net/tempest/+spec/javelin2

在 Juno Summit 期间,我们发现 Grenade 并没有执行我们认为它正在执行的资源验证。这在 Grenade 中一直是一个脆弱的部分,因为使用 bash 对资源进行复杂的验证比较困难。相反,我们应该在 Tempest 中构建一个工具,为我们提供创建、验证和销毁资源的方式,用于测试。

问题描述

我们需要一个工具,它可以创建一个资源集合,可以在稍后的时间点验证该资源集合的存在(时间上不连续,没有共享内存状态),并且可以删除该资源集合。有了这个工具,我们可以很容易地测试资源(用户、镜像、服务器、对象等)在升级过程中是否不受干扰地存活在 grenade 测试中。

提议的变更

在 tempest 的 cmd 目录中创建一个新的 javelin 工具。

javelin 的用法如下

usage: javelin.py [-h] -m <create|check|destroy>
                [--os-username <auth-user-name>]
                [--os-password <auth-password>]
                [--os-tenant-name <auth-tenant-name>]
                [--os-auth-url <auth-url>]

它需要运行管理员 keystone 凭据,因为它必须执行用户/租户的创建和检查。

资源在 resources.yaml 文件中指定

tenants:
  - javelin
  - discuss

users:
  - name: javelin
    pass: gungnir
    tenant: javelin
  - name: javelin2
    pass: gungnir2
    tenant: discuss

# resources that we want to create
images:
  - name: javelin_cirros
    owner: javelin
    file: cirros-0.3.2-x86_64-blank.img
    format: ami
    aki: cirros-0.3.2-x86_64-vmlinuz
    ari: cirros-0.3.2-x86_64-initrd

servers:
  - name: peltast
    owner: javelin
    flavor: m1.small
    image: javelin_cirros
  - name: hoplite
    owner: javelin
    flavor: m1.medium
    image: javelin_cirros

资源定义的一个重要部分是 owner 字段,它是拥有该资源的用户(我们创建的用户)。对该资源的所有操作都将以该普通用户身份进行,以确保管理员级别的访问权限不会掩盖问题。

检查阶段将像一个单元测试,使用众所周知的断言方法来验证正确的资源是否存在。

整个过程已经并且将继续让我们了解 Tempest rest_client 在 Tempest 测试之外难以使用的原因。这将有助于使其成为一个更清晰的区分。

替代方案

另一种选择是修复 grenade javelin 练习,但它们已经无法正常工作了很长时间,因此这似乎不是一个有成效的方向。

实现

负责人

主要负责人:

sean@dague.net

其他负责人:

emilien.macchi@enovance.com

里程碑

Juno-2

工作项

  • javelin2 的初步实现,支持创建/检查与 grenade javelin 中类似的资源

  • 将 javelin2 集成到 grenade 中

  • 添加销毁阶段以清理 javelin2

  • 扩展资源数量,超出 grenade 中的数量,以确保我们不会在超出单例之后失败

  • 扩展资源,超出 grenade 中的数量 - ceilometer 资源 - neutron 资源

  • tempest 中的单元测试

依赖项