diff --git a/lib/ansible/modules/cloud/misc/helm.py b/lib/ansible/modules/cloud/misc/helm.py index e12d0bc1e8..d616548d83 100644 --- a/lib/ansible/modules/cloud/misc/helm.py +++ b/lib/ansible/modules/cloud/misc/helm.py @@ -1,18 +1,11 @@ #!/usr/bin/python # (c) 2016, Flavio Percoco # -# This module is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This software is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this software. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -102,9 +95,6 @@ EXAMPLES = ''' name: my-memcached ''' - -import os - try: import grpc from pyhelm import tiller @@ -113,7 +103,6 @@ try: except ImportError as exc: HAS_PYHELM = False - from ansible.module_utils.basic import AnsibleModule @@ -127,9 +116,9 @@ def install(module, tserver): chartb = chartbuilder.ChartBuilder(chart) try: - result = tserver.install_release(chartb.get_helm_chart(), namespace, - dry_run=False, name=name, - values=values) + tserver.install_release(chartb.get_helm_chart(), namespace, + dry_run=False, name=name, + values=values) changed = True except grpc._channel._Rendezvous as exc: if "already exists" not in str(exc): @@ -149,7 +138,7 @@ def delete(module, tserver, purge=False): disable_hooks = params['disable_hooks'] try: - result = tserver.uninstall_release(name, disable_hooks, purge) + tserver.uninstall_release(name, disable_hooks, purge) changed = True except grpc._channel._Rendezvous as exc: if 'not found' not in str(exc): diff --git a/lib/ansible/modules/cloud/misc/ovirt.py b/lib/ansible/modules/cloud/misc/ovirt.py index 6faa0e3eac..5b6b25f71a 100644 --- a/lib/ansible/modules/cloud/misc/ovirt.py +++ b/lib/ansible/modules/cloud/misc/ovirt.py @@ -1,21 +1,11 @@ #!/usr/bin/python # (c) 2013, Vincent Van der Kussen -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -268,6 +258,7 @@ ovirt: rootpw: bigsecret ''' +import time try: from ovirtsdk.api import API @@ -276,6 +267,9 @@ try: except ImportError: HAS_OVIRTSDK = False +from ansible.module_utils.basic import AnsibleModule + + # ------------------------------------------------------------------- # # create connection with API # @@ -524,10 +518,5 @@ def main(): module.exit_json(changed=True, msg="VM %s removed" % vmname) - - -# import module snippets -from ansible.module_utils.basic import * - if __name__ == '__main__': main() diff --git a/lib/ansible/modules/cloud/misc/proxmox.py b/lib/ansible/modules/cloud/misc/proxmox.py index 5e96f67018..27ed269082 100644 --- a/lib/ansible/modules/cloud/misc/proxmox.py +++ b/lib/ansible/modules/cloud/misc/proxmox.py @@ -1,18 +1,10 @@ #!/usr/bin/python -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# Copyright: Ansible Project +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -327,9 +319,7 @@ EXAMPLES = ''' import os import time -# import module snippets -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.pycompat24 import get_exception +import traceback try: from proxmoxer import ProxmoxAPI @@ -337,6 +327,10 @@ try: except ImportError: HAS_PROXMOXER = False +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils._text import to_native + + VZ_TYPE = None @@ -344,9 +338,9 @@ def get_nextvmid(module, proxmox): try: vmid = proxmox.cluster.nextid.get() return vmid - except Exception: - exc = get_exception() - module.fail_json(msg="Unable to get next vmid. Failed with exception: %s" % exc) + except Exception as e: + module.fail_json(msg="Unable to get next vmid. Failed with exception: %s" % to_native(e), + exception=traceback.format_exc()) def get_vmid(proxmox, hostname): @@ -637,7 +631,7 @@ def main(): time.sleep(1) except Exception as e: - module.fail_json(msg="deletion of VM %s failed with exception: %s" % (vmid, e)) + module.fail_json(msg="deletion of VM %s failed with exception: %s" % (vmid, to_native(e))) if __name__ == '__main__': diff --git a/lib/ansible/modules/cloud/misc/proxmox_kvm.py b/lib/ansible/modules/cloud/misc/proxmox_kvm.py index 40c6ebf497..3dab0431af 100644 --- a/lib/ansible/modules/cloud/misc/proxmox_kvm.py +++ b/lib/ansible/modules/cloud/misc/proxmox_kvm.py @@ -2,20 +2,11 @@ # -*- coding: utf-8 -*- # (c) 2016, Abdoul Bah (@helldorado) +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type -""" -Ansible module to manage Qemu(KVM) instance in Proxmox VE cluster. -This module is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. -This software is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this software. If not, see . -""" ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -706,9 +697,7 @@ status: import os import re import time -# import module snippets -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.pycompat24 import get_exception +import traceback try: from proxmoxer import ProxmoxAPI @@ -716,6 +705,10 @@ try: except ImportError: HAS_PROXMOXER = False +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils._text import to_native + + VZ_TYPE = 'qemu' @@ -723,9 +716,9 @@ def get_nextvmid(module, proxmox): try: vmid = proxmox.cluster.nextid.get() return vmid - except Exception: - exc = get_exception() - module.fail_json(msg="Unable to get next vmid. Failed with exception: %s" % exc) + except Exception as e: + module.fail_json(msg="Unable to get next vmid. Failed with exception: %s" % to_native(e), + exception=traceback.format_exc()) def get_vmid(proxmox, name): diff --git a/lib/ansible/modules/cloud/misc/proxmox_template.py b/lib/ansible/modules/cloud/misc/proxmox_template.py index 8cc9c2db6b..3efa514cca 100644 --- a/lib/ansible/modules/cloud/misc/proxmox_template.py +++ b/lib/ansible/modules/cloud/misc/proxmox_template.py @@ -1,18 +1,12 @@ #!/usr/bin/python -# This file is part of Ansible # -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. +# Copyright: Ansible Project # -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -138,8 +132,6 @@ EXAMPLES = ''' import os import time -# import module snippets -from ansible.module_utils.basic import AnsibleModule try: from proxmoxer import ProxmoxAPI @@ -147,6 +139,8 @@ try: except ImportError: HAS_PROXMOXER = False +from ansible.module_utils.basic import AnsibleModule + def get_template(proxmox, node, storage, content_type, template): return [True for tmpl in proxmox.nodes(node).storage(storage).content.get() diff --git a/lib/ansible/modules/cloud/misc/rhevm.py b/lib/ansible/modules/cloud/misc/rhevm.py index c0c3bc6ceb..c918fae9e2 100644 --- a/lib/ansible/modules/cloud/misc/rhevm.py +++ b/lib/ansible/modules/cloud/misc/rhevm.py @@ -1,21 +1,11 @@ #!/usr/bin/python # (c) 2016, Timothy Vandenbrande -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -331,9 +321,6 @@ EXAMPLES = ''' ''' import time -import sys -import traceback -import json try: from ovirtsdk.api import API @@ -342,6 +329,9 @@ try: except ImportError: HAS_SDK = False +from ansible.module_utils.basic import AnsibleModule + + RHEV_FAILED = 1 RHEV_SUCCESS = 0 RHEV_UNAVAILABLE = 2 @@ -1024,13 +1014,13 @@ class RHEV(object): vminfo['cpu_cores'] = VM.cpu.topology.cores vminfo['cpu_sockets'] = VM.cpu.topology.sockets vminfo['cpu_shares'] = VM.cpu_shares - vminfo['memory'] = (int(VM.memory) / 1024 / 1024 / 1024) - vminfo['mem_pol'] = (int(VM.memory_policy.guaranteed) / 1024 / 1024 / 1024) + vminfo['memory'] = (int(VM.memory) // 1024 // 1024 // 1024) + vminfo['mem_pol'] = (int(VM.memory_policy.guaranteed) // 1024 // 1024 // 1024) vminfo['os'] = VM.get_os().type_ vminfo['del_prot'] = VM.delete_protected try: vminfo['host'] = str(self.conn.get_Host_byid(str(VM.host.id)).name) - except Exception as e: + except Exception: vminfo['host'] = None vminfo['boot_order'] = [] for boot_dev in VM.os.get_boot(): @@ -1039,7 +1029,7 @@ class RHEV(object): for DISK in VM.disks.list(): disk = dict() disk['name'] = DISK.name - disk['size'] = (int(DISK.size) / 1024 / 1024 / 1024) + disk['size'] = (int(DISK.size) // 1024 // 1024 // 1024) disk['domain'] = str((self.conn.get_domain_byid(DISK.get_storage_domains().get_storage_domain()[0].id)).name) disk['interface'] = DISK.interface vminfo['disks'].append(disk) @@ -1523,8 +1513,5 @@ def main(): module.exit_json(**result) -# import module snippets -from ansible.module_utils.basic import * - if __name__ == '__main__': main() diff --git a/lib/ansible/modules/cloud/misc/serverless.py b/lib/ansible/modules/cloud/misc/serverless.py index 8a45046273..44557d941a 100644 --- a/lib/ansible/modules/cloud/misc/serverless.py +++ b/lib/ansible/modules/cloud/misc/serverless.py @@ -2,22 +2,11 @@ # -*- coding: utf-8 -*- # (c) 2016, Ryan Scott Brown -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . -# +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -125,11 +114,12 @@ command: sample: serverless deploy --stage production """ - import os import traceback import yaml +from ansible.module_utils.basic import AnsibleModule + def read_serverless_config(module): path = module.params.get('service_path') @@ -208,8 +198,6 @@ def main(): module.exit_json(changed=True, state='present', out=out, command=command, service_name=get_service_name(module, stage)) -# import module snippets -from ansible.module_utils.basic import * if __name__ == '__main__': main() diff --git a/lib/ansible/modules/cloud/misc/virt.py b/lib/ansible/modules/cloud/misc/virt.py index 6bc1babe8b..0fae89ae23 100644 --- a/lib/ansible/modules/cloud/misc/virt.py +++ b/lib/ansible/modules/cloud/misc/virt.py @@ -1,19 +1,15 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -""" -Virt management features +# Copyright 2007, 2012 Red Hat, Inc +# Michael DeHaan +# Seth Vidal +# +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -Copyright 2007, 2012 Red Hat, Inc -Michael DeHaan -Seth Vidal +from __future__ import absolute_import, division, print_function +__metaclass__ = type -This software may be freely redistributed under the terms of the GNU -general public license. - -You should have received a copy of the GNU General Public License -along with this program. If not, see . -""" ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -119,11 +115,8 @@ status: sample: "success" returned: success ''' -VIRT_FAILED = 1 -VIRT_SUCCESS = 0 -VIRT_UNAVAILABLE=2 -import sys +import traceback try: import libvirt @@ -132,6 +125,14 @@ except ImportError: else: HAS_VIRT = True +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils._text import to_native + + +VIRT_FAILED = 1 +VIRT_SUCCESS = 0 +VIRT_UNAVAILABLE=2 + ALL_COMMANDS = [] VM_COMMANDS = ['create','status', 'start', 'stop', 'pause', 'unpause', 'shutdown', 'undefine', 'destroy', 'get_xml', 'define'] @@ -537,9 +538,8 @@ def main(): rc = VIRT_SUCCESS try: rc, result = core(module) - except Exception: - e = get_exception() - module.fail_json(msg=str(e)) + except Exception as e: + module.fail_json(msg=to_native(e), exception=traceback.format_exc()) if rc != 0: # something went wrong emit the msg module.fail_json(rc=rc, msg=result) @@ -547,9 +547,5 @@ def main(): module.exit_json(**result) -# import module snippets -from ansible.module_utils.basic import * -from ansible.module_utils.pycompat24 import get_exception - if __name__ == '__main__': main() diff --git a/lib/ansible/modules/cloud/misc/virt_net.py b/lib/ansible/modules/cloud/misc/virt_net.py index 6756f25211..4cbd3b47a5 100644 --- a/lib/ansible/modules/cloud/misc/virt_net.py +++ b/lib/ansible/modules/cloud/misc/virt_net.py @@ -2,21 +2,11 @@ # -*- coding: utf-8 -*- # (c) 2015, Maciej Delmanowski -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -141,11 +131,6 @@ EXAMPLES = ''' name: br_nat ''' -VIRT_FAILED = 1 -VIRT_SUCCESS = 0 -VIRT_UNAVAILABLE=2 - - try: import libvirt except ImportError: @@ -164,6 +149,10 @@ from ansible.module_utils.basic import AnsibleModule from ansible.module_utils._text import to_native +VIRT_FAILED = 1 +VIRT_SUCCESS = 0 +VIRT_UNAVAILABLE=2 + ALL_COMMANDS = [] ENTRY_COMMANDS = ['create', 'status', 'start', 'stop', 'undefine', 'destroy', 'get_xml', 'define', diff --git a/lib/ansible/modules/cloud/misc/virt_pool.py b/lib/ansible/modules/cloud/misc/virt_pool.py index 9f8b134643..d4701eaa3a 100644 --- a/lib/ansible/modules/cloud/misc/virt_pool.py +++ b/lib/ansible/modules/cloud/misc/virt_pool.py @@ -2,21 +2,11 @@ # -*- coding: utf-8 -*- # (c) 2015, Maciej Delmanowski -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -156,10 +146,6 @@ EXAMPLES = ''' name: vms ''' -VIRT_FAILED = 1 -VIRT_SUCCESS = 0 -VIRT_UNAVAILABLE=2 - try: import libvirt except ImportError: @@ -177,6 +163,10 @@ else: from ansible.module_utils.basic import AnsibleModule +VIRT_FAILED = 1 +VIRT_SUCCESS = 0 +VIRT_UNAVAILABLE=2 + ALL_COMMANDS = [] ENTRY_COMMANDS = ['create', 'status', 'start', 'stop', 'build', 'delete', 'undefine', 'destroy', 'get_xml', 'define', 'refresh'] diff --git a/lib/ansible/modules/cloud/misc/xenserver_facts.py b/lib/ansible/modules/cloud/misc/xenserver_facts.py index cc263ccb50..c02ed32609 100644 --- a/lib/ansible/modules/cloud/misc/xenserver_facts.py +++ b/lib/ansible/modules/cloud/misc/xenserver_facts.py @@ -1,18 +1,10 @@ #!/usr/bin/python -tt -# This file is part of Ansible # -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# Copyright: Ansible Project +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type ANSIBLE_METADATA = {'metadata_version': '1.0', @@ -62,6 +54,8 @@ try: except ImportError: pass +from ansible.module_utils.basic import AnsibleModule + class XenServerFacts: def __init__(self): @@ -209,7 +203,6 @@ def main(): module.exit_json(ansible=data) -from ansible.module_utils.basic import * if __name__ == '__main__': main() diff --git a/lib/ansible/modules/net_tools/basics/get_url.py b/lib/ansible/modules/net_tools/basics/get_url.py index 12b79a9428..88c765f4f8 100644 --- a/lib/ansible/modules/net_tools/basics/get_url.py +++ b/lib/ansible/modules/net_tools/basics/get_url.py @@ -2,22 +2,11 @@ # -*- coding: utf-8 -*- # (c) 2012, Jan-Piet Mens -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . -# +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + # see examples/playbooks/get_url.yml ANSIBLE_METADATA = {'metadata_version': '1.0', @@ -299,9 +288,11 @@ import os import re import shutil import tempfile +import traceback -from ansible.module_utils.basic import AnsibleModule, get_exception +from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.six.moves.urllib.parse import urlsplit +from ansible.module_utils._text import to_native from ansible.module_utils.urls import fetch_url, url_argument_spec # ============================================================== @@ -355,10 +346,10 @@ def url_get(module, url, dest, use_proxy, last_mod_time, force, timeout=10, head f = os.fdopen(fd, 'wb') try: shutil.copyfileobj(rsp, f) - except Exception: - e = get_exception() + except Exception as e: os.remove(tempname) - module.fail_json(msg="failed to create temporary content file: %s" % e) + module.fail_json(msg="failed to create temporary content file: %s" % to_native(e), + exception=traceback.format_exc()) f.close() rsp.close() return tempname, info @@ -536,10 +527,10 @@ def main(): if os.path.exists(dest): backup_file = module.backup_local(dest) shutil.copyfile(tmpsrc, dest) - except Exception: - e = get_exception() + except Exception as e: os.remove(tmpsrc) - module.fail_json(msg="failed to copy %s to %s: %s" % (tmpsrc, dest, e)) + module.fail_json(msg="failed to copy %s to %s: %s" % (tmpsrc, dest, to_native(e)), + exception=traceback.format_exc()) changed = True else: changed = False diff --git a/lib/ansible/modules/net_tools/basics/slurp.py b/lib/ansible/modules/net_tools/basics/slurp.py index 21e1a8e93b..72a237174a 100644 --- a/lib/ansible/modules/net_tools/basics/slurp.py +++ b/lib/ansible/modules/net_tools/basics/slurp.py @@ -2,21 +2,11 @@ # -*- coding: utf-8 -*- # (c) 2012, Michael DeHaan -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['stableinterface'], diff --git a/lib/ansible/modules/net_tools/basics/uri.py b/lib/ansible/modules/net_tools/basics/uri.py index 85f3e4e74f..14331e7518 100644 --- a/lib/ansible/modules/net_tools/basics/uri.py +++ b/lib/ansible/modules/net_tools/basics/uri.py @@ -2,23 +2,11 @@ # -*- coding: utf-8 -*- # (c) 2013, Romeo Theriault -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . -# -# see examples/playbooks/uri.yml +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['stableinterface'], @@ -239,19 +227,16 @@ EXAMPLES = ''' import cgi import datetime +import json import os import shutil import tempfile +import traceback -try: - import json -except ImportError: - import simplejson as json from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.pycompat24 import get_exception import ansible.module_utils.six as six -from ansible.module_utils._text import to_text +from ansible.module_utils._text import to_native, to_text from ansible.module_utils.urls import fetch_url, url_argument_spec @@ -261,10 +246,10 @@ def write_file(module, url, dest, content): f = open(tmpsrc, 'wb') try: f.write(content) - except Exception: - err = get_exception() + except Exception as e: os.remove(tmpsrc) - module.fail_json(msg="failed to create temporary content file: %s" % str(err)) + module.fail_json(msg="failed to create temporary content file: %s" % to_native(e), + exception=traceback.format_exc()) f.close() checksum_src = None @@ -297,10 +282,10 @@ def write_file(module, url, dest, content): if checksum_src != checksum_dest: try: shutil.copyfile(tmpsrc, dest) - except Exception: - err = get_exception() + except Exception as e: os.remove(tmpsrc) - module.fail_json(msg="failed to copy %s to %s: %s" % (tmpsrc, dest, str(err))) + module.fail_json(msg="failed to copy %s to %s: %s" % (tmpsrc, dest, to_native(e)), + exception=traceback.format_exc()) os.remove(tmpsrc) diff --git a/lib/ansible/modules/net_tools/cloudflare_dns.py b/lib/ansible/modules/net_tools/cloudflare_dns.py index 43b67d0e05..41e2cd0955 100644 --- a/lib/ansible/modules/net_tools/cloudflare_dns.py +++ b/lib/ansible/modules/net_tools/cloudflare_dns.py @@ -2,21 +2,11 @@ # -*- coding: utf-8 -*- # (c) 2016 Michael Gruener -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -280,18 +270,11 @@ record: sample: sample.com ''' -try: - import json -except ImportError: - try: - import simplejson as json - except ImportError: - # Let snippet from module_utils/basic.py return a proper error in this case - pass +import json from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.pycompat24 import get_exception from ansible.module_utils.six.moves.urllib.parse import urlencode +from ansible.module_utils._text import to_native from ansible.module_utils.urls import fetch_url @@ -342,9 +325,8 @@ class CloudflareAPI(object): if payload: try: data = json.dumps(payload) - except Exception: - e = get_exception() - self.module.fail_json(msg="Failed to encode payload as JSON: %s " % str(e)) + except Exception as e: + self.module.fail_json(msg="Failed to encode payload as JSON: %s " % to_native(e)) resp, info = fetch_url(self.module, self.cf_api_endpoint + api_call, diff --git a/lib/ansible/modules/net_tools/dnsimple.py b/lib/ansible/modules/net_tools/dnsimple.py index 7e859d3558..2b4994bd9a 100644 --- a/lib/ansible/modules/net_tools/dnsimple.py +++ b/lib/ansible/modules/net_tools/dnsimple.py @@ -1,18 +1,10 @@ #!/usr/bin/python -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# Copyright: Ansible Project +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -169,6 +161,7 @@ EXAMPLES = ''' ''' import os + try: from dnsimple import DNSimple from dnsimple.dnsimple import DNSimpleException @@ -176,6 +169,9 @@ try: except ImportError: HAS_DNSIMPLE = False +from ansible.module_utils.basic import AnsibleModule + + def main(): module = AnsibleModule( argument_spec=dict( @@ -338,15 +334,11 @@ def main(): else: module.fail_json(msg="'%s' is an unknown value for the state argument" % state) - except DNSimpleException: - e = get_exception() + except DNSimpleException as e: module.fail_json(msg="Unable to contact DNSimple: %s" % e.message) module.fail_json(msg="Unknown what you wanted me to do") -# import module snippets -from ansible.module_utils.basic import * -from ansible.module_utils.pycompat24 import get_exception if __name__ == '__main__': main() diff --git a/lib/ansible/modules/net_tools/dnsmadeeasy.py b/lib/ansible/modules/net_tools/dnsmadeeasy.py index ef4d0e033f..475798fed4 100644 --- a/lib/ansible/modules/net_tools/dnsmadeeasy.py +++ b/lib/ansible/modules/net_tools/dnsmadeeasy.py @@ -1,18 +1,10 @@ #!/usr/bin/python -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# Copyright: Ansible Project +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -717,7 +709,7 @@ def main(): module.exit_json(changed=True) # record does not exist, return w/o change. - module.exit_json(changed=False) + module.exit_json(changed=changed) else: module.fail_json( diff --git a/lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py b/lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py index 7526c29247..5014df1d99 100644 --- a/lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py +++ b/lib/ansible/modules/net_tools/exoscale/exo_dns_domain.py @@ -2,21 +2,11 @@ # -*- coding: utf-8 -*- # # (c) 2016, René Moser -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -186,11 +176,7 @@ exo_dns_domain: ''' from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.exoscale import ( - ExoDns, - exo_dns_argument_spec, - exo_dns_required_together -) +from ansible.module_utils.exoscale import ExoDns, exo_dns_argument_spec, exo_dns_required_together class ExoDnsDomain(ExoDns): diff --git a/lib/ansible/modules/net_tools/exoscale/exo_dns_record.py b/lib/ansible/modules/net_tools/exoscale/exo_dns_record.py index 0e19c87da0..6117434a8f 100644 --- a/lib/ansible/modules/net_tools/exoscale/exo_dns_record.py +++ b/lib/ansible/modules/net_tools/exoscale/exo_dns_record.py @@ -2,21 +2,11 @@ # -*- coding: utf-8 -*- # # (c) 2016, René Moser -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -246,11 +236,8 @@ exo_dns_record: ''' from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.exoscale import ( - ExoDns, - exo_dns_argument_spec, - exo_dns_required_together -) +from ansible.module_utils.exoscale import ExoDns, exo_dns_argument_spec, exo_dns_required_together + EXO_RECORD_TYPES = [ 'A', diff --git a/lib/ansible/modules/net_tools/haproxy.py b/lib/ansible/modules/net_tools/haproxy.py index 63fc44a618..7bca1f603e 100644 --- a/lib/ansible/modules/net_tools/haproxy.py +++ b/lib/ansible/modules/net_tools/haproxy.py @@ -2,21 +2,11 @@ # -*- coding: utf-8 -*- # (c) 2014, Ravi Bhure -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -184,11 +174,13 @@ EXAMPLES = ''' backend: www ''' -import socket import csv +import socket import time from string import Template +from ansible.module_utils.basic import AnsibleModule + DEFAULT_SOCKET_LOCATION = "/var/run/haproxy.sock" RECV_SIZE = 1024 @@ -429,8 +421,6 @@ def main(): ansible_haproxy = HAProxy(module) ansible_haproxy.act() -# import module snippets -from ansible.module_utils.basic import AnsibleModule if __name__ == '__main__': main() diff --git a/lib/ansible/modules/net_tools/ipify_facts.py b/lib/ansible/modules/net_tools/ipify_facts.py index cc585daee7..024c591bc3 100644 --- a/lib/ansible/modules/net_tools/ipify_facts.py +++ b/lib/ansible/modules/net_tools/ipify_facts.py @@ -2,21 +2,11 @@ # -*- coding: utf-8 -*- # # (c) 2015, René Moser -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -75,14 +65,7 @@ ipify_public_ip: sample: 1.2.3.4 ''' -try: - import json -except ImportError: - try: - import simplejson as json - except ImportError: - # Let snippet from module_utils/basic.py return a proper error in this case - pass +import json from ansible.module_utils.basic import AnsibleModule from ansible.module_utils.urls import fetch_url @@ -124,5 +107,6 @@ def main(): ipify_facts_result = dict(changed=False, ansible_facts=ipify_facts) module.exit_json(**ipify_facts_result) + if __name__ == '__main__': main() diff --git a/lib/ansible/modules/net_tools/ipinfoio_facts.py b/lib/ansible/modules/net_tools/ipinfoio_facts.py index 0c0da986df..e04863298b 100644 --- a/lib/ansible/modules/net_tools/ipinfoio_facts.py +++ b/lib/ansible/modules/net_tools/ipinfoio_facts.py @@ -1,21 +1,11 @@ #!/usr/bin/python # # (c) 2016, Aleksei Kostiuk -# -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -90,6 +80,10 @@ ansible_facts: type: string sample: "94035" ''' +from ansible.module_utils.basic import AnsibleModule + +from ansible.module_utils.urls import fetch_url + USER_AGENT = 'ansible-ipinfoio-module/0.0.1' @@ -135,8 +129,6 @@ def main(): changed=False, ansible_facts=ipinfoio.get_geo_data()) module.exit_json(**ipinfoio_result) -from ansible.module_utils.basic import * # NOQA -from ansible.module_utils.urls import * # NOQA if __name__ == '__main__': main() diff --git a/lib/ansible/modules/net_tools/ldap/ldap_attr.py b/lib/ansible/modules/net_tools/ldap/ldap_attr.py index a5be88a500..e35e50eb91 100644 --- a/lib/ansible/modules/net_tools/ldap/ldap_attr.py +++ b/lib/ansible/modules/net_tools/ldap/ldap_attr.py @@ -4,20 +4,11 @@ # (c) 2016, Peter Sagerson # (c) 2016, Jiri Tyr # -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -193,8 +184,7 @@ modlist: sample: '[[2, "olcRootDN", ["cn=root,dc=example,dc=com"]]]' """ -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.pycompat24 import get_exception +import traceback try: import ldap @@ -204,6 +194,9 @@ try: except ImportError: HAS_LDAP = False +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils._text import to_native + class LdapAttr(object): def __init__(self, module): @@ -251,11 +244,10 @@ class LdapAttr(object): try: results = self.connection.search_s( self.dn, ldap.SCOPE_BASE, attrlist=[self.name]) - except ldap.LDAPError: - e = get_exception() + except ldap.LDAPError as e: self.module.fail_json( msg="Cannot search for attribute %s" % self.name, - details=str(e)) + details=to_native(e)) current = results[0][1].get(self.name, []) modlist = [] @@ -293,19 +285,17 @@ class LdapAttr(object): if self.start_tls: try: connection.start_tls_s() - except ldap.LDAPError: - e = get_exception() - self.module.fail_json(msg="Cannot start TLS.", details=str(e)) + except ldap.LDAPError as e: + self.module.fail_json(msg="Cannot start TLS.", details=to_native(e)) try: if self.bind_dn is not None: connection.simple_bind_s(self.bind_dn, self.bind_pw) else: connection.sasl_interactive_bind_s('', ldap.sasl.external()) - except ldap.LDAPError: - e = get_exception() + except ldap.LDAPError as e: self.module.fail_json( - msg="Cannot bind to the server.", details=str(e)) + msg="Cannot bind to the server.", details=to_native(e)) return connection @@ -360,10 +350,9 @@ def main(): if not module.check_mode: try: ldap.connection.modify_s(ldap.dn, modlist) - except Exception: - e = get_exception() - module.fail_json( - msg="Attribute action failed.", details=str(e)) + except Exception as e: + module.fail_json(msg="Attribute action failed.", details=to_native(e), + exception=traceback.format_exc()) module.exit_json(changed=changed, modlist=modlist) diff --git a/lib/ansible/modules/net_tools/ldap/ldap_entry.py b/lib/ansible/modules/net_tools/ldap/ldap_entry.py index 1b99822a2d..c2cbfb7e3b 100644 --- a/lib/ansible/modules/net_tools/ldap/ldap_entry.py +++ b/lib/ansible/modules/net_tools/ldap/ldap_entry.py @@ -4,20 +4,11 @@ # (c) 2016, Peter Sagerson # (c) 2016, Jiri Tyr # -# This file is part of Ansible -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], diff --git a/lib/ansible/modules/net_tools/lldp.py b/lib/ansible/modules/net_tools/lldp.py index 4b7776f021..8fc42baf3b 100644 --- a/lib/ansible/modules/net_tools/lldp.py +++ b/lib/ansible/modules/net_tools/lldp.py @@ -1,18 +1,11 @@ #!/usr/bin/python -tt -# This file is part of Ansible # -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# Copyright: Ansible Project +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type + ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -50,12 +43,15 @@ EXAMPLES = ''' ''' +from ansible.module_utils.basic import AnsibleModule + def gather_lldp(module): cmd = ['lldpctl', '-f', 'keyvalue'] rc, output, err = module.run_command(cmd) if output: output_dict = {} + current_dict = {} lldp_entries = output.split("\n") for entry in lldp_entries: @@ -84,8 +80,6 @@ def main(): except TypeError: module.fail_json(msg="lldpctl command failed. is lldpd running?") -# import module snippets -from ansible.module_utils.basic import * if __name__ == '__main__': main() diff --git a/lib/ansible/modules/net_tools/nmcli.py b/lib/ansible/modules/net_tools/nmcli.py index da7e799be2..19bfcb4b02 100644 --- a/lib/ansible/modules/net_tools/nmcli.py +++ b/lib/ansible/modules/net_tools/nmcli.py @@ -2,21 +2,10 @@ # -*- coding: utf-8 -*- # (c) 2015, Chris Long -# -# This file is a module for Ansible that interacts with Network Manager -# -# Ansible is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# Ansible is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type ANSIBLE_METADATA = {'metadata_version': '1.0', @@ -491,9 +480,7 @@ EXAMPLES=''' # - 9 nmcli and NetworkManager versions mismatch # - 10 Connection, device, or access point does not exist. ''' -# import ansible.module_utils.basic -import os -import sys + HAVE_DBUS=False try: import dbus @@ -607,7 +594,7 @@ class Nmcli(object): for setting in secrets: for key in secrets[setting]: config[setting_name][key]=secrets[setting][key] - except Exception as e: + except: pass def dict_to_string(self, d): @@ -639,7 +626,7 @@ class Nmcli(object): for setting_name in config: setting_list.append(self.dict_to_string(config[setting_name])) return setting_list - # print "" + # print("") def bool_to_string(self, boolean): if boolean: @@ -1198,5 +1185,6 @@ def main(): module.exit_json(**result) + if __name__ == '__main__': main() diff --git a/lib/ansible/modules/net_tools/nsupdate.py b/lib/ansible/modules/net_tools/nsupdate.py index 7737d30fab..36aeb6811a 100644 --- a/lib/ansible/modules/net_tools/nsupdate.py +++ b/lib/ansible/modules/net_tools/nsupdate.py @@ -1,27 +1,16 @@ #!/usr/bin/python -""" -Ansible module to manage DNS records using dnspython -(c) 2016, Marcin Skarbek -(c) 2016, Andreas Olsson -(c) 2017, Loic Blot +# (c) 2016, Marcin Skarbek +# (c) 2016, Andreas Olsson +# (c) 2017, Loic Blot +# +# This module was ported from https://github.com/mskarbek/ansible-nsupdate +# +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -This module was ported from https://github.com/mskarbek/ansible-nsupdate +from __future__ import absolute_import, division, print_function +__metaclass__ = type -This file is part of Ansible - -Ansible is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Ansible is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with Ansible. If not, see . -""" ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -151,9 +140,6 @@ dns_rc_str: from binascii import Error as binascii_error from socket import error as socket_error -from ansible.module_utils.basic import AnsibleModule -from ansible.module_utils.pycompat24 import get_exception - try: import dns.update import dns.query @@ -165,6 +151,9 @@ try: except ImportError: HAVE_DNSPYTHON = False +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils._text import to_native + class RecordManager(object): def __init__(self, module): @@ -182,9 +171,8 @@ class RecordManager(object): }) except TypeError: module.fail_json(msg='Missing key_secret') - except binascii_error: - e = get_exception() - module.fail_json(msg='TSIG key error: %s' % str(e)) + except binascii_error as e: + module.fail_json(msg='TSIG key error: %s' % to_native(e)) else: self.keyring = None @@ -199,12 +187,10 @@ class RecordManager(object): response = None try: response = dns.query.tcp(update, self.module.params['server'], timeout=10) - except (dns.tsig.PeerBadKey, dns.tsig.PeerBadSignature): - e = get_exception() - self.module.fail_json(msg='TSIG update error (%s): %s' % (e.__class__.__name__, str(e))) - except (socket_error, dns.exception.Timeout): - e = get_exception() - self.module.fail_json(msg='DNS server error: (%s): %s' % (e.__class__.__name__, str(e))) + except (dns.tsig.PeerBadKey, dns.tsig.PeerBadSignature) as e: + self.module.fail_json(msg='TSIG update error (%s): %s' % (e.__class__.__name__, to_native(e))) + except (socket_error, dns.exception.Timeout) as e: + self.module.fail_json(msg='DNS server error: (%s): %s' % (e.__class__.__name__, to_native(e))) return response def create_or_update_record(self): @@ -288,9 +274,8 @@ class RecordManager(object): update = dns.update.Update(self.zone, keyring=self.keyring, keyalgorithm=self.algorithm) try: update.present(self.module.params['record'], self.module.params['type']) - except dns.rdatatype.UnknownRdatatype: - e = get_exception() - self.module.fail_json(msg='Record error: {}'.format(str(e))) + except dns.rdatatype.UnknownRdatatype as e: + self.module.fail_json(msg='Record error: {0}'.format(to_native(e))) response = self.__do_update(update) self.dns_rc = dns.message.Message.rcode(response) diff --git a/lib/ansible/modules/net_tools/omapi_host.py b/lib/ansible/modules/net_tools/omapi_host.py index b3467fd342..6e97a3d51f 100644 --- a/lib/ansible/modules/net_tools/omapi_host.py +++ b/lib/ansible/modules/net_tools/omapi_host.py @@ -1,26 +1,15 @@ #!/usr/bin/python # -*- coding: utf-8 -*- -""" -Ansible module to configure DHCPd hosts using OMAPI protocol -(c) 2016, Loic Blot -Sponsored by Infopro Digital. http://www.infopro-digital.com/ -Sponsored by E.T.A.I. http://www.etai.fr/ +# (c) 2016, Loic Blot +# Sponsored by Infopro Digital. http://www.infopro-digital.com/ +# Sponsored by E.T.A.I. http://www.etai.fr/ +# +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -This file is part of Ansible +from __future__ import absolute_import, division, print_function +__metaclass__ = type -Ansible is free software: you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation, either version 3 of the License, or -(at your option) any later version. - -Ansible is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with Ansible. If not, see . -""" ANSIBLE_METADATA = {'metadata_version': '1.0', 'status': ['preview'], @@ -141,12 +130,10 @@ lease: sample: 'mydesktop' ''' -# import module snippets -from ansible.module_utils.basic import AnsibleModule, get_exception, to_bytes -from ansible.module_utils.six import iteritems +import binascii import socket import struct -import binascii +import traceback try: from pypureomapi import Omapi, OmapiMessage, OmapiError, OmapiErrorNotFound @@ -156,6 +143,9 @@ try: except ImportError: pureomapi_found = False +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils._text import to_bytes, to_native + class OmapiHostManager: def __init__(self, module): @@ -169,13 +159,11 @@ class OmapiHostManager: self.module.params['key']) except binascii.Error: self.module.fail_json(msg="Unable to open OMAPI connection. 'key' is not a valid base64 key.") - except OmapiError: - e = get_exception() + except OmapiError as e: self.module.fail_json(msg="Unable to open OMAPI connection. Ensure 'host', 'port', 'key' and 'key_name' " - "are valid. Exception was: %s" % e) - except socket.error: - e = get_exception() - self.module.fail_json(msg="Unable to connect to OMAPI server: %s" % e) + "are valid. Exception was: %s" % to_native(e)) + except socket.error as e: + self.module.fail_json(msg="Unable to connect to OMAPI server: %s" % to_native(e)) def get_host(self, macaddr): msg = OmapiMessage.open(to_bytes("host", errors='surrogate_or_strict')) @@ -225,9 +213,9 @@ class OmapiHostManager: if len(self.module.params['statements']) > 0: stmt_join += "; ".join(self.module.params['statements']) stmt_join += "; " - except TypeError: - e = get_exception() - self.module.fail_json(msg="Invalid statements found: %s" % e) + except TypeError as e: + self.module.fail_json(msg="Invalid statements found: %s" % to_native(e), + exception=traceback.format_exc()) if len(stmt_join) > 0: msg.obj.append(('statements', stmt_join)) @@ -238,9 +226,8 @@ class OmapiHostManager: self.module.fail_json(msg="Failed to add host, ensure authentication and host parameters " "are valid.") self.module.exit_json(changed=True, lease=self.unpack_facts(response.obj)) - except OmapiError: - e = get_exception() - self.module.fail_json(msg="OMAPI error: %s" % e) + except OmapiError as e: + self.module.fail_json(msg="OMAPI error: %s" % to_native(e), exception=traceback.format_exc()) # Forge update message else: response_obj = self.unpack_facts(host_response.obj) @@ -276,9 +263,8 @@ class OmapiHostManager: self.module.fail_json(msg="Failed to modify host, ensure authentication and host parameters " "are valid.") self.module.exit_json(changed=True) - except OmapiError: - e = get_exception() - self.module.fail_json(msg="OMAPI error: %s" % e) + except OmapiError as e: + self.module.fail_json(msg="OMAPI error: %s" % to_native(e), exception=traceback.format_exc()) def remove_host(self): try: @@ -286,9 +272,8 @@ class OmapiHostManager: self.module.exit_json(changed=True) except OmapiErrorNotFound: self.module.exit_json() - except OmapiError: - e = get_exception() - self.module.fail_json(msg="OMAPI error: %s" % e) + except OmapiError as e: + self.module.fail_json(msg="OMAPI error: %s" % to_native(e), exception=traceback.format_exc()) def main(): @@ -323,9 +308,9 @@ def main(): host_manager.setup_host() elif module.params['state'] == 'absent': host_manager.remove_host() - except ValueError: - e = get_exception() - module.fail_json(msg="OMAPI input value error: %s" % e) + except ValueError as e: + module.fail_json(msg="OMAPI input value error: %s" % to_native(e), exception=traceback.format_exc()) + if __name__ == '__main__': main() diff --git a/lib/ansible/modules/net_tools/snmp_facts.py b/lib/ansible/modules/net_tools/snmp_facts.py index 259f858bbb..b47f4d1abc 100644 --- a/lib/ansible/modules/net_tools/snmp_facts.py +++ b/lib/ansible/modules/net_tools/snmp_facts.py @@ -1,19 +1,10 @@ #!/usr/bin/python # This file is part of Networklore's snmp library for Ansible -# -# The module is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# The module is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with Ansible. If not, see . +# GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) + +from __future__ import absolute_import, division, print_function +__metaclass__ = type ANSIBLE_METADATA = {'metadata_version': '1.0', @@ -97,10 +88,6 @@ EXAMPLES = ''' ''' import binascii - -from ansible.module_utils.basic import * -from ansible.module_utils._text import to_text - from collections import defaultdict try: @@ -109,6 +96,10 @@ try: except: has_pysnmp = False +from ansible.module_utils.basic import AnsibleModule +from ansible.module_utils._text import to_text + + class DefineOid(object): def __init__(self,dotprefix=False): diff --git a/test/sanity/code-smell/boilerplate.sh b/test/sanity/code-smell/boilerplate.sh index 94caaaf82c..6995d8885e 100755 --- a/test/sanity/code-smell/boilerplate.sh +++ b/test/sanity/code-smell/boilerplate.sh @@ -23,7 +23,6 @@ metaclass3=$(find ./lib/ansible/modules -path ./lib/ansible/modules/windows -pru -o -path ./lib/ansible/modules/packaging -prune \ -o -path ./lib/ansible/modules/notification -prune \ -o -path ./lib/ansible/modules/network -prune \ - -o -path ./lib/ansible/modules/net_tools -prune \ -o -path ./lib/ansible/modules/monitoring -prune \ -o -path ./lib/ansible/modules/identity -prune \ -o -path ./lib/ansible/modules/files -prune \ @@ -32,7 +31,6 @@ metaclass3=$(find ./lib/ansible/modules -path ./lib/ansible/modules/windows -pru -o -path ./lib/ansible/modules/cloud/rackspace -prune \ -o -path ./lib/ansible/modules/cloud/ovirt -prune \ -o -path ./lib/ansible/modules/cloud/openstack -prune \ - -o -path ./lib/ansible/modules/cloud/misc -prune \ -o -path ./lib/ansible/modules/cloud/google -prune \ -o -path ./lib/ansible/modules/cloud/cloudstack -prune \ -o -path ./lib/ansible/modules/cloud/centurylink -prune \ @@ -44,7 +42,6 @@ future3=$(find ./lib/ansible/modules -path ./lib/ansible/modules/windows -prune -o -path ./lib/ansible/modules/packaging -prune \ -o -path ./lib/ansible/modules/notification -prune \ -o -path ./lib/ansible/modules/network -prune \ - -o -path ./lib/ansible/modules/net_tools -prune \ -o -path ./lib/ansible/modules/monitoring -prune \ -o -path ./lib/ansible/modules/identity -prune \ -o -path ./lib/ansible/modules/files -prune \ @@ -53,7 +50,6 @@ future3=$(find ./lib/ansible/modules -path ./lib/ansible/modules/windows -prune -o -path ./lib/ansible/modules/cloud/rackspace -prune \ -o -path ./lib/ansible/modules/cloud/ovirt -prune \ -o -path ./lib/ansible/modules/cloud/openstack -prune \ - -o -path ./lib/ansible/modules/cloud/misc -prune \ -o -path ./lib/ansible/modules/cloud/google -prune \ -o -path ./lib/ansible/modules/cloud/cloudstack -prune \ -o -path ./lib/ansible/modules/cloud/centurylink -prune \ @@ -61,24 +57,23 @@ future3=$(find ./lib/ansible/modules -path ./lib/ansible/modules/windows -prune -o -name '*.py' -type f -size +0c -exec egrep -HL 'from __future__ import (?absolute_import, division, print_function)?' '{}' '+') # Ordered by approximate work, lowest to highest -# cloud/misc -# cloud/google -# identity -# cloud/source_control -# cloud/centurylink -# database ;; break up -# net-tools -# cloud/rackspace -# cloud/vmware -# files -# cloud/openstack -# monitoring -# cloud/notification -# cloud/cloudstack +# cloud/google * +# identity ! +# source_control *i +# cloud/centurylink * +# database ;; break up *! +# cloud/rackspace * +# cloud/vmware *i +# files ! +# cloud/openstack * +# monitoring *! +# notification *! +# cloud/cloudstack * # cloud/ovirt -# cloud/packaging ;; breakup -# cloud/amazon -# network ;; break up +# packaging ;; breakup *! +# cloud/amazon *i +# network ;; break up *! +# ( * == import* fixes, ! == many get_exception fixes, i == a few get_exception fixes) ### TODO: ### - module_utils ### - contrib/