venkata anil cf541956e8 implement locking mechanism in rally
Rally is not having locking mechanism to control rally processes
simultaneous access to the same OSP resource. For example, we
don't want two different rally processes to delete the same
floating ip.

In this implementation we create a "RallyLock" table in rally DB
which can store a unique UUID. When a user wants only one process
to modify a OSP resource at a time, take a lock by inserting
resource's (for example floating ip) uuid into this table. If
another process wants to take lock, it will get error as table
won't allow duplicate values for uuid.

Sqlalchemy is throwing errors when this DB code is implemented
as a rally plugin. So we needed to find the alternate option
i.e python package to make this DB changes working.

To acquire and release a lock, rally scenario has to call the
api like

from browbeat_rally.db import api as db_api
from oslo_db import exception as db_exc

net_id = net['network']['id']
try:
    db_api.acquire_lock(net_id)
except db_exc.DBDuplicateEntry:
    LOG.info("This uuid {} is already in use".format(net_id))

db_api.release_lock(net_id)

Change-Id: I0c14a3c0ddb3e2d4e3478e763d2ee4066440b9ac
2021-08-10 17:14:10 +05:30
..
2019-12-16 08:11:35 -05:00

Running browebat ansible unit tests

Running ansible molecule unit tests

Adding ansible molecue unit test

  • cd ansible/install/roles/<example role> molecule init scenario --role-name <example role> --driver-name docker