Merge "[spec] Refactoring Rally cleanup"
This commit is contained in:
commit
6cd18abe6a
128
doc/specs/in-progress/cleanup_refactoring.rst
Normal file
128
doc/specs/in-progress/cleanup_refactoring.rst
Normal file
@ -0,0 +1,128 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
=========================
|
||||
Refactoring Rally Cleanup
|
||||
=========================
|
||||
|
||||
Current generic mechanism is nice but it doesn't work enough well in real life.
|
||||
And in cases of existing users, persistence context and disaster cleanups it
|
||||
doesn't work well.
|
||||
This proposal should be useful for covering following use cases.
|
||||
|
||||
|
||||
Problem description
|
||||
===================
|
||||
|
||||
There are 5 use cases that require cleanup refactoring:
|
||||
|
||||
#. Benchmarking with existing tenants.
|
||||
|
||||
Keep existing resources instead of deleting all resources in the tenants.
|
||||
|
||||
#. Persistence benchmark context.
|
||||
|
||||
Create benchmark environment once before benchmarking. After that run some
|
||||
amount of benchmarks that are using it and at the end just delete all
|
||||
created resources by context cleanups.
|
||||
|
||||
#. Disaster cleanup.
|
||||
|
||||
Delete all resources created by Rally in such case if something went wrong
|
||||
with server that is running Rally.
|
||||
|
||||
#. Isolated task
|
||||
|
||||
It is quite important to add ability to run few instances of Rally against
|
||||
cloud simultanesouly (and one cleanup, won't affect the others)
|
||||
|
||||
#. Testing that cleanups works
|
||||
|
||||
How to ensure that Rally cleaned all resources.
|
||||
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
Use consistent resource names as described in
|
||||
https://review.openstack.org/201545
|
||||
|
||||
* Resources created by Rally are deleted after a task finishes by
|
||||
`UserCleanup.cleanup()`.
|
||||
|
||||
* Resources created by contexts are deleted when the environment is
|
||||
not necessary by the context class `cleanup()`.
|
||||
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
* Use OpenStack project resources cleaner (ospurge). This enables us to purge
|
||||
the tenants, regardless of resource naming, so we only need to keep track of
|
||||
Rally tenants (naming could be a solution here) and resources in admin
|
||||
tenant. In this case, we need to think about a case where Rally needs to
|
||||
cleanup some resources from a existing tenant while leaving the rest
|
||||
available.
|
||||
|
||||
* Use/enhance Tempest cleanup command (tempest/cmd/cleanup.py). Compare
|
||||
functionality or fix the version in tempest. Maybe tempest_lib would be a
|
||||
better place for this, and for the cleanup code in general. In this case,
|
||||
we need to think about a case where a Rally scenario creates a tenant, and
|
||||
then deletes it but some resources are left around. And also we need to think
|
||||
about a case of benchmark on existing tenants.
|
||||
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
wtakase aka Wataru Takase
|
||||
|
||||
Other contributors:
|
||||
rvasilets aka Roman Vasilets
|
||||
stpierre aka Chris St. Pierre
|
||||
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
* Consider how to deal resources which don't be named by
|
||||
generate_random_name(). For example, Neutron ports which are created as
|
||||
side-effect of other resources (routers, networks, servers) don't have
|
||||
resource names. In this case, ports always have an "owner" so cleanup should
|
||||
check port's owner's name. And what about floating IPs?
|
||||
(Needed by use cases 1, 2, 3, 4, 5)
|
||||
|
||||
* Add name prefix filter for deleting resource which has specified prefix.
|
||||
(Needed by use cases 1, 2, 3, 4, 5)
|
||||
|
||||
* Add ability to specify the filter to be used for handling more than
|
||||
one prefix.
|
||||
(Needed by use cases 3, 5)
|
||||
|
||||
* Support negative filter which deletes unmatched resources.
|
||||
(Needed by use cases 3, 5)
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
|
||||
* Consistent resource names: https://review.openstack.org/201545
|
||||
|
||||
* Add name pattern filter for resource cleanup:
|
||||
https://review.openstack.org/#/c/139643/
|
||||
|
||||
* Finish support of benchmarking with existing users:
|
||||
https://review.openstack.org/#/c/168524/
|
||||
|
||||
* Add support of persistence benchmark environment:
|
||||
https://github.com/openstack/rally/blob/master/doc/feature_request/persistence_benchmark_env.rst
|
||||
|
||||
* Production ready cleanups:
|
||||
https://github.com/openstack/rally/blob/master/doc/feature_request/production_ready_cleanup.rst
|
Loading…
Reference in New Issue
Block a user