From 4d59779e0adf35b8710f20d966c527ea7efab466 Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Thu, 12 May 2016 09:13:46 -0700 Subject: [PATCH] Fixed importing the libcloud modules to give a nice error rather than a traceback. --- lib/ansible/module_utils/gce.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/ansible/module_utils/gce.py b/lib/ansible/module_utils/gce.py index 6bfa40798aa..a57fdb46d5a 100644 --- a/lib/ansible/module_utils/gce.py +++ b/lib/ansible/module_utils/gce.py @@ -30,18 +30,24 @@ import json import os import traceback - -from libcloud.compute.types import Provider from distutils.version import LooseVersion -import libcloud -from libcloud.compute.providers import get_driver +try: + from libcloud.compute.types import Provider + import libcloud + from libcloud.compute.providers import get_driver + HAS_LIBCLOUD_BASE = True +except ImportError: + HAS_LIBCLOUD_BASE = False USER_AGENT_PRODUCT="Ansible-gce" USER_AGENT_VERSION="v1" def gce_connect(module, provider=None): """Return a Google Cloud Engine connection.""" + if not HAS_LIBCLOUD_BASE: + module.fail_json(msg='libcloud must be installed to use this module') + service_account_email = module.params.get('service_account_email', None) credentials_file = module.params.get('credentials_file', None) pem_file = module.params.get('pem_file', None)