Update the default etcd3gw endpoint to v3
* Recent versions of etcd no longer support the /v3alpha/ endpoint
* It's probably better to skip directly to the /v3/ endpoint
as a default.
* Note that this probably means a new minor version of tooz, while
the behaviour can be worked around in config, this is enough to
break existing systems on upgrade.
* Updated the test to test backwards compatibility.
* Updated the tests to use etcd 3.3.27, unfortunately we need
a newer version of pifpaf that supports 3.4 before the default
api can be used.
* The etcd backend tests have been removed: the deprecated backend
uses the v2 api which is no longer provided - a future commit
should remove the deprecated backend. The etcd3gw backend is the
replacement.
This fix is required in pifpaf, but it's not in any release:
7496e5e1c3
Depends-On: https://review.opendev.org/c/openstack/devstack/+/891353
Change-Id: Ibb5e587f6b1348794b1bf4d6405bc4a32a653c2c
This commit is contained in:
parent
0feead5deb
commit
738931d026
20
.zuul.yaml
20
.zuul.yaml
@ -8,8 +8,6 @@
|
|||||||
- release-notes-jobs-python3
|
- release-notes-jobs-python3
|
||||||
check:
|
check:
|
||||||
jobs:
|
jobs:
|
||||||
- tooz-tox-py38-etcd
|
|
||||||
- tooz-tox-py310-etcd
|
|
||||||
- tooz-tox-py38-etcd3gw
|
- tooz-tox-py38-etcd3gw
|
||||||
- tooz-tox-py310-etcd3gw
|
- tooz-tox-py310-etcd3gw
|
||||||
- tooz-tox-py38-zookeeper
|
- tooz-tox-py38-zookeeper
|
||||||
@ -28,8 +26,6 @@
|
|||||||
- tooz-tox-py310-consul
|
- tooz-tox-py310-consul
|
||||||
gate:
|
gate:
|
||||||
jobs:
|
jobs:
|
||||||
- tooz-tox-py38-etcd
|
|
||||||
- tooz-tox-py310-etcd
|
|
||||||
- tooz-tox-py38-etcd3gw
|
- tooz-tox-py38-etcd3gw
|
||||||
- tooz-tox-py310-etcd3gw
|
- tooz-tox-py310-etcd3gw
|
||||||
- tooz-tox-py38-zookeeper
|
- tooz-tox-py38-zookeeper
|
||||||
@ -55,14 +51,6 @@
|
|||||||
vars:
|
vars:
|
||||||
tox_envlist: py38-consul
|
tox_envlist: py38-consul
|
||||||
|
|
||||||
- job:
|
|
||||||
name: tooz-tox-py38-etcd
|
|
||||||
parent: openstack-tox-py38
|
|
||||||
description: |
|
|
||||||
Run tests using ``py38-etcd`` environment.
|
|
||||||
vars:
|
|
||||||
tox_envlist: py38-etcd
|
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: tooz-tox-py38-etcd3gw
|
name: tooz-tox-py38-etcd3gw
|
||||||
parent: openstack-tox-py38
|
parent: openstack-tox-py38
|
||||||
@ -131,14 +119,6 @@
|
|||||||
vars:
|
vars:
|
||||||
tox_envlist: py310-consul
|
tox_envlist: py310-consul
|
||||||
|
|
||||||
- job:
|
|
||||||
name: tooz-tox-py310-etcd
|
|
||||||
parent: openstack-tox-py310
|
|
||||||
description: |
|
|
||||||
Run tests using ``py310-etcd`` environment.
|
|
||||||
vars:
|
|
||||||
tox_envlist: py310-etcd
|
|
||||||
|
|
||||||
- job:
|
- job:
|
||||||
name: tooz-tox-py310-etcd3gw
|
name: tooz-tox-py310-etcd3gw
|
||||||
parent: openstack-tox-py310
|
parent: openstack-tox-py310
|
||||||
|
7
releasenotes/notes/etcd-3.4-eee8300c942a1263.yaml
Normal file
7
releasenotes/notes/etcd-3.4-eee8300c942a1263.yaml
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
---
|
||||||
|
upgrade:
|
||||||
|
- |
|
||||||
|
This version of tooz defaults to the `v3` endpoint for the `etcd3gw`
|
||||||
|
backend. The previous behavior can be restored by appending
|
||||||
|
`?api_version=v3alpha` to the coordination URL. The `v3alpha` and
|
||||||
|
`v3beta` endpoints have been deprecated by upstream etcd.
|
@ -1,7 +1,7 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
set -eux
|
set -eux
|
||||||
if [ -z "$(which etcd)" ]; then
|
if [ -z "$(which etcd)" ]; then
|
||||||
ETCD_VERSION=3.1.3
|
ETCD_VERSION=3.3.27
|
||||||
case `uname -s` in
|
case `uname -s` in
|
||||||
Darwin)
|
Darwin)
|
||||||
OS=darwin
|
OS=darwin
|
||||||
|
@ -181,7 +181,7 @@ class Etcd3Driver(coordination.CoordinationDriverCachedRunWatchers,
|
|||||||
================== =======
|
================== =======
|
||||||
Name Default
|
Name Default
|
||||||
================== =======
|
================== =======
|
||||||
api_version v3alpha
|
api_version v3
|
||||||
ca_cert None
|
ca_cert None
|
||||||
cert_key None
|
cert_key None
|
||||||
cert_cert None
|
cert_cert None
|
||||||
@ -201,7 +201,7 @@ class Etcd3Driver(coordination.CoordinationDriverCachedRunWatchers,
|
|||||||
DEFAULT_PORT = 2379
|
DEFAULT_PORT = 2379
|
||||||
|
|
||||||
#: Default api version if none provided
|
#: Default api version if none provided
|
||||||
DEFAULT_API_VERSION = "v3alpha"
|
DEFAULT_API_VERSION = "v3"
|
||||||
|
|
||||||
GROUP_PREFIX = b"tooz/groups/"
|
GROUP_PREFIX = b"tooz/groups/"
|
||||||
|
|
||||||
|
@ -58,7 +58,10 @@ class TestWithCoordinator(testcase.TestCase, metaclass=SkipNotImplementedMeta):
|
|||||||
if os.getenv("TOOZ_TEST_ETCD3"):
|
if os.getenv("TOOZ_TEST_ETCD3"):
|
||||||
self.url = self.url.replace("etcd://", "etcd3://")
|
self.url = self.url.replace("etcd://", "etcd3://")
|
||||||
if os.getenv("TOOZ_TEST_ETCD3GW"):
|
if os.getenv("TOOZ_TEST_ETCD3GW"):
|
||||||
self.url = self.url.replace("etcd://", "etcd3+http://")
|
# TODO(jan.gutter): When pifpaf supports etcd 3.4 we should use the
|
||||||
|
# defaults
|
||||||
|
self.url = self.url.replace("etcd://", "etcd3+http://") + \
|
||||||
|
"?api_version=v3beta"
|
||||||
self.useFixture(fixtures.NestedTempfile())
|
self.useFixture(fixtures.NestedTempfile())
|
||||||
self.group_id = get_random_uuid()
|
self.group_id = get_random_uuid()
|
||||||
self.member_id = get_random_uuid()
|
self.member_id = get_random_uuid()
|
||||||
|
@ -39,14 +39,14 @@ class TestEtcd3Gw(testcase.TestCase):
|
|||||||
'timeout': etcd3gw_driver.Etcd3Driver.DEFAULT_TIMEOUT},
|
'timeout': etcd3gw_driver.Etcd3Driver.DEFAULT_TIMEOUT},
|
||||||
{'coord_url': ('etcd3+https://my_host:666?ca_cert=/my/ca_cert&'
|
{'coord_url': ('etcd3+https://my_host:666?ca_cert=/my/ca_cert&'
|
||||||
'cert_key=/my/cert_key&cert_cert=/my/cert_cert&'
|
'cert_key=/my/cert_key&cert_cert=/my/cert_cert&'
|
||||||
'timeout=42&api_version=v3'),
|
'timeout=42&api_version=v3alpha'),
|
||||||
'protocol': 'https',
|
'protocol': 'https',
|
||||||
'host': 'my_host',
|
'host': 'my_host',
|
||||||
'port': 666,
|
'port': 666,
|
||||||
'ca_cert': '/my/ca_cert',
|
'ca_cert': '/my/ca_cert',
|
||||||
'cert_key': '/my/cert_key',
|
'cert_key': '/my/cert_key',
|
||||||
'cert_cert': '/my/cert_cert',
|
'cert_cert': '/my/cert_cert',
|
||||||
'api_path': '/v3/',
|
'api_path': '/v3alpha/',
|
||||||
'timeout': 42})
|
'timeout': 42})
|
||||||
@ddt.unpack
|
@ddt.unpack
|
||||||
@mock.patch('etcd3gw.client')
|
@mock.patch('etcd3gw.client')
|
||||||
|
Loading…
Reference in New Issue
Block a user