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 练习,但它们已经无法正常工作了很长时间,因此这似乎不是一个有成效的方向。
实现¶
负责人¶
- 主要负责人:
- 其他负责人:
里程碑¶
Juno-2
工作项¶
javelin2 的初步实现,支持创建/检查与 grenade javelin 中类似的资源
将 javelin2 集成到 grenade 中
添加销毁阶段以清理 javelin2
扩展资源数量,超出 grenade 中的数量,以确保我们不会在超出单例之后失败
扩展资源,超出 grenade 中的数量 - ceilometer 资源 - neutron 资源
tempest 中的单元测试
依赖项¶
无