From 99ee30768acce4f99137b58009ee14c24fef9937 Mon Sep 17 00:00:00 2001 From: Jim Gu Date: Fri, 26 Oct 2018 03:10:25 -0400 Subject: [PATCH] VMware: Avoid misleading PyVmomi error if requests import fails (#47313) * Avoid misleading PyVmomi error if requests import fails Requests is imported by the VMware module_utils as an external dependency; however, because it is in a try/catch block containing the imports for PyVmomi, if requests fails to import properly, Ansible will instead complain about PyVmomi not being installed. By moving the import outside of the try/catch block, if requests fails to import, an error like the following will be returned: ImportError: No module named requests This should result in less confusion. * catch requests ImportError --- lib/ansible/module_utils/vmware.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/lib/ansible/module_utils/vmware.py b/lib/ansible/module_utils/vmware.py index a7b9a7b035..1970b94431 100644 --- a/lib/ansible/module_utils/vmware.py +++ b/lib/ansible/module_utils/vmware.py @@ -15,6 +15,11 @@ from random import randint try: # requests is required for exception handling of the ConnectionError import requests + HAS_REQUESTS = True +except ImportError: + HAS_REQUESTS = False + +try: from pyVim import connect from pyVmomi import vim, vmodl HAS_PYVMOMI = True @@ -777,6 +782,10 @@ class PyVmomi(object): """ Constructor """ + if not HAS_REQUESTS: + self.module.fail_json(msg="Unable to find 'requests' Python library which is required." + " Please install using 'pip install requests'") + if not HAS_PYVMOMI: module.fail_json(msg='PyVmomi Python module required. Install using "pip install PyVmomi"')