diff --git a/changelogs/fragments/108--disable_lookups.yml b/changelogs/fragments/108--disable_lookups.yml new file mode 100644 index 0000000000..79739bdcf2 --- /dev/null +++ b/changelogs/fragments/108--disable_lookups.yml @@ -0,0 +1,2 @@ +bugfixes: + - "proxmox inventory plugin - avoid using deprecated option when templating options (https://github.com/ansible-collections/community.proxmox/pull/108, https://github.com/ansible-collections/community.general/pull/10553)." diff --git a/changelogs/fragments/151-connection-paramiko.yml b/changelogs/fragments/151-connection-paramiko.yml new file mode 100644 index 0000000000..0d2299abe5 --- /dev/null +++ b/changelogs/fragments/151-connection-paramiko.yml @@ -0,0 +1,3 @@ +bugfixes: + - "proxmox_pct_remote connection plugin - avoid deprecated ansible-core paramiko import helper, import paramiko directly instead + (https://github.com/ansible-collections/community.proxmox/issues/146, https://github.com/ansible-collections/community.proxmox/pull/151, https://github.com/ansible-collections/community.general/pull/10553)." diff --git a/plugins/connection/proxmox_pct_remote.py b/plugins/connection/proxmox_pct_remote.py index c46090083e..d01c28cdb0 100644 --- a/plugins/connection/proxmox_pct_remote.py +++ b/plugins/connection/proxmox_pct_remote.py @@ -398,6 +398,7 @@ import os import pathlib import socket import tempfile +import traceback import typing as t from ansible.errors import ( @@ -406,14 +407,20 @@ from ansible.errors import ( AnsibleError, ) from ansible_collections.community.general.plugins.module_utils._filelock import FileLock, LockTimeout +from ansible_collections.community.general.plugins.module_utils.version import LooseVersion from ansible.module_utils.common.text.converters import to_bytes, to_native, to_text -from ansible.module_utils.compat.paramiko import PARAMIKO_IMPORT_ERR, paramiko -from ansible.module_utils.compat.version import LooseVersion from ansible.plugins.connection import ConnectionBase from ansible.utils.display import Display from ansible.utils.path import makedirs_safe from binascii import hexlify +try: + import paramiko + PARAMIKO_IMPORT_ERR = None +except ImportError: + paramiko = None + PARAMIKO_IMPORT_ERR = traceback.format_exc() + display = Display() @@ -513,7 +520,7 @@ class Connection(ConnectionBase): def _connect(self) -> Connection: """ activates the connection object """ - if paramiko is None: + if PARAMIKO_IMPORT_ERR is not None: raise AnsibleError(f'paramiko is not installed: {to_native(PARAMIKO_IMPORT_ERR)}') port = self.get_option('port') diff --git a/plugins/inventory/proxmox.py b/plugins/inventory/proxmox.py index b334b0f6ba..feeaefda0b 100644 --- a/plugins/inventory/proxmox.py +++ b/plugins/inventory/proxmox.py @@ -687,7 +687,7 @@ class InventoryModule(BaseInventoryPlugin, Constructable, Cacheable): for o in ('url', 'user', 'password', 'token_id', 'token_secret'): v = self.get_option(o) if self.templar.is_template(v): - v = self.templar.template(v, disable_lookups=False) + v = self.templar.template(v) setattr(self, f'proxmox_{o}', v) # some more cleanup and validation diff --git a/tests/unit/plugins/connection/test_proxmox_pct_remote.py b/tests/unit/plugins/connection/test_proxmox_pct_remote.py index 751bd40da7..21868729cf 100644 --- a/tests/unit/plugins/connection/test_proxmox_pct_remote.py +++ b/tests/unit/plugins/connection/test_proxmox_pct_remote.py @@ -14,7 +14,6 @@ from ansible_collections.community.general.plugins.connection.proxmox_pct_remote from ansible_collections.community.general.plugins.module_utils._filelock import FileLock, LockTimeout from ansible.errors import AnsibleError, AnsibleAuthenticationFailure, AnsibleConnectionFailure from ansible.module_utils.common.text.converters import to_bytes -from ansible.module_utils.compat.paramiko import paramiko from ansible.playbook.play_context import PlayContext from ansible.plugins.loader import connection_loader from io import StringIO @@ -22,7 +21,7 @@ from pathlib import Path from unittest.mock import patch, MagicMock, mock_open -pytest.importorskip('paramiko') +paramiko = pytest.importorskip('paramiko') @pytest.fixture