diff --git a/changelogs/fragments/disutils.version.yml b/changelogs/fragments/disutils.version.yml new file mode 100644 index 00000000000..48f69e4bd09 --- /dev/null +++ b/changelogs/fragments/disutils.version.yml @@ -0,0 +1,2 @@ +bugfixes: + - "Various modules and plugins - use vendored version of ``distutils.version`` included in ansible-core 2.12 if available. This avoids breakage when ``distutils`` is removed from the standard library of Python 3.12. Note that ansible-core 2.11, ansible-base 2.10 and Ansible 2.9 are right now not compatible with Python 3.12, hence this fix does not target these ansible-core/-base/2.9 versions." diff --git a/molecule/default/roles/helm/library/helm_test_version.py b/molecule/default/roles/helm/library/helm_test_version.py index 3068597d5c1..06a3fdfe252 100644 --- a/molecule/default/roles/helm/library/helm_test_version.py +++ b/molecule/default/roles/helm/library/helm_test_version.py @@ -51,7 +51,7 @@ ''' import re -from distutils.version import LooseVersion +from ansible_collections.kubernetes.core.plugins.module_utils.version import LooseVersion from ansible.module_utils.basic import AnsibleModule diff --git a/plugins/module_utils/common.py b/plugins/module_utils/common.py index 1be5513ce91..4446a85e522 100644 --- a/plugins/module_utils/common.py +++ b/plugins/module_utils/common.py @@ -26,7 +26,8 @@ import sys import hashlib from datetime import datetime -from distutils.version import LooseVersion + +from ansible_collections.kubernetes.core.plugins.module_utils.version import LooseVersion from ansible_collections.kubernetes.core.plugins.module_utils.args_common import ( AUTH_ARG_MAP, diff --git a/plugins/module_utils/version.py b/plugins/module_utils/version.py new file mode 100644 index 00000000000..3d7d6a87d4d --- /dev/null +++ b/plugins/module_utils/version.py @@ -0,0 +1,19 @@ +# -*- coding: utf-8 -*- + +# Copyright: (c) 2021, Felix Fontein +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +"""Provide Version object to compare version numbers.""" + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + +from ansible.module_utils.six import raise_from + +try: + from ansible.module_utils.compat.version import LooseVersion +except ImportError: + try: + from distutils.version import LooseVersion + except ImportError as exc: + raise_from(ImportError('To use this plugin or module with ansible-core < 2.11, you need to use Python < 3.12 with distutils.version present'), exc) diff --git a/plugins/modules/helm.py b/plugins/modules/helm.py index 7e9a7067a90..7cd30686f44 100644 --- a/plugins/modules/helm.py +++ b/plugins/modules/helm.py @@ -308,7 +308,8 @@ import tempfile import traceback -from distutils.version import LooseVersion +from ansible_collections.kubernetes.core.plugins.module_utils.version import LooseVersion + try: import yaml