From 205867e39278220575c1bab691487cbd4f3c23cf Mon Sep 17 00:00:00 2001 From: Felix Fontein Date: Sat, 25 May 2024 09:00:18 +0200 Subject: [PATCH] Avoid using the deprecated selectors compat module utils. (#871) --- changelogs/fragments/871-selectors.yml | 2 ++ plugins/connection/docker.py | 2 +- plugins/connection/nsenter.py | 4 +++- plugins/module_utils/selectors.py | 21 +++++++++++++++++++++ plugins/modules/docker_container_exec.py | 3 ++- plugins/plugin_utils/socket_handler.py | 2 +- 6 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 changelogs/fragments/871-selectors.yml create mode 100644 plugins/module_utils/selectors.py diff --git a/changelogs/fragments/871-selectors.yml b/changelogs/fragments/871-selectors.yml new file mode 100644 index 00000000..edee92bb --- /dev/null +++ b/changelogs/fragments/871-selectors.yml @@ -0,0 +1,2 @@ +bugfixes: + - "docker and nsenter connection plugins, docker_container_exec module - avoid using the deprecated ``ansible.module_utils.compat.selectors`` module util with Python 3 (https://github.com/ansible-collections/community.docker/issues/870, https://github.com/ansible-collections/community.docker/pull/871)." diff --git a/plugins/connection/docker.py b/plugins/connection/docker.py index 68247dae..133fe6a7 100644 --- a/plugins/connection/docker.py +++ b/plugins/connection/docker.py @@ -83,7 +83,6 @@ import os.path import subprocess import re -from ansible.compat import selectors from ansible.errors import AnsibleError, AnsibleFileNotFound from ansible.module_utils.six.moves import shlex_quote from ansible.module_utils.common.process import get_bin_path @@ -91,6 +90,7 @@ from ansible.module_utils.common.text.converters import to_bytes, to_native, to_ from ansible.plugins.connection import ConnectionBase, BUFSIZE from ansible.utils.display import Display +from ansible_collections.community.docker.plugins.module_utils.selectors import selectors from ansible_collections.community.docker.plugins.module_utils.version import LooseVersion display = Display() diff --git a/plugins/connection/nsenter.py b/plugins/connection/nsenter.py index f429f8ce..ccc660b9 100644 --- a/plugins/connection/nsenter.py +++ b/plugins/connection/nsenter.py @@ -50,13 +50,15 @@ import fcntl import ansible.constants as C from ansible.errors import AnsibleError -from ansible.module_utils.compat import selectors from ansible.module_utils.six import binary_type, text_type from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text from ansible.plugins.connection import ConnectionBase from ansible.utils.display import Display from ansible.utils.path import unfrackpath +from ansible_collections.community.docker.plugins.module_utils.selectors import selectors + + display = Display() diff --git a/plugins/module_utils/selectors.py b/plugins/module_utils/selectors.py new file mode 100644 index 00000000..ca52cc87 --- /dev/null +++ b/plugins/module_utils/selectors.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2024, Felix Fontein +# GNU General Public License v3.0+ (see LICENSES/GPL-3.0-or-later.txt or https://www.gnu.org/licenses/gpl-3.0.txt) +# SPDX-License-Identifier: GPL-3.0-or-later + +"""Provide selectors import.""" + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + + +# Once we drop support for ansible-core 2.16, we can remove the try/except. + +from sys import version_info as _python_version_info + + +if _python_version_info < (3, 4): + from ansible.module_utils.compat import selectors # noqa: F401, pylint: disable=unused-import +else: + import selectors # noqa: F401, pylint: disable=unused-import diff --git a/plugins/modules/docker_container_exec.py b/plugins/modules/docker_container_exec.py index 0d92dad9..251af5bc 100644 --- a/plugins/modules/docker_container_exec.py +++ b/plugins/modules/docker_container_exec.py @@ -162,7 +162,6 @@ import shlex import traceback from ansible.module_utils.common.text.converters import to_text, to_bytes, to_native -from ansible.module_utils.compat import selectors from ansible.module_utils.six import string_types from ansible_collections.community.docker.plugins.module_utils.common_api import ( @@ -170,6 +169,8 @@ from ansible_collections.community.docker.plugins.module_utils.common_api import RequestException, ) +from ansible_collections.community.docker.plugins.module_utils.selectors import selectors + from ansible_collections.community.docker.plugins.module_utils.socket_handler import ( DockerSocketHandlerModule, ) diff --git a/plugins/plugin_utils/socket_handler.py b/plugins/plugin_utils/socket_handler.py index 204996f2..e8fd266c 100644 --- a/plugins/plugin_utils/socket_handler.py +++ b/plugins/plugin_utils/socket_handler.py @@ -6,7 +6,7 @@ from __future__ import (absolute_import, division, print_function) __metaclass__ = type -from ansible.compat import selectors +from ansible_collections.community.docker.plugins.module_utils.selectors import selectors from ansible_collections.community.docker.plugins.module_utils.socket_handler import ( DockerSocketHandlerBase,