This is a combination of 3 commits that are all needed to unblock gate:
1. Move testing to py36
The base infra images no longer have python 3.5 available and are
all failing. We should be testing on py36 now anyway since that is
the minimum supported version for Train.
2. Stop redis-server before running tests
Just installing redis-server on Ubuntu Bionic starts the service,
which means when we try to start one via pifpaf it fails due to the
port already being in use.
This change adds a pre-run playbook that stops the redis-server
service so ours can run successfully.
3. [stable-only] Cap stestr for python 2
stestr dropped python 2 support with version 3.0.0 and tooz does not
use constraints from openstack/requirements, so test-requirements.txt
is updated to use stestr<3.0.0 in case of python 2.
Since tooz do not consume upper-constraints there is no need for
requirement check job either so it is removed, too.
Conflicts:
tox.ini
test-requirements.txt
NOTE(elod.illes):
* tox.ini conflict is due to py37 is not yet added as tox target in
Stein.
* test-requirments.txt is not present in Stein, setup.cfg is used
instead.
First two commit was squashed in train (original patch's change id is
I3f7f7ea9069d8c890a82f31ad14c9663e98c09dc and cherry picked from commit
8207427fffc72547387369ce7ba2696a86bf7626).
Closes-Bug: 1828610
Change-Id: I7a75be587efc2098e919f1ea34f9ffc357203dfb
(cherry picked from commit 13a6dffa32789ac91b724977ed1d73375baf0824)
- Update sphinx so that warning-is-error option is available
- Fix sphinx warnings
- Install python modules required for automodule into docs env
- Fix docstring warning in tooz/coordination.py
- pbr warnerrors is no longer needed in favor of sphinx warning-is-error
Change-Id: I5d54c452522b6ee00884d7d17105af22b4c95189
The code in python-etcd3 for locks has been adjusted to reflect how tooz wants
his lock to work. That's amazing because now we can use them directly and not
implement our own locking mechanism!
Change-Id: Ia5741bae83cddd90f9bb78fba9173dca8509e6d9
Using grpc to directly access etcd3 does not work well with
eventlet based services. So we need to use the grpc HTTP
gateway API (/v3alpha).
https://coreos.com/etcd/docs/latest/dev-guide/api_grpc_gateway.html
For this we use the etcd3gw package:
https://pypi.python.org/pypi/etcd3gw
The structure of the code is very similar to the one we
already have that uses the etcd3 package.
Change-Id: I97bd7ffb05a7e40cb08c9b9d62cc45236ad292aa
This patch adds support to Tooz for taking advantage of the etcd3 gRPC-based
API (instead of the etcd2 HTTP/REST-based API) via the python-etcd3 library.
Change-Id: Ic7c3d9be42a9912fcb09c43e7637270db4011c4a
The release management team have indicated this is their preferred way
to collect release notes in future.
Closes-Bug: #1634356
Change-Id: I10fbc4cb80d53d4bf5b8b6365c7472b7706d46b2
This makes sure we install the correct and only the correct dependencies
when installing tooz, based on the driver one wants to use.
Change-Id: I58825cf228771a00b28d515a552141b42f884efa
For now it only supports locks, in the
future it may support more functionality
as time allows (and/or if people want to
add it).
Co-Authored-By: Joshua Harlow <harlowja@gmail.com>
Implements: bp add-consul-driver
Change-Id: I6064383e9db4e90fd16f17065bd7b0934ca7e125
By setting this pbr option in setup.cfg, the doc build will fail in case
of any warnings or errors occur during the build process.
Change-Id: Ia6b9cef8933ade60810a48d1813a6f3b3dc72103
We don't test against 3.3 in the integrated CI anymore
so we likely shouldn't say that we support it anymore
since it's not something we are guaranteeing.
We still support 3.4 (and that's what we are testing
against so we use that version in the setup.cfg
file).
Change-Id: I9fadcac92ea3f43e811818cf013f93445ec1b5e9
Add the foundations of a redis driver that can be used
along side the rest of the driver types.
Redis provides a few nice benefits that act as a poormans
zookeeper.
- Durability (when setup with AOF mode).
- Consistent, note that this is still restricted to only
one redis server, without the recently released redis (alpha)
clustering > 1 server will not be consistent when partitions
or failures occur (even redis clustering docs state it is
not a fully AP or CP solution, which means even with it there
will still be *potential* inconsistencies).
- Master/slave failover (when setup with redis sentinel), giving
some notion of HA (values *can* be lost when a failover transition
occurs).
Further resources/links:
- http://redis.io/
- http://redis.io/topics/sentinel
- http://redis.io/topics/cluster-spec
Change-Id: I2d90be1afae98f40ff5c4230563e686b23d42c8f
That is needed to prevent Zake driver load in real-life Zookeeper
usage - currently we had the situation when even if you want to use
just KaZoo, you needed to install partially test-requierements
(zake package).
Change-Id: I9664fda2d6e76a6e48776b4a6d92af4c4baf1425
This patch add a new driver which mimic a Kazoo client
without the need to use a real zookeeper server.
The dependency Zake (written by Joshua Harlow:harlowja@gmail.com)
has been added which provides the Kazoo API.
Change-Id: I53ca9ac972d6e2dca2f9e04b6187ee0545813e74
For now Tooz is composed of a simple API and use ZooKeeper
as the first backend.
The current API provide the group membership protocol like
'servicegroup' in Nova, we enriched it by adding the notion
of capabilities. The API is currently synchronous, we plan to
design an asynchronous one. The notification mechanism is not yet
available. Please read the associated blueprint for more details:
https://wiki.openstack.org/wiki/Oslo/blueprints/service-sync
All new backends must implement api.CoordinationDriver and
validate the unit tests. Tooz will provide a unique unit-tests suite
which will be run against all backends.
Change-Id: I4e4cefb52cf6c39a3f6ba35ab1d4ef34a77b5811