tooz doesn't use upper-constraints so we get the newest version of all
dependencies. It seems one of these, etcd3, is incompatible with recent
versions of protobuf.
Failed to import test module: tooz.tests.drivers.test_etcd3
Traceback (most recent call last):
File "/usr/lib/python3.7/unittest/loader.py", line 436, in _find_test_path
module = self._get_module_from_name(name)
File "/usr/lib/python3.7/unittest/loader.py", line 377, in _get_module_from_name
__import__(name)
File "/home/zuul/src/opendev.org/openstack/tooz/tooz/tests/drivers/test_etcd3.py", line 22, in <module>
import tooz.drivers.etcd3 as etcd3_driver
File "/home/zuul/src/opendev.org/openstack/tooz/tooz/drivers/etcd3.py", line 18, in <module>
import etcd3
File "/home/zuul/src/opendev.org/openstack/tooz/.tox/py37/lib/python3.7/site-packages/etcd3/__init__.py", line 3, in <module>
import etcd3.etcdrpc as etcdrpc
File "/home/zuul/src/opendev.org/openstack/tooz/.tox/py37/lib/python3.7/site-packages/etcd3/etcdrpc/__init__.py", line 1, in <module>
from .rpc_pb2 import *
File "/home/zuul/src/opendev.org/openstack/tooz/.tox/py37/lib/python3.7/site-packages/etcd3/etcdrpc/rpc_pb2.py", line 16, in <module>
from etcd3.etcdrpc import kv_pb2 as kv__pb2
File "/home/zuul/src/opendev.org/openstack/tooz/.tox/py37/lib/python3.7/site-packages/etcd3/etcdrpc/kv_pb2.py", line 36, in <module>
type=None),
File "/home/zuul/src/opendev.org/openstack/tooz/.tox/py37/lib/python3.7/site-packages/google/protobuf/descriptor.py", line 755, in __new__
_message.Message._CheckCalledFromGeneratedFile()
TypeError: Descriptors cannot not be created directly.
If this call came from a _pb2.py file, your generated code is out of date and must be regenerated with protoc >= 3.19.0.
If you cannot immediately regenerate your protos, some other possible workarounds are:
1. Downgrade the protobuf package to 3.20.x or lower.
2. Set PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python (but this will use pure-Python parsing and will be much slower).
The etcd3 dependency is only used for the etcd3 driver which was
deprecated in change Iff0cd3b51cfc45ecbddc831c55267e80e9c79cac. The
protobuf dependency is only used for etcd3. We can't outright remove the
etcd3 driver yet as it hasn't been long enough since we deprecated it.
That will happen soon enough though and until then we can simply cap
protobuf to an older version that is compatible with the most recent
etcd3 release.
While we're here, we also sync the lower boundaries in the docs
requirments and add some comments indicating where they come from/what
they're for.
Change-Id: I8d6647118be22b0ce55e01b7e5451612ebe30e73
Signed-off-by: Stephen Finucane <stephenfin@redhat.com>
(cherry picked from commit e3de0e634af62e46162eb8d2354416ce4f2ba77c)
Introduced changes:
- pre-commit config and rules.
- Add pre-commit to pep8 gate, Flake8 is covered in the pre-commit hooks.
- Applying fixes for pre-commit compliance in all code.
Also commit hash will be used instead of version tags in pre-commit to
prevend arbitrary code from running in developer's machines.
pre-commit will be used to:
- trailing whitespace;
- Replaces or checks mixed line ending (mixed-line-ending);
- Forbid files which have a UTF-8 byte-order marker
(check-byte-order-marker);
- Checks that non-binary executables have a proper
shebang (check-executables-have-shebangs);
- Check for files that contain merge conflict strings
(check-merge-conflict);
- Check for debugger imports and py37+ breakpoint()
calls in python source (debug-statements);
- Attempts to load all yaml files to verify syntax (check-yaml);
- Run flake8 checks (flake8) (local)
For further details about tests please refer to:
https://github.com/pre-commit/pre-commit-hooks
Change-Id: I7a2386a823fdd43b138956894bd915c0e11289a9
Signed-off-by: Moisés Guimarães de Medeiros <moguimar@redhat.com>
Also fixes tox env for py38-consul tests
Update zuul script to use consul 1.7.4 (2020) vs 0.6.3 (2016)
Adds ACL tokens to all session management calls.
Change-Id: Iaddf21f14c434129541e7c9ec7134e0661f7be52
Switch to openstackdocstheme 2.2.1 and reno 3.1.0 versions. Using
these versions will allow especially:
* Linking from HTML to PDF document
* Allow parallel building of documents
* Fix some rendering problems
Update Sphinx version as well.
Disable openstackdocs_auto_name to use 'project' variable as name.
Change pygments_style to 'native' since old theme version always used
'native' and the theme now respects the setting and using 'sphinx' can
lead to some strange rendering.
openstackdocstheme renames some variables, so follow the renames
before the next release removes them. A couple of variables are also
not needed anymore, remove them.
See also
http://lists.openstack.org/pipermail/openstack-discuss/2020-May/014971.html
Change-Id: I6254b8b17eea752a5b1d6031c89de47ecc865a49
Sphinx 2.0 no longer works on python 2.7, so we need to start capping it there.
grpcio-1.16.0 introduced a bug that is breaking the tooz unit tests.
cf. I8b026a0680a91a68281e354a59012565f4db1b95 for more info. 1.18.0
fixes the problem, so bump our minimum requirement to that version.
Change-Id: I4b672563f4a80ce0e0478c867b7f85842ac3b0d3
If you're not intimately familiar with RFC 1808 it can be a bit tricky to
write tooz connection strings. In addition, some drivers do not document the
options that they recognize in a connection string. This can force a user to
read the driver code in order to figure out how to configure tooz to use said
driver, which should not be the case.
This change more explicitly documents the format of the connection string,
including which parts of an RFC 1808 URI it recognizes, and the options that
can be passed. It also clarifies which parts of the connection string are
optional (possibly because they have defaults) and which must always be
included.
Note that not every possible configuration is documented. For example, the
postgres driver supports multiple methods of configuring the connection host
and port. For consistency, I only documented the one that matches the other
drivers. This should be sufficient to allow a user to write a working
connection string.
This change also wires the etcd3 and etcd3gw drivers into the doc index since
they were missing before.
Change-Id: I66e54433115f27fb54badc2173f8f6044c49aacb
autodoc_default_flags was deprecated and is now triggering a warning
that breaks our builds. Switch to the equivalent autodoc_default_options
configuration, which essentially turns the flags into dict keys that
map to None[1]: 'Setting None is equivalent to giving the option name
in the list format (i.e. it means “yes/true/on”).'
Change-Id: I573f19a054e535a90db8bb16a02b2c7f28d8e6d1
1: http://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html#confval-autodoc_default_options
We want to default to running all tox environments under python 3, so
set the basepython value in each environment.
We do not want to specify a minor version number, because we do not
want to have to update the file every time we upgrade python.
We do not want to set the override once in testenv, because that
breaks the more specific versions used in default environments like
py35 and py36.
Decode the output of subprocess in doc/source/conf.py so that we always
have a string.
Change-Id: I17601d56b6e6d9d300bb07d8982a7bbde637822e
Signed-off-by: Doug Hellmann <doug@doughellmann.com>
Fix doc building with new PTI changes and job updates.
Add a doc/requirements.txt file with all needed dependencies.
Change-Id: Ic7963520aeb0b9c463c4f9b5675589308720d6f8
list-table is easier to be maintained.
In addition, we avoid too long lines.
We no longer have too long lines which doc8 complains,
so doc8 ignore_path can be dropped.
Change-Id: I574391295288ef9e33744aa608c2f2930a6e46f8
- 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
Add a new object called `Partitioner' which is based on the consistent
hashring implementation of tooz.hashring. The coordinator API allows to
create such an object and to use it to dispatch objects ownership across
several workers.
Change-Id: Iae8c861d5b6c15b714f1ec3bd7090d15dd468421
This is a consistent hash ring implementation based on the one that can
be found in Nova, Ironic, Ceilometer and Aodh.
Change-Id: I5d2f4efcd354a187747fa645482db2029a1a14b7
Start to organize this page with a more helpful structure
that will allow people to read it and figure out which driver
best fits there usage (and to help people decide which ones
don't).
Change-Id: I871d2eb7e7493a6633f7738ff063042d39690364
Since we run 2.6 CI tests (and the setup.cfg
classifiers so we support 2.6); we might as well mention
this in the docs.
Change-Id: I9b59378f717f7df280c429a53d0a83c129327481
Multiple sentinel hosts are now allowed by listing the additional
hosts as multiple 'sentinel_fallback' parameters. These are combined
with the first sentinel host to create a list that is provided to
Sentinel class constructor.
This provides safety in the case when the first (or any other) sentinel
host goes down.
Tests are run twice: once with fallbacks, once without.
Change-Id: Ie0a134f02617e8552a87c8bcd49996daaba07f4e
If sentinel support is desired then the connection URI should take
the form:
redis://<sentinel host>:<sentinel port>?sentinel=<master name>
This will be parsed to connect to a Sentinel server to discover a
master. The response will be used to make a connection to the
current master.
The setup-sentinel-env.sh script will exit with an error if either
the redis-server or sentinel cannot be found. When the script is
done it will clean up the mess it makes.
Change-Id: I205ed88c72587d9f5f916d344c44192bee2aa41a
- Capitalize tooz where appropriate.
- Adjust contents to be an actual header.
- Add a footnote that states tooz can be generally useful
for anyone (and not just openstack projects); this was taken
from taskflows similar footnote.
Change-Id: I9b4e0304483e2c7155f4d5107fd2967ed2c8d1a4
Start to add/build a developer oriented doc that
can be further refined to explain to developers how
to use the different tooz drivers (and what the varying
drivers capabilities are).
Change-Id: I49f6bf5b397d6bc5426c074f6196c764c8938d23