summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatt Martz <matt@sivel.net>2021-01-10 12:16:09 -0600
committerGitHub <noreply@github.com>2021-01-10 12:16:09 -0600
commitead63f202155c2dbfdd7d9e222ac2c2137ddb904 (patch)
tree8d7ca328e9fbe16b10f8e3ffaaa2d4d635607fab
parentc32371db56c057bc0f382884b380258b653dd2be (diff)
downloadansible-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.yml3
-rw-r--r--lib/ansible/plugins/connection/paramiko_ssh.py2
-rw-r--r--lib/ansible/plugins/connection/psrp.py2
-rw-r--r--lib/ansible/plugins/connection/winrm.py2
-rwxr-xr-xtest/integration/targets/connection/test.sh2
-rw-r--r--test/integration/targets/connection/test_reset_connection.yml5
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