Merge "add javelin2 specification"

This commit is contained in:
Jenkins 2014-06-20 12:51:49 +00:00 committed by Gerrit Code Review
commit e1429e4f39

134
specs/javelin2.rst Normal file
View File

@ -0,0 +1,134 @@
..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
=============================
Javelin 2
=============================
https://blueprints.launchpad.net/tempest/+spec/javelin2
During the Juno Summit we discovered that Grenade was not doing the
resource validation that we believed it was. This had always been a
fragile part in grenade because complex validation of resources is
somewhat tough in bash. Instead we should build a tool in Tempest that
provides a way to create, validate, and destroy resources for us in
testing.
Problem description
===================
We need a tool that will create a set of resources, can validate that
that set of resources exists at some later point in time (temporally
disconnected with no shared memory state), and can delete that set of
resources. Having this tool we can very easily test that resources
(users, images, servers, objects, etc) survive an upgrade undisturbed
in grenade testing.
Proposed change
===============
Create a new javelin tool in tempest as part of the cmd directory.
The usage of javelin is as follows::
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>]
It requires admin keystone credentials to run because it must perform
user/tenant creation and inspection.
Resources are specified in a resources.yaml file::
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
An important piece of the resource definition is the *owner* field,
which is the user (that we've created) that is the owner of that
resource. All operations on that resource will happen as that regular
user to ensure that admin level access does not mask issues.
The check phase will act like a unit test, using well known assert
methods to verify that the correct resources exist.
This whole exercises has, and will continue to, enlighten us on ways
that the Tempest rest_client is difficult to consume outside of
Tempest tests. It should go a long way to making that a cleaner
distinction.
Alternatives
------------
The alternative is to fix the grenade javelin exercises, though
they've been non functional for long enough that this doesn't seem to
be a fruitful direction.
Implementation
==============
Assignee(s)
-----------
Primary::
sean@dague.net
Additional::
emilien.macchi@enovance.com
Milestones
----------
Juno-2
Work Items
----------
- initial pass of javelin2 that supports create / check of similar
resources as were in grenade javelin
- integration of javelin2 into grenade
- addition of destroy phase to clean up javelin2
- expand # of resources beyond what was in grenade to ensure we aren't
failing once we get beyond singletons
- expansion of resources beyond what was in grenade
- ceilometer resources
- neutron resources
- unit tests in tempest
Dependencies
============
None