summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorAbhijeet Kasurde <akasurde@redhat.com>2020-07-23 06:56:47 +0530
committerGitHub <noreply@github.com>2020-07-22 18:26:47 -0700
commit18dd73c14740b37fcc21cc3e3e4a91fbb217fc32 (patch)
treec2ca7612eea30ddec367e77a073b1b109c85f075 /lib
parent61f8f8ce7f701a1d9d248679152bdcc98e2dddd5 (diff)
downloadansible-18dd73c14740b37fcc21cc3e3e4a91fbb217fc32.tar.gz
[2.10] basic: use PollSelector implementation (#70800)
Some platform such as ESXi does not implement EpollSelector, which is selected by DefaultSelector. Use PollSelector. This works perfectly with a platform like VMware ESXi. Fixes: #70238 Signed-off-by: Abhijeet Kasurde <akasurde@redhat.com> (cherry picked from commit 8cccede0d435c799385828ce55521c910dc69b13)
Diffstat (limited to 'lib')
-rw-r--r--lib/ansible/module_utils/basic.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/ansible/module_utils/basic.py b/lib/ansible/module_utils/basic.py
index db90dafd13..dcc838a024 100644
--- a/lib/ansible/module_utils/basic.py
+++ b/lib/ansible/module_utils/basic.py
@@ -2603,7 +2603,13 @@ class AnsibleModule(object):
stdout = b''
stderr = b''
- selector = selectors.DefaultSelector()
+ try:
+ selector = selectors.DefaultSelector()
+ except OSError:
+ # Failed to detect default selector for the given platform
+ # Select PollSelector which is supported by major platforms
+ selector = selectors.PollSelector()
+
selector.register(cmd.stdout, selectors.EVENT_READ)
selector.register(cmd.stderr, selectors.EVENT_READ)
if os.name == 'posix':