diff options
author | Matt Martz <matt@sivel.net> | 2021-01-10 12:16:09 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-10 12:16:09 -0600 |
commit | ead63f202155c2dbfdd7d9e222ac2c2137ddb904 (patch) | |
tree | 8d7ca328e9fbe16b10f8e3ffaaa2d4d635607fab | |
parent | c32371db56c057bc0f382884b380258b653dd2be (diff) | |
download | ansible-ead63f202155c2dbfdd7d9e222ac2c2137ddb904.tar.gz |
[stable-2.9] Fix reset_connection paramiko, winrm, psrp (#72688) (#72926)
* Ensure we only reset the connection when one has been previously established. Fixes #65812
* Ensure psrp doesn't trace
* winrm too
(cherry picked from commit a3b6485073a0bbd2574285b4087d10dcfd80d494)
Co-authored-by: Matt Martz <matt@sivel.net>
-rw-r--r-- | changelogs/fragments/65812-paramiko-attribute-error.yml | 3 | ||||
-rw-r--r-- | lib/ansible/plugins/connection/paramiko_ssh.py | 2 | ||||
-rw-r--r-- | lib/ansible/plugins/connection/psrp.py | 2 | ||||
-rw-r--r-- | lib/ansible/plugins/connection/winrm.py | 2 | ||||
-rwxr-xr-x | test/integration/targets/connection/test.sh | 2 | ||||
-rw-r--r-- | test/integration/targets/connection/test_reset_connection.yml | 5 |
6 files changed, 16 insertions, 0 deletions
diff --git a/changelogs/fragments/65812-paramiko-attribute-error.yml b/changelogs/fragments/65812-paramiko-attribute-error.yml new file mode 100644 index 0000000000..be95fe9d57 --- /dev/null +++ b/changelogs/fragments/65812-paramiko-attribute-error.yml @@ -0,0 +1,3 @@ +bugfixes: +- paramiko connection plugin - Ensure we only reset the connection when one has been + previously established (https://github.com/ansible/ansible/issues/65812) diff --git a/lib/ansible/plugins/connection/paramiko_ssh.py b/lib/ansible/plugins/connection/paramiko_ssh.py index d955543248..d29bba29e8 100644 --- a/lib/ansible/plugins/connection/paramiko_ssh.py +++ b/lib/ansible/plugins/connection/paramiko_ssh.py @@ -538,6 +538,8 @@ class Connection(ConnectionBase): f.close() def reset(self): + if not self._connected: + return self.close() self._connect() diff --git a/lib/ansible/plugins/connection/psrp.py b/lib/ansible/plugins/connection/psrp.py index 9fab96935f..38a6259bcd 100644 --- a/lib/ansible/plugins/connection/psrp.py +++ b/lib/ansible/plugins/connection/psrp.py @@ -407,6 +407,8 @@ class Connection(ConnectionBase): return self def reset(self): + if not self._connected: + return display.vvvvv("PSRP: Reset Connection", host=self._psrp_host) self.runspace = None self._connect() diff --git a/lib/ansible/plugins/connection/winrm.py b/lib/ansible/plugins/connection/winrm.py index 0334c0a6e7..0573a992da 100644 --- a/lib/ansible/plugins/connection/winrm.py +++ b/lib/ansible/plugins/connection/winrm.py @@ -525,6 +525,8 @@ class Connection(ConnectionBase): return self def reset(self): + if not self._connected: + return self.protocol = None self.shell_id = None self._connect() diff --git a/test/integration/targets/connection/test.sh b/test/integration/targets/connection/test.sh index 4e7aa8dda1..6de82bfdea 100755 --- a/test/integration/targets/connection/test.sh +++ b/test/integration/targets/connection/test.sh @@ -8,3 +8,5 @@ set -eux ansible-playbook test_connection.yml -i "${INVENTORY}" "$@" LC_ALL=C LANG=C ansible-playbook test_connection.yml -i "${INVENTORY}" "$@" + +ansible-playbook test_reset_connection.yml -i "${INVENTORY}" "$@"
\ No newline at end of file diff --git a/test/integration/targets/connection/test_reset_connection.yml b/test/integration/targets/connection/test_reset_connection.yml new file mode 100644 index 0000000000..2f6cb8dcd6 --- /dev/null +++ b/test/integration/targets/connection/test_reset_connection.yml @@ -0,0 +1,5 @@ +- hosts: "{{ target_hosts }}" + gather_facts: no + tasks: + # https://github.com/ansible/ansible/issues/65812 + - meta: reset_connection |