diff --git a/changelogs/fragments/74081-paramiko-mark-connected.yml b/changelogs/fragments/74081-paramiko-mark-connected.yml new file mode 100644 index 00000000000..17fea7580a2 --- /dev/null +++ b/changelogs/fragments/74081-paramiko-mark-connected.yml @@ -0,0 +1,2 @@ +bugfixes: + - paramiko_ssh - mark connection as connected when ``_connect()`` is called (https://github.com/ansible/ansible/issues/74081) diff --git a/lib/ansible/plugins/connection/paramiko_ssh.py b/lib/ansible/plugins/connection/paramiko_ssh.py index 20d926beb8e..45f23b4ae12 100644 --- a/lib/ansible/plugins/connection/paramiko_ssh.py +++ b/lib/ansible/plugins/connection/paramiko_ssh.py @@ -241,6 +241,8 @@ class Connection(ConnectionBase): self.ssh = SSH_CONNECTION_CACHE[cache_key] else: self.ssh = SSH_CONNECTION_CACHE[cache_key] = self._connect_uncached() + + self._connected = True return self def _set_log_channel(self, name): diff --git a/test/units/plugins/connection/test_paramiko.py b/test/units/plugins/connection/test_paramiko.py index e3643b14837..dcf31772e69 100644 --- a/test/units/plugins/connection/test_paramiko.py +++ b/test/units/plugins/connection/test_paramiko.py @@ -23,20 +23,34 @@ __metaclass__ = type from io import StringIO import pytest -from units.compat import unittest from ansible.plugins.connection import paramiko_ssh from ansible.playbook.play_context import PlayContext -class TestParamikoConnectionClass(unittest.TestCase): +@pytest.fixture +def play_context(): + play_context = PlayContext() + play_context.prompt = ( + '[sudo via ansible, key=ouzmdnewuhucvuaabtjmweasarviygqq] password: ' + ) - def test_paramiko_connection_module(self): - play_context = PlayContext() - play_context.prompt = ( - '[sudo via ansible, key=ouzmdnewuhucvuaabtjmweasarviygqq] password: ' - ) - in_stream = StringIO() + return play_context - self.assertIsInstance( - paramiko_ssh.Connection(play_context, in_stream), - paramiko_ssh.Connection) + +@pytest.fixture() +def in_stream(): + return StringIO() + + +def test_paramiko_connection_module(play_context, in_stream): + assert isinstance( + paramiko_ssh.Connection(play_context, in_stream), + paramiko_ssh.Connection) + + +def test_paramiko_connect(play_context, in_stream, mocker): + mocker.patch.object(paramiko_ssh.Connection, '_connect_uncached') + connection = paramiko_ssh.Connection(play_context, in_stream)._connect() + + assert isinstance(connection, paramiko_ssh.Connection) + assert connection._connected is True