From 9d0150b2c31cea4c7af7f4985d2a65911cbed8f9 Mon Sep 17 00:00:00 2001 From: Sebastian Damm Date: Fri, 3 Oct 2025 07:09:20 +0200 Subject: [PATCH] [doc] update requirements for all consul modules/lookups (#10863) * [doc] update requirements for consul_kv module python-consul has been unmaintained for a while. It uses a legacy way of passing the Consul token when sending requests. This leads to warning messages in Consul log, and will eventually break communication. Using the maintained py-consul library ensures compatibility to newer Consul versions. * [doc] replace all python-consul occurrences with py-consul * [fix] tests and possible pip server errors * [chore] remove referencce to python-consul in comment --------- Co-authored-by: Sebastian Damm --- plugins/lookup/consul_kv.py | 4 ++-- plugins/modules/consul.py | 4 ++-- plugins/modules/consul_kv.py | 6 +++--- tests/integration/targets/consul/tasks/main.yml | 6 ++++-- tests/utils/constraints.txt | 2 ++ 5 files changed, 13 insertions(+), 9 deletions(-) diff --git a/plugins/lookup/consul_kv.py b/plugins/lookup/consul_kv.py index f57b3da891..cb42b27ab8 100644 --- a/plugins/lookup/consul_kv.py +++ b/plugins/lookup/consul_kv.py @@ -16,7 +16,7 @@ description: with simple rest commands. - C(curl -X PUT -d 'some-value' http://localhost:8500/v1/kv/ansible/somedata). requirements: - - 'python-consul python library U(https://python-consul.readthedocs.io/en/latest/#installation)' + - 'py-consul python library U(https://github.com/criteo/py-consul?tab=readme-ov-file#installation)' options: _raw: description: List of key(s) to retrieve. @@ -131,7 +131,7 @@ class LookupModule(LookupBase): if not HAS_CONSUL: raise AnsibleError( - 'python-consul is required for consul_kv lookup. see http://python-consul.readthedocs.org/en/latest/#installation') + 'py-consul is required for consul_kv lookup. see https://github.com/criteo/py-consul?tab=readme-ov-file#installation') # get options self.set_options(direct=kwargs) diff --git a/plugins/modules/consul.py b/plugins/modules/consul.py index 9c36ba65f2..51554246c7 100644 --- a/plugins/modules/consul.py +++ b/plugins/modules/consul.py @@ -25,7 +25,7 @@ description: metadata so at that stage change management is to be added. - See U(http://consul.io) for more details. requirements: - - python-consul + - py-consul - requests author: "Steve Gargan (@sgargan)" extends_documentation_fragment: @@ -549,7 +549,7 @@ class ConsulCheck(object): def test_dependencies(module): if not python_consul_installed: - module.fail_json(msg="python-consul required for this module. see https://python-consul.readthedocs.io/en/latest/#installation") + module.fail_json(msg="py-consul required for this module. see https://github.com/criteo/py-consul?tab=readme-ov-file#installation") def main(): diff --git a/plugins/modules/consul_kv.py b/plugins/modules/consul_kv.py index 2987e71a86..d0dd003e34 100644 --- a/plugins/modules/consul_kv.py +++ b/plugins/modules/consul_kv.py @@ -20,7 +20,7 @@ description: of the results. - See http://www.consul.io/docs/agent/http.html#kv for more details. requirements: - - python-consul + - py-consul - requests author: - Steve Gargan (@sgargan) @@ -150,8 +150,8 @@ except ImportError: from ansible.module_utils.basic import AnsibleModule -# Note: although the python-consul documentation implies that using a key with a value of `None` with `put` has a -# special meaning (https://python-consul.readthedocs.io/en/latest/#consul-kv), if not set in the subsequently API call, +# Note: although the py-consul implementation implies that using a key with a value of `None` with `put` has a special +# meaning (https://github.com/criteo/py-consul/blob/master/consul/api/kv.py), if not set in the subsequently API call, # the value just defaults to an empty string (https://www.consul.io/api/kv.html#create-update-key) NOT_SET = None diff --git a/tests/integration/targets/consul/tasks/main.yml b/tests/integration/targets/consul/tasks/main.yml index 04e2d1b2b5..6ca51cb469 100644 --- a/tests/integration/targets/consul/tasks/main.yml +++ b/tests/integration/targets/consul/tasks/main.yml @@ -21,11 +21,13 @@ register: result until: result is success when: ansible_distribution_file_variety|default() == 'RedHat' and ansible_distribution_major_version is version('6', '<=') - - name: Install python-consul + - name: Install py-consul pip: - name: python-consul + name: py-consul extra_args: "-c {{ remote_constraints }}" register: result + retries: 3 + delay: 5 until: result is success - name: Generate privatekey community.crypto.openssl_privatekey: diff --git a/tests/utils/constraints.txt b/tests/utils/constraints.txt index 775919a725..f58f9fed57 100644 --- a/tests/utils/constraints.txt +++ b/tests/utils/constraints.txt @@ -27,3 +27,5 @@ redis ; python_version >= '3.6' pycdlib < 1.13.0 ; python_version < '3' # 1.13.0 does not work with Python 2, while not declaring that python-daemon <= 2.3.0 ; python_version < '3' bcrypt < 4.0.0 # TEMP: restrict to < 4.0.0 since installing 4.0.0 fails on RHEL 8 +py-consul < 1.3.0 ; python_version < '3.8' # 1.3.0 dropped support for Python 3.5, 3.6, 3.7 +py-consul < 1.5.4 ; python_version < '3.9' # 1.5.4 dropped support for Python 3.8