mirror of
https://github.com/ansible-collections/community.general.git
synced 2026-05-08 14:22:46 +00:00
Use common functions for handling import errors (#51851)
* Use common functions for handling import errors * use refactored version of gitlab modules
This commit is contained in:
@@ -140,17 +140,20 @@ EXAMPLES = '''
|
||||
RETURN = r"""# """
|
||||
|
||||
import os
|
||||
import traceback
|
||||
from distutils.version import LooseVersion
|
||||
|
||||
DNSIMPLE_IMP_ERR = None
|
||||
try:
|
||||
from dnsimple import DNSimple
|
||||
from dnsimple.dnsimple import __version__ as dnsimple_version
|
||||
from dnsimple.dnsimple import DNSimpleException
|
||||
HAS_DNSIMPLE = True
|
||||
except ImportError:
|
||||
DNSIMPLE_IMP_ERR = traceback.format_exc()
|
||||
HAS_DNSIMPLE = False
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
||||
|
||||
|
||||
def main():
|
||||
@@ -176,7 +179,7 @@ def main():
|
||||
)
|
||||
|
||||
if not HAS_DNSIMPLE:
|
||||
module.fail_json(msg="dnsimple required for this module")
|
||||
module.fail_json(msg=missing_required_lib('dnsimple'), exception=DNSIMPLE_IMP_ERR)
|
||||
|
||||
if LooseVersion(dnsimple_version) < LooseVersion('1.0.0'):
|
||||
module.fail_json(msg="Current version of dnsimple Python module [%s] uses 'v1' API which is deprecated."
|
||||
|
||||
@@ -151,15 +151,17 @@ modlist:
|
||||
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
||||
from ansible.module_utils._text import to_native, to_bytes
|
||||
from ansible.module_utils.ldap import LdapGeneric, gen_specs
|
||||
|
||||
LDAP_IMP_ERR = None
|
||||
try:
|
||||
import ldap
|
||||
|
||||
HAS_LDAP = True
|
||||
except ImportError:
|
||||
LDAP_IMP_ERR = traceback.format_exc()
|
||||
HAS_LDAP = False
|
||||
|
||||
|
||||
@@ -246,8 +248,8 @@ def main():
|
||||
)
|
||||
|
||||
if not HAS_LDAP:
|
||||
module.fail_json(
|
||||
msg="Missing required 'ldap' module (pip install python-ldap)")
|
||||
module.fail_json(msg=missing_required_lib('python-ldap'),
|
||||
exception=LDAP_IMP_ERR)
|
||||
|
||||
# Update module parameters with user's parameters if defined
|
||||
if 'params' in module.params and isinstance(module.params['params'], dict):
|
||||
|
||||
@@ -108,16 +108,18 @@ RETURN = """
|
||||
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
||||
from ansible.module_utils.six import string_types
|
||||
from ansible.module_utils._text import to_native, to_bytes
|
||||
from ansible.module_utils.ldap import LdapGeneric, gen_specs
|
||||
|
||||
LDAP_IMP_ERR = None
|
||||
try:
|
||||
import ldap.modlist
|
||||
|
||||
HAS_LDAP = True
|
||||
except ImportError:
|
||||
LDAP_IMP_ERR = traceback.format_exc()
|
||||
HAS_LDAP = False
|
||||
|
||||
|
||||
@@ -199,8 +201,8 @@ def main():
|
||||
)
|
||||
|
||||
if not HAS_LDAP:
|
||||
module.fail_json(
|
||||
msg="Missing required 'ldap' module (pip install python-ldap).")
|
||||
module.fail_json(msg=missing_required_lib('python-ldap'),
|
||||
exception=LDAP_IMP_ERR)
|
||||
|
||||
state = module.params['state']
|
||||
|
||||
|
||||
@@ -67,14 +67,18 @@ modlist:
|
||||
sample: '[[2, "olcRootDN", ["cn=root,dc=example,dc=com"]]]'
|
||||
"""
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
||||
from ansible.module_utils.ldap import LdapGeneric, gen_specs
|
||||
|
||||
LDAP_IMP_ERR = None
|
||||
try:
|
||||
import ldap
|
||||
|
||||
HAS_LDAP = True
|
||||
except ImportError:
|
||||
LDAP_IMP_ERR = traceback.format_exc()
|
||||
HAS_LDAP = False
|
||||
|
||||
|
||||
@@ -130,8 +134,8 @@ def main():
|
||||
)
|
||||
|
||||
if not HAS_LDAP:
|
||||
module.fail_json(
|
||||
msg="Missing required 'ldap' module (pip install python-ldap).")
|
||||
module.fail_json(msg=missing_required_lib('python-ldap'),
|
||||
exception=LDAP_IMP_ERR)
|
||||
|
||||
ldap = LdapPasswd(module)
|
||||
|
||||
|
||||
@@ -171,13 +171,18 @@ msg:
|
||||
type: str
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.net_tools.netbox.netbox_utils import find_ids, normalize_data, DEVICE_STATUS, FACE_ID
|
||||
import json
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
||||
from ansible.module_utils.net_tools.netbox.netbox_utils import find_ids, normalize_data, DEVICE_STATUS, FACE_ID
|
||||
|
||||
PYNETBOX_IMP_ERR = None
|
||||
try:
|
||||
import pynetbox
|
||||
HAS_PYNETBOX = True
|
||||
except ImportError:
|
||||
PYNETBOX_IMP_ERR = traceback.format_exc()
|
||||
HAS_PYNETBOX = False
|
||||
|
||||
|
||||
@@ -198,7 +203,7 @@ def main():
|
||||
|
||||
# Fail module if pynetbox is not installed
|
||||
if not HAS_PYNETBOX:
|
||||
module.fail_json(msg='pynetbox is required for this module')
|
||||
module.fail_json(msg=missing_required_lib('pynetbox'), exception=PYNETBOX_IMP_ERR)
|
||||
|
||||
# Assign variables to be used with module
|
||||
app = 'dcim'
|
||||
|
||||
@@ -163,14 +163,18 @@ meta:
|
||||
type: list
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.net_tools.netbox.netbox_utils import find_ids, normalize_data, IP_ADDRESS_ROLE, IP_ADDRESS_STATUS
|
||||
import json
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
||||
from ansible.module_utils.net_tools.netbox.netbox_utils import find_ids, normalize_data, IP_ADDRESS_ROLE, IP_ADDRESS_STATUS
|
||||
|
||||
PYNETBOX_IMP_ERR = None
|
||||
try:
|
||||
import pynetbox
|
||||
HAS_PYNETBOX = True
|
||||
except ImportError:
|
||||
PYNETBOX_IMP_ERR = traceback.format_exc()
|
||||
HAS_PYNETBOX = False
|
||||
|
||||
|
||||
@@ -247,7 +251,7 @@ def main():
|
||||
|
||||
# Fail module if pynetbox is not installed
|
||||
if not HAS_PYNETBOX:
|
||||
module.fail_json(msg='pynetbox is required for this module')
|
||||
module.fail_json(msg=missing_required_lib('pynetbox'), exception=PYNETBOX_IMP_ERR)
|
||||
|
||||
# Assign variables to be used with module
|
||||
changed = False
|
||||
|
||||
@@ -161,14 +161,18 @@ records:
|
||||
sample: 12345
|
||||
'''
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
import traceback
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
||||
|
||||
NCDNSAPI_IMP_ERR = None
|
||||
try:
|
||||
import nc_dnsapi
|
||||
from nc_dnsapi import DNSRecord
|
||||
|
||||
HAS_NCDNSAPI = True
|
||||
except ImportError:
|
||||
NCDNSAPI_IMP_ERR = traceback.format_exc()
|
||||
HAS_NCDNSAPI = False
|
||||
|
||||
|
||||
@@ -192,7 +196,7 @@ def main():
|
||||
)
|
||||
|
||||
if not HAS_NCDNSAPI:
|
||||
module.fail_json(msg="nc-dnsapi is required for this module")
|
||||
module.fail_json(msg=missing_required_lib('nc-dnsapi'), exception=NCDNSAPI_IMP_ERR)
|
||||
|
||||
api_key = module.params.get('api_key')
|
||||
api_password = module.params.get('api_password')
|
||||
|
||||
@@ -501,12 +501,17 @@ EXAMPLES = '''
|
||||
RETURN = r"""#
|
||||
"""
|
||||
|
||||
import traceback
|
||||
|
||||
DBUS_IMP_ERR = None
|
||||
try:
|
||||
import dbus
|
||||
HAVE_DBUS = True
|
||||
except ImportError:
|
||||
DBUS_IMP_ERR = traceback.format_exc()
|
||||
HAVE_DBUS = False
|
||||
|
||||
NM_CLIENT_IMP_ERR = None
|
||||
try:
|
||||
import gi
|
||||
gi.require_version('NMClient', '1.0')
|
||||
@@ -515,9 +520,10 @@ try:
|
||||
from gi.repository import NetworkManager, NMClient
|
||||
HAVE_NM_CLIENT = True
|
||||
except (ImportError, ValueError):
|
||||
NM_CLIENT_IMP_ERR = traceback.format_exc()
|
||||
HAVE_NM_CLIENT = False
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
||||
from ansible.module_utils._text import to_native
|
||||
|
||||
|
||||
@@ -1435,10 +1441,10 @@ def main():
|
||||
)
|
||||
|
||||
if not HAVE_DBUS:
|
||||
module.fail_json(msg="This module requires dbus python bindings")
|
||||
module.fail_json(msg=missing_required_lib('dbus'), exception=DBUS_IMP_ERR)
|
||||
|
||||
if not HAVE_NM_CLIENT:
|
||||
module.fail_json(msg="This module requires NetworkManager glib API")
|
||||
module.fail_json(msg=missing_required_lib('NetworkManager glib API'), exception=NM_CLIENT_IMP_ERR)
|
||||
|
||||
nmcli = Nmcli(module)
|
||||
|
||||
|
||||
@@ -156,9 +156,12 @@ dns_rc_str:
|
||||
sample: 'REFUSED'
|
||||
'''
|
||||
|
||||
import traceback
|
||||
|
||||
from binascii import Error as binascii_error
|
||||
from socket import error as socket_error
|
||||
|
||||
DNSPYTHON_IMP_ERR = None
|
||||
try:
|
||||
import dns.update
|
||||
import dns.query
|
||||
@@ -168,9 +171,10 @@ try:
|
||||
|
||||
HAVE_DNSPYTHON = True
|
||||
except ImportError:
|
||||
DNSPYTHON_IMP_ERR = traceback.format_exc()
|
||||
HAVE_DNSPYTHON = False
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
||||
from ansible.module_utils._text import to_native
|
||||
|
||||
|
||||
@@ -396,7 +400,7 @@ def main():
|
||||
)
|
||||
|
||||
if not HAVE_DNSPYTHON:
|
||||
module.fail_json(msg='python library dnspython required: pip install dnspython')
|
||||
module.fail_json(msg=missing_required_lib('dnspython'), exception=DNSPYTHON_IMP_ERR)
|
||||
|
||||
if len(module.params["record"]) == 0:
|
||||
module.fail_json(msg='record cannot be empty.')
|
||||
|
||||
@@ -131,15 +131,17 @@ import socket
|
||||
import struct
|
||||
import traceback
|
||||
|
||||
PUREOMAPI_IMP_ERR = None
|
||||
try:
|
||||
from pypureomapi import Omapi, OmapiMessage, OmapiError, OmapiErrorNotFound
|
||||
from pypureomapi import pack_ip, unpack_ip, pack_mac, unpack_mac
|
||||
from pypureomapi import OMAPI_OP_STATUS, OMAPI_OP_UPDATE
|
||||
pureomapi_found = True
|
||||
except ImportError:
|
||||
PUREOMAPI_IMP_ERR = traceback.format_exc()
|
||||
pureomapi_found = False
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
||||
from ansible.module_utils._text import to_bytes, to_native
|
||||
|
||||
|
||||
@@ -290,7 +292,7 @@ def main():
|
||||
)
|
||||
|
||||
if not pureomapi_found:
|
||||
module.fail_json(msg="pypureomapi library is required by this module.")
|
||||
module.fail_json(msg=missing_required_lib('pypureomapi'), exception=PUREOMAPI_IMP_ERR)
|
||||
|
||||
if module.params['key'] is None or len(module.params["key"]) == 0:
|
||||
module.fail_json(msg="'key' parameter cannot be empty.")
|
||||
|
||||
@@ -164,15 +164,18 @@ ansible_interfaces:
|
||||
'''
|
||||
|
||||
import binascii
|
||||
import traceback
|
||||
from collections import defaultdict
|
||||
|
||||
PYSNMP_IMP_ERR = None
|
||||
try:
|
||||
from pysnmp.entity.rfc3413.oneliner import cmdgen
|
||||
has_pysnmp = True
|
||||
except Exception:
|
||||
PYSNMP_IMP_ERR = traceback.format_exc()
|
||||
has_pysnmp = False
|
||||
|
||||
from ansible.module_utils.basic import AnsibleModule
|
||||
from ansible.module_utils.basic import AnsibleModule, missing_required_lib
|
||||
from ansible.module_utils._text import to_text
|
||||
|
||||
|
||||
@@ -275,7 +278,7 @@ def main():
|
||||
m_args = module.params
|
||||
|
||||
if not has_pysnmp:
|
||||
module.fail_json(msg='Missing required pysnmp module (check docs)')
|
||||
module.fail_json(msg=missing_required_lib('pysnmp'), exception=PYSNMP_IMP_ERR)
|
||||
|
||||
cmdGen = cmdgen.CommandGenerator()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user