From cc343a4376a27927e0c7d31862dbb3108e101978 Mon Sep 17 00:00:00 2001 From: Toshio Kuratomi Date: Fri, 8 Sep 2017 11:08:31 -0700 Subject: [PATCH] Port ansible doc for plugins to use DOCUMENTATION variables * Using docstrings conflicts with the standard use of docstrings * PYTHON_OPTIMIZE=2 will omit docstrings. Using docstrings makes future changes to the plugin and module code subject to the requirement that we ensure it won't be run with optimization. --- lib/ansible/parsing/plugin_docs.py | 63 ++++++------------- lib/ansible/plugins/cache/jsonfile.py | 11 ++-- lib/ansible/plugins/cache/memcached.py | 9 ++- lib/ansible/plugins/cache/memory.py | 11 ++-- lib/ansible/plugins/cache/pickle.py | 11 ++-- lib/ansible/plugins/cache/redis.py | 8 +-- lib/ansible/plugins/cache/yaml.py | 11 ++-- lib/ansible/plugins/callback/actionable.py | 10 +-- lib/ansible/plugins/callback/context_demo.py | 9 ++- lib/ansible/plugins/callback/debug.py | 8 +-- lib/ansible/plugins/callback/default.py | 9 ++- lib/ansible/plugins/callback/dense.py | 8 +-- lib/ansible/plugins/callback/foreman.py | 9 ++- lib/ansible/plugins/callback/full_skip.py | 10 +-- lib/ansible/plugins/callback/hipchat.py | 9 ++- lib/ansible/plugins/callback/jabber.py | 9 ++- lib/ansible/plugins/callback/json.py | 11 ++-- lib/ansible/plugins/callback/junit.py | 9 ++- lib/ansible/plugins/callback/log_plays.py | 9 ++- lib/ansible/plugins/callback/logentries.py | 19 +++--- lib/ansible/plugins/callback/logstash.py | 9 ++- lib/ansible/plugins/callback/mail.py | 9 ++- lib/ansible/plugins/callback/minimal.py | 12 ++-- lib/ansible/plugins/callback/oneline.py | 11 ++-- lib/ansible/plugins/callback/osx_say.py | 11 ++-- lib/ansible/plugins/callback/profile_roles.py | 13 ++-- lib/ansible/plugins/callback/profile_tasks.py | 16 ++--- lib/ansible/plugins/callback/selective.py | 13 ++-- lib/ansible/plugins/callback/skippy.py | 11 ++-- lib/ansible/plugins/callback/slack.py | 10 +-- lib/ansible/plugins/callback/stderr.py | 10 +-- lib/ansible/plugins/callback/syslog_json.py | 11 ++-- lib/ansible/plugins/callback/timer.py | 11 ++-- lib/ansible/plugins/callback/tree.py | 9 +-- lib/ansible/plugins/connection/accelerate.py | 9 ++- lib/ansible/plugins/connection/buildah.py | 12 ++-- lib/ansible/plugins/connection/chroot.py | 9 ++- lib/ansible/plugins/connection/docker.py | 9 ++- lib/ansible/plugins/connection/funcd.py | 8 +-- lib/ansible/plugins/connection/iocage.py | 8 +-- lib/ansible/plugins/connection/jail.py | 9 ++- lib/ansible/plugins/connection/libvirt_lxc.py | 9 ++- lib/ansible/plugins/connection/local.py | 9 ++- lib/ansible/plugins/connection/lxc.py | 9 ++- lib/ansible/plugins/connection/lxd.py | 9 ++- lib/ansible/plugins/connection/netconf.py | 8 +-- lib/ansible/plugins/connection/network_cli.py | 9 ++- .../plugins/connection/paramiko_ssh.py | 8 +-- lib/ansible/plugins/connection/persistent.py | 9 ++- lib/ansible/plugins/connection/saltstack.py | 9 ++- lib/ansible/plugins/connection/ssh.py | 9 ++- lib/ansible/plugins/connection/winrm.py | 9 ++- lib/ansible/plugins/connection/zone.py | 9 ++- .../plugins/inventory/advanced_host_list.py | 21 ++++--- lib/ansible/plugins/inventory/constructed.py | 14 +++-- lib/ansible/plugins/inventory/host_list.py | 27 ++++---- lib/ansible/plugins/inventory/ini.py | 10 +-- lib/ansible/plugins/inventory/openstack.py | 12 ++-- lib/ansible/plugins/inventory/script.py | 8 +-- lib/ansible/plugins/inventory/virtualbox.py | 12 ++-- lib/ansible/plugins/inventory/yaml.py | 12 ++-- lib/ansible/plugins/lookup/cartesian.py | 15 +++-- lib/ansible/plugins/lookup/etcd.py | 16 +++-- lib/ansible/plugins/lookup/mongodb.py | 16 ++--- lib/ansible/plugins/strategy/debug.py | 9 ++- lib/ansible/plugins/strategy/free.py | 10 +-- lib/ansible/plugins/strategy/linear.py | 10 +-- lib/ansible/plugins/vars/host_group_vars.py | 9 ++- 68 files changed, 368 insertions(+), 412 deletions(-) diff --git a/lib/ansible/parsing/plugin_docs.py b/lib/ansible/parsing/plugin_docs.py index 7512b46ef4..267d612627 100644 --- a/lib/ansible/parsing/plugin_docs.py +++ b/lib/ansible/parsing/plugin_docs.py @@ -24,18 +24,6 @@ def read_docstring(filename, verbose=True, ignore_errors=True): Parse DOCUMENTATION from YAML and return the YAML doc or None together with EXAMPLES, as plain text. """ - # FIXME: Should refactor this so that we have a docstring parsing - # function and a separate variable parsing function - # Can have a function one higher that invokes whichever is needed - # - # Should look roughly like this: - # get_plugin_doc(filename, verbose=False) - # documentation = extract_docstring(plugin_ast, identifier, verbose=False) - # if not documentation and not (filter or test): - # documentation = extract_variables(plugin_ast) - # documentation['metadata'] = extract_metadata(plugin_ast) - # return documentation - data = { 'doc': None, 'plainexamples': None, @@ -52,40 +40,29 @@ def read_docstring(filename, verbose=True, ignore_errors=True): try: b_module_data = open(filename, 'rb').read() M = ast.parse(b_module_data) - try: - display.debug('Attempt first docstring is yaml docs') - docstring = yaml.load(M.body[0].value.s) - for string in string_to_vars.keys(): - if string in docstring: - data[string_to_vars[string]] = docstring[string] - display.debug('assigned :%s' % string_to_vars[string]) - except Exception as e: - display.debug('failed docstring parsing: %s' % str(e)) - if 'docs' not in data or not data['docs']: - display.debug('Fallback to vars parsing') - for child in M.body: - if isinstance(child, ast.Assign): - for t in child.targets: - try: - theid = t.id - except AttributeError: - # skip errors can happen when trying to use the normal code - display.warning("Failed to assign id for %s on %s, skipping" % (t, filename)) - continue + for child in M.body: + if isinstance(child, ast.Assign): + for t in child.targets: + try: + theid = t.id + except AttributeError: + # skip errors can happen when trying to use the normal code + display.warning("Failed to assign id for %s on %s, skipping" % (t, filename)) + continue - if theid in string_to_vars: - varkey = string_to_vars[theid] - if isinstance(child.value, ast.Dict): - data[varkey] = ast.literal_eval(child.value) + if theid in string_to_vars: + varkey = string_to_vars[theid] + if isinstance(child.value, ast.Dict): + data[varkey] = ast.literal_eval(child.value) + else: + if theid == 'DOCUMENTATION': + # string should be yaml + data[varkey] = AnsibleLoader(child.value.s, file_name=filename).get_single_data() else: - if theid == 'DOCUMENTATION': - # string should be yaml - data[varkey] = AnsibleLoader(child.value.s, file_name=filename).get_single_data() - else: - # not yaml, should be a simple string - data[varkey] = child.value.s - display.debug('assigned :%s' % varkey) + # not yaml, should be a simple string + data[varkey] = child.value.s + display.debug('assigned :%s' % varkey) # Metadata is per-file and a dict rather than per-plugin/function and yaml data['metadata'] = extract_metadata(module_ast=M)[0] diff --git a/lib/ansible/plugins/cache/jsonfile.py b/lib/ansible/plugins/cache/jsonfile.py index c387676f39..4c9f553173 100644 --- a/lib/ansible/plugins/cache/jsonfile.py +++ b/lib/ansible/plugins/cache/jsonfile.py @@ -2,8 +2,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' cache: jsonfile short_description: JSON formatted files. description: @@ -39,10 +42,6 @@ DOCUMENTATION: type: integer ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import codecs try: diff --git a/lib/ansible/plugins/cache/memcached.py b/lib/ansible/plugins/cache/memcached.py index dca0b48066..04f7f3248d 100644 --- a/lib/ansible/plugins/cache/memcached.py +++ b/lib/ansible/plugins/cache/memcached.py @@ -2,8 +2,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' cache: memcached short_description: Use memcached DB for cache description: @@ -40,9 +42,6 @@ DOCUMENTATION: type: integer ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import collections import os import time diff --git a/lib/ansible/plugins/cache/memory.py b/lib/ansible/plugins/cache/memory.py index d0ecc65d28..1bccd544b2 100644 --- a/lib/ansible/plugins/cache/memory.py +++ b/lib/ansible/plugins/cache/memory.py @@ -2,8 +2,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: + +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' cache: memory short_description: RAM backed, non persistent description: @@ -14,10 +17,6 @@ DOCUMENTATION: author: core team (@ansible-core) ''' - -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - from ansible.plugins.cache import BaseCacheModule diff --git a/lib/ansible/plugins/cache/pickle.py b/lib/ansible/plugins/cache/pickle.py index 489acc2ec6..703cc1cae4 100644 --- a/lib/ansible/plugins/cache/pickle.py +++ b/lib/ansible/plugins/cache/pickle.py @@ -2,8 +2,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' cache: pickle short_description: Pickle formatted files. description: @@ -38,10 +41,6 @@ DOCUMENTATION: section: defaults ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - try: import cPickle as pickle except ImportError: diff --git a/lib/ansible/plugins/cache/redis.py b/lib/ansible/plugins/cache/redis.py index 0f4fb4f5fe..831ff037e4 100644 --- a/lib/ansible/plugins/cache/redis.py +++ b/lib/ansible/plugins/cache/redis.py @@ -1,8 +1,10 @@ # (c) 2014, Brian Coca, Josh Drake, et al # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' cache: redis short_description: Use Redis DB for cache description: @@ -37,8 +39,6 @@ DOCUMENTATION: section: defaults type: integer ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type import time import json diff --git a/lib/ansible/plugins/cache/yaml.py b/lib/ansible/plugins/cache/yaml.py index bf151fef61..f66fa63b60 100644 --- a/lib/ansible/plugins/cache/yaml.py +++ b/lib/ansible/plugins/cache/yaml.py @@ -2,8 +2,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' cache: yaml short_description: YAML formatted files. description: @@ -39,10 +42,6 @@ DOCUMENTATION: type: integer ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import codecs diff --git a/lib/ansible/plugins/callback/actionable.py b/lib/ansible/plugins/callback/actionable.py index 5f0995d62e..d738db0cda 100644 --- a/lib/ansible/plugins/callback/actionable.py +++ b/lib/ansible/plugins/callback/actionable.py @@ -2,8 +2,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: actionable type: stdout short_description: shows only items that need attention @@ -14,9 +17,6 @@ DOCUMENTATION: requirements: - set as stdout callback in configuration ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type from ansible.plugins.callback.default import CallbackModule as CallbackModule_default diff --git a/lib/ansible/plugins/callback/context_demo.py b/lib/ansible/plugins/callback/context_demo.py index 08add61625..0229d4ea46 100644 --- a/lib/ansible/plugins/callback/context_demo.py +++ b/lib/ansible/plugins/callback/context_demo.py @@ -2,8 +2,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: context_demo type: aggregate short_description: demo callback that adds play/task context @@ -15,9 +17,6 @@ DOCUMENTATION: - whitelist in configuration ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - from ansible.plugins.callback import CallbackBase diff --git a/lib/ansible/plugins/callback/debug.py b/lib/ansible/plugins/callback/debug.py index 94e7b86c14..3d5969f648 100644 --- a/lib/ansible/plugins/callback/debug.py +++ b/lib/ansible/plugins/callback/debug.py @@ -1,8 +1,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: debug type: stdout short_description: formated stdout/stderr display @@ -12,8 +14,6 @@ DOCUMENTATION: requirements: - set as stdout in configuration ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type from ansible.plugins.callback.default import CallbackModule as CallbackModule_default diff --git a/lib/ansible/plugins/callback/default.py b/lib/ansible/plugins/callback/default.py index 033cbbde44..23c10a73ec 100644 --- a/lib/ansible/plugins/callback/default.py +++ b/lib/ansible/plugins/callback/default.py @@ -2,8 +2,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: default type: stdout short_description: default Ansible screen output @@ -35,9 +37,6 @@ DOCUMENTATION: - set as stdout in configuration ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - from ansible import constants as C from ansible.playbook.task_include import TaskInclude from ansible.plugins.callback import CallbackBase diff --git a/lib/ansible/plugins/callback/dense.py b/lib/ansible/plugins/callback/dense.py index 7adbdb819c..4694b76ada 100644 --- a/lib/ansible/plugins/callback/dense.py +++ b/lib/ansible/plugins/callback/dense.py @@ -2,8 +2,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: dense type: stdout short_description: minimal stdout output @@ -13,8 +15,6 @@ DOCUMENTATION: requirements: - set as stdout in configuation ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type from collections import MutableMapping, MutableSequence diff --git a/lib/ansible/plugins/callback/foreman.py b/lib/ansible/plugins/callback/foreman.py index 0172b4c43c..c686d3c9ce 100644 --- a/lib/ansible/plugins/callback/foreman.py +++ b/lib/ansible/plugins/callback/foreman.py @@ -4,8 +4,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: foreman type: notification short_description: Sends events to Foreman @@ -38,9 +40,6 @@ DOCUMENTATION: - name: FOREMAN_SSL_VERIFY ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import os from datetime import datetime from collections import defaultdict diff --git a/lib/ansible/plugins/callback/full_skip.py b/lib/ansible/plugins/callback/full_skip.py index dd2e8876f9..fdb8a6d410 100644 --- a/lib/ansible/plugins/callback/full_skip.py +++ b/lib/ansible/plugins/callback/full_skip.py @@ -2,8 +2,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: full_skip type: stdout short_description: suppreses tasks if all hosts skipped @@ -13,9 +16,6 @@ DOCUMENTATION: requirements: - set as stdout in configuation ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type from ansible.plugins.callback.default import CallbackModule as CallbackModule_default diff --git a/lib/ansible/plugins/callback/hipchat.py b/lib/ansible/plugins/callback/hipchat.py index 55ff0ac93b..8280f2ff05 100644 --- a/lib/ansible/plugins/callback/hipchat.py +++ b/lib/ansible/plugins/callback/hipchat.py @@ -2,8 +2,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: hipchat type: notification short_description: post task events to hipchat @@ -37,9 +39,6 @@ DOCUMENTATION: - name: HIPCHAT_NOTIFY ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import os try: diff --git a/lib/ansible/plugins/callback/jabber.py b/lib/ansible/plugins/callback/jabber.py index 89983d7d37..e5777ddf07 100644 --- a/lib/ansible/plugins/callback/jabber.py +++ b/lib/ansible/plugins/callback/jabber.py @@ -2,8 +2,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: jabber type: notification short_description: post task events to a jabber server @@ -36,9 +38,6 @@ DOCUMENTATION: - name: JABBER_TO ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import os HAS_XMPP = True diff --git a/lib/ansible/plugins/callback/json.py b/lib/ansible/plugins/callback/json.py index 464605fe2f..cf359f9285 100644 --- a/lib/ansible/plugins/callback/json.py +++ b/lib/ansible/plugins/callback/json.py @@ -2,8 +2,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: json short_description: Ansbile screen output as JSON version_added: "2.2" @@ -14,10 +17,6 @@ DOCUMENTATION: - Set as stdout in config ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import json from ansible.plugins.callback import CallbackBase diff --git a/lib/ansible/plugins/callback/junit.py b/lib/ansible/plugins/callback/junit.py index b7255ebf7a..4948426fcb 100644 --- a/lib/ansible/plugins/callback/junit.py +++ b/lib/ansible/plugins/callback/junit.py @@ -2,8 +2,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: junit type: aggregate short_description: write playbook output to a JUnit file. @@ -40,9 +42,6 @@ DOCUMENTATION: - junit_xml (python lib) ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import os import time import re diff --git a/lib/ansible/plugins/callback/log_plays.py b/lib/ansible/plugins/callback/log_plays.py index cfa65a87ee..5b9d1b96c0 100644 --- a/lib/ansible/plugins/callback/log_plays.py +++ b/lib/ansible/plugins/callback/log_plays.py @@ -2,8 +2,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: log_plays type: notification short_description: write playbook output to log file @@ -16,9 +18,6 @@ DOCUMENTATION: - A writeable /var/log/ansible/hosts directory by the user executing Ansbile on the controller ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import os import time import json diff --git a/lib/ansible/plugins/callback/logentries.py b/lib/ansible/plugins/callback/logentries.py index 8f0d73b878..980f2a7aed 100644 --- a/lib/ansible/plugins/callback/logentries.py +++ b/lib/ansible/plugins/callback/logentries.py @@ -1,9 +1,10 @@ # (c) 2015, Logentries.com, Jimmy Tang # (c) 2017 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 -''' -DOCUMENTATION: +DOCUMENTATION = ''' callback: logentries type: notification short_description: Sends events to Logentries @@ -68,7 +69,10 @@ DOCUMENTATION: ini: - section: callback_logentries key: flatten -EXAMPLES: > +''' + +EXAMPLES = ''' +examples: > To enable, add this to your ansible.cfg file in the defaults block [defaults] @@ -88,8 +92,6 @@ EXAMPLES: > token = dd21fc88-f00a-43ff-b977-e3a4233c53af flatten = False ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type import os import socket @@ -112,10 +114,9 @@ except ImportError: from ansible.errors import AnsibleError from ansible.module_utils._text import to_bytes, to_text, to_native from ansible.plugins.callback import CallbackBase -""" -Todo: - * Better formatting of output before sending out to logentries data/api nodes. -""" + +# Todo: +# * Better formatting of output before sending out to logentries data/api nodes. class PlainTextSocketAppender(object): diff --git a/lib/ansible/plugins/callback/logstash.py b/lib/ansible/plugins/callback/logstash.py index bc3e24f6e6..ac9452ed85 100644 --- a/lib/ansible/plugins/callback/logstash.py +++ b/lib/ansible/plugins/callback/logstash.py @@ -2,8 +2,10 @@ # (C) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: logstash type: notification short_description: Sends events to Logstash @@ -31,9 +33,6 @@ DOCUMENTATION: default: ansible ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import os import json import socket diff --git a/lib/ansible/plugins/callback/mail.py b/lib/ansible/plugins/callback/mail.py index bd186205ef..4101120c77 100644 --- a/lib/ansible/plugins/callback/mail.py +++ b/lib/ansible/plugins/callback/mail.py @@ -2,8 +2,10 @@ # Copyright: (c) 2012, Dag Wieers # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: mail type: notification short_description: Sends failure events via email @@ -23,9 +25,6 @@ DOCUMENTATION: - "TODO: expand configuration options now that plugins can leverage Ansible's configuration" ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import json import os import smtplib diff --git a/lib/ansible/plugins/callback/minimal.py b/lib/ansible/plugins/callback/minimal.py index eb6bd5c5aa..5b568b0977 100644 --- a/lib/ansible/plugins/callback/minimal.py +++ b/lib/ansible/plugins/callback/minimal.py @@ -2,8 +2,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: minimal type: stdout short_description: minimal Ansible screen output @@ -12,11 +15,6 @@ DOCUMENTATION: - This is the default output callback used by the ansible command (ad-hoc) ''' -# Make coding more python3-ish -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - from ansible.plugins.callback import CallbackBase from ansible import constants as C diff --git a/lib/ansible/plugins/callback/oneline.py b/lib/ansible/plugins/callback/oneline.py index e55856d6a5..119b8273ed 100644 --- a/lib/ansible/plugins/callback/oneline.py +++ b/lib/ansible/plugins/callback/oneline.py @@ -2,8 +2,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: oneline type: stdout short_description: oneline Ansible screen output @@ -12,10 +15,6 @@ DOCUMENTATION: - This is the output callback used by the -o/--one-line command line option. ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - from ansible.plugins.callback import CallbackBase from ansible import constants as C diff --git a/lib/ansible/plugins/callback/osx_say.py b/lib/ansible/plugins/callback/osx_say.py index 1b4b490146..476c66228a 100644 --- a/lib/ansible/plugins/callback/osx_say.py +++ b/lib/ansible/plugins/callback/osx_say.py @@ -2,8 +2,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: osx_say type: notification requirements: @@ -15,10 +18,6 @@ DOCUMENTATION: - This plugin will use the 'say' program to "speak" about play events. ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import subprocess import os diff --git a/lib/ansible/plugins/callback/profile_roles.py b/lib/ansible/plugins/callback/profile_roles.py index fd4333ff4d..e13cb29fc5 100644 --- a/lib/ansible/plugins/callback/profile_roles.py +++ b/lib/ansible/plugins/callback/profile_roles.py @@ -2,8 +2,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: profile_roles type: aggregate short_description: adds timing information to roles @@ -14,12 +17,6 @@ DOCUMENTATION: - whitelisting in configuration ''' -# Make coding more python3-ish -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) - -__metaclass__ = type - import collections import time diff --git a/lib/ansible/plugins/callback/profile_tasks.py b/lib/ansible/plugins/callback/profile_tasks.py index cb97a2d356..026cf3e360 100644 --- a/lib/ansible/plugins/callback/profile_tasks.py +++ b/lib/ansible/plugins/callback/profile_tasks.py @@ -5,8 +5,11 @@ # (C) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: profile_tasks type: aggregate short_description: adds time information to tasks @@ -38,7 +41,9 @@ DOCUMENTATION: ini: - section: callback_profile_tasks key: sort_order -#EXAMPLES: > ' +''' + +EXAMPLES = ''' # # TASK: [ensure messaging security group exists] ******************************** # Thursday 11 June 2017 22:50:53 +0100 (0:00:00.721) 0:00:05.322 ********* @@ -50,11 +55,6 @@ DOCUMENTATION: # ' ''' -# Make coding more python3-ish -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import collections import time diff --git a/lib/ansible/plugins/callback/selective.py b/lib/ansible/plugins/callback/selective.py index d61eb06764..4785129011 100644 --- a/lib/ansible/plugins/callback/selective.py +++ b/lib/ansible/plugins/callback/selective.py @@ -2,8 +2,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ callback: selective callback_type: stdout requirements: @@ -26,21 +28,20 @@ DOCUMENTATION: - section: defaults - key: nocolor type: boolean -EXAMPLES: +""" + +EXAMPLES = """ - debug: msg="This will not be printed" - debug: msg="But this will" tags: [print_action] """ -from __future__ import (absolute_import, division, print_function) - import difflib from ansible import constants as C from ansible.plugins.callback import CallbackBase from ansible.module_utils._text import to_text -__metaclass__ = type DONT_COLORIZE = False COLORS = { diff --git a/lib/ansible/plugins/callback/skippy.py b/lib/ansible/plugins/callback/skippy.py index 522233fe34..bf7745cf27 100644 --- a/lib/ansible/plugins/callback/skippy.py +++ b/lib/ansible/plugins/callback/skippy.py @@ -2,8 +2,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: skippy callback_type: stdout requirements: @@ -14,10 +17,6 @@ DOCUMENTATION: - This callback does the same as the default except it does not output skipped host/task/item status ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - from ansible.plugins.callback.default import CallbackModule as CallbackModule_default diff --git a/lib/ansible/plugins/callback/slack.py b/lib/ansible/plugins/callback/slack.py index a4bf4ef8ad..0ac74de31a 100644 --- a/lib/ansible/plugins/callback/slack.py +++ b/lib/ansible/plugins/callback/slack.py @@ -2,8 +2,11 @@ # (C) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: slack callback_type: notification requirements: @@ -40,9 +43,6 @@ DOCUMENTATION: - section: callback_slack key: username ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type import json import os diff --git a/lib/ansible/plugins/callback/stderr.py b/lib/ansible/plugins/callback/stderr.py index 5afde9f92d..fcf53850d2 100644 --- a/lib/ansible/plugins/callback/stderr.py +++ b/lib/ansible/plugins/callback/stderr.py @@ -2,8 +2,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: stderr callback_type: stdout requirements: @@ -14,9 +17,6 @@ DOCUMENTATION: - This is the stderr callback plugin, it behaves like the default callback plugin but sends error output to stderr. - Also it does not output skipped host/task/item status ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type from ansible import constants as C from ansible.plugins.callback.default import CallbackModule as CallbackModule_default diff --git a/lib/ansible/plugins/callback/syslog_json.py b/lib/ansible/plugins/callback/syslog_json.py index 6d0d1446a7..6385e65550 100644 --- a/lib/ansible/plugins/callback/syslog_json.py +++ b/lib/ansible/plugins/callback/syslog_json.py @@ -1,8 +1,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: syslog_json callback_type: notification requirements: @@ -39,10 +42,6 @@ DOCUMENTATION: key: syslog_facility ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import os import json diff --git a/lib/ansible/plugins/callback/timer.py b/lib/ansible/plugins/callback/timer.py index f2657e0b53..c3dce219d0 100644 --- a/lib/ansible/plugins/callback/timer.py +++ b/lib/ansible/plugins/callback/timer.py @@ -1,7 +1,11 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: + +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: timer callback_type: aggregate requirements: @@ -11,9 +15,6 @@ DOCUMENTATION: description: - This callback just adds total play duration to the play stats. ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type from datetime import datetime diff --git a/lib/ansible/plugins/callback/tree.py b/lib/ansible/plugins/callback/tree.py index a0918357b4..6596704919 100644 --- a/lib/ansible/plugins/callback/tree.py +++ b/lib/ansible/plugins/callback/tree.py @@ -1,8 +1,11 @@ # (c) 2012-2014, Ansible, Inc # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: + +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' callback: tree callback_type: notification requirements: @@ -13,8 +16,6 @@ DOCUMENTATION: - "This callback is used by the Ansible (adhoc) command line option `-t|--tree`" - This produces a JSON dump of events in a directory, a file for each host, the directory used MUST be passed as a commadn line option. ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type import os diff --git a/lib/ansible/plugins/connection/accelerate.py b/lib/ansible/plugins/connection/accelerate.py index b91fe12d1e..4e6e3884e7 100644 --- a/lib/ansible/plugins/connection/accelerate.py +++ b/lib/ansible/plugins/connection/accelerate.py @@ -14,8 +14,10 @@ # # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Ansible Core Team connection: accelerate short_description: Temporary 0mq agent @@ -27,9 +29,6 @@ DOCUMENTATION: alternative: paramiko and ssh with conrol persistence. """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import base64 import json import os diff --git a/lib/ansible/plugins/connection/buildah.py b/lib/ansible/plugins/connection/buildah.py index ba634f8c71..37d0326a12 100644 --- a/lib/ansible/plugins/connection/buildah.py +++ b/lib/ansible/plugins/connection/buildah.py @@ -7,8 +7,11 @@ # # Written by: Tomas Tomecek (https://github.com/TomasTomecek) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + + +DOCUMENTATION = """ connection: buildah short_description: Interact with an existing buildah container description: @@ -38,8 +41,6 @@ DOCUMENTATION: # - name: remote_user """ -from __future__ import (absolute_import, division, print_function) - import shlex import shutil @@ -57,9 +58,6 @@ except ImportError: display = Display() -__metaclass__ = type - - # this _has to be_ named Connection class Connection(ConnectionBase): """ diff --git a/lib/ansible/plugins/connection/chroot.py b/lib/ansible/plugins/connection/chroot.py index f2a1aa2b45..e0b5a1ed5d 100644 --- a/lib/ansible/plugins/connection/chroot.py +++ b/lib/ansible/plugins/connection/chroot.py @@ -5,8 +5,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Maykel Moya connection: chroot short_description: Interact with local chroot @@ -32,9 +34,6 @@ DOCUMENTATION: - name: ansible_executable """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import distutils.spawn import os import os.path diff --git a/lib/ansible/plugins/connection/docker.py b/lib/ansible/plugins/connection/docker.py index 21ca34957c..bf7d629960 100644 --- a/lib/ansible/plugins/connection/docker.py +++ b/lib/ansible/plugins/connection/docker.py @@ -6,8 +6,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: - Lorin Hochestein - Leendert Brouwer @@ -37,9 +39,6 @@ DOCUMENTATION: - name: ansible_docker_host """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import distutils.spawn import os import os.path diff --git a/lib/ansible/plugins/connection/funcd.py b/lib/ansible/plugins/connection/funcd.py index 6cc9f3f422..0562e3afd9 100644 --- a/lib/ansible/plugins/connection/funcd.py +++ b/lib/ansible/plugins/connection/funcd.py @@ -4,8 +4,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Michael Scherer (@msherer) connection: funcd short_description: Use funcd to connect to target @@ -23,8 +25,6 @@ DOCUMENTATION: - name: ansible_host - name: ansible_func_host """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type HAVE_FUNC = False try: diff --git a/lib/ansible/plugins/connection/iocage.py b/lib/ansible/plugins/connection/iocage.py index d196cd2d91..6c0e7e050e 100644 --- a/lib/ansible/plugins/connection/iocage.py +++ b/lib/ansible/plugins/connection/iocage.py @@ -5,8 +5,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Stephan Lohse connection: iocage short_description: Run tasks in iocage jails @@ -28,8 +30,6 @@ DOCUMENTATION: - name: ansible_user - name: ansible_iocage_user """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type import subprocess from ansible.plugins.connection.jail import Connection as Jail diff --git a/lib/ansible/plugins/connection/jail.py b/lib/ansible/plugins/connection/jail.py index 50ed38df54..ca4f72dd71 100644 --- a/lib/ansible/plugins/connection/jail.py +++ b/lib/ansible/plugins/connection/jail.py @@ -5,8 +5,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Ansible Core Team connection: jail short_description: Run tasks in jails @@ -29,9 +31,6 @@ DOCUMENTATION: - name: ansible_jail_user """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import distutils.spawn import os import os.path diff --git a/lib/ansible/plugins/connection/libvirt_lxc.py b/lib/ansible/plugins/connection/libvirt_lxc.py index 96085afe6c..0cc8940bb7 100644 --- a/lib/ansible/plugins/connection/libvirt_lxc.py +++ b/lib/ansible/plugins/connection/libvirt_lxc.py @@ -5,8 +5,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Michael Scherer connection: libvirt_lxc short_description: Run tasks in lxc containers via libvirt @@ -23,9 +25,6 @@ DOCUMENTATION: - name: ansible_libvirt_lxc_host """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import distutils.spawn import os import os.path diff --git a/lib/ansible/plugins/connection/local.py b/lib/ansible/plugins/connection/local.py index 005185fb60..be0bfaae25 100644 --- a/lib/ansible/plugins/connection/local.py +++ b/lib/ansible/plugins/connection/local.py @@ -15,8 +15,10 @@ # # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' connection: local short_description: execute on controller description: @@ -27,9 +29,6 @@ DOCUMENTATION: - The remote user is ignored, the user with which the ansible CLI was executed is used instead. ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import os import shutil import subprocess diff --git a/lib/ansible/plugins/connection/lxc.py b/lib/ansible/plugins/connection/lxc.py index c7c51a20af..a8af7785e9 100644 --- a/lib/ansible/plugins/connection/lxc.py +++ b/lib/ansible/plugins/connection/lxc.py @@ -2,8 +2,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Joerg Thalheim connection: lxc short_description: Run tasks in lxc containers via lxc python library @@ -27,9 +29,6 @@ DOCUMENTATION: - name: ansible_lxc_executable """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import os import shutil import traceback diff --git a/lib/ansible/plugins/connection/lxd.py b/lib/ansible/plugins/connection/lxd.py index ced61d9045..9cc8b8929c 100644 --- a/lib/ansible/plugins/connection/lxd.py +++ b/lib/ansible/plugins/connection/lxd.py @@ -2,8 +2,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Matt Clay connection: lxd short_description: Run tasks in lxc containers via lxc CLI @@ -27,9 +29,6 @@ DOCUMENTATION: - name: ansible_lxd_executable """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import os from distutils.spawn import find_executable from subprocess import call, Popen, PIPE diff --git a/lib/ansible/plugins/connection/netconf.py b/lib/ansible/plugins/connection/netconf.py index 854c0bb6f6..5c73c343b4 100644 --- a/lib/ansible/plugins/connection/netconf.py +++ b/lib/ansible/plugins/connection/netconf.py @@ -2,8 +2,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Ansible Networking Team connection: netconf short_description: Use netconf to run command on network appliances @@ -66,8 +68,6 @@ DOCUMENTATION: #look_for_keys=C.PARAMIKO_LOOK_FOR_KEYS, #allow_agent=self.allow_agent, """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type import os import logging diff --git a/lib/ansible/plugins/connection/network_cli.py b/lib/ansible/plugins/connection/network_cli.py index 0525809f57..3fc730a225 100644 --- a/lib/ansible/plugins/connection/network_cli.py +++ b/lib/ansible/plugins/connection/network_cli.py @@ -2,8 +2,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Ansible Networking Team connection: network_cli short_description: Use network_cli to run command on network appliances @@ -42,9 +44,6 @@ DOCUMENTATION: default: 120 """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import json import logging import re diff --git a/lib/ansible/plugins/connection/paramiko_ssh.py b/lib/ansible/plugins/connection/paramiko_ssh.py index a6d0e5c377..924addb6f5 100644 --- a/lib/ansible/plugins/connection/paramiko_ssh.py +++ b/lib/ansible/plugins/connection/paramiko_ssh.py @@ -1,8 +1,10 @@ # (c) 2012, Michael DeHaan # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Ansible Core Team connection: paramiko short_description: Run tasks via python ssh (paramiko) @@ -47,8 +49,6 @@ DOCUMENTATION: #C.PARAMIKO_PTY #C.PARAMIKO_RECORD_HOST_KEYS """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type import warnings import os diff --git a/lib/ansible/plugins/connection/persistent.py b/lib/ansible/plugins/connection/persistent.py index 6abdf00d7d..1e51eceed2 100644 --- a/lib/ansible/plugins/connection/persistent.py +++ b/lib/ansible/plugins/connection/persistent.py @@ -2,8 +2,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Ansible Core Team connection: persistent short_description: Use a persistent unix socket for connection @@ -12,9 +14,6 @@ DOCUMENTATION: version_added: "2.3" """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import re import os import pty diff --git a/lib/ansible/plugins/connection/saltstack.py b/lib/ansible/plugins/connection/saltstack.py index fb262db5db..7e32a6a281 100644 --- a/lib/ansible/plugins/connection/saltstack.py +++ b/lib/ansible/plugins/connection/saltstack.py @@ -5,8 +5,10 @@ # (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Michael Scherer connection: saltstack short_description: Allow ansible to piggyback on salt minions @@ -15,9 +17,6 @@ DOCUMENTATION: version_added: "2.2" """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import re import os import pty diff --git a/lib/ansible/plugins/connection/ssh.py b/lib/ansible/plugins/connection/ssh.py index 7280489168..1755c64a66 100644 --- a/lib/ansible/plugins/connection/ssh.py +++ b/lib/ansible/plugins/connection/ssh.py @@ -4,8 +4,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' connection: ssh short_description: connect via ssh client binary description: @@ -169,9 +171,6 @@ DOCUMENTATION: - {key: scp_if_ssh, section: ssh_connection} ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import errno import fcntl import hashlib diff --git a/lib/ansible/plugins/connection/winrm.py b/lib/ansible/plugins/connection/winrm.py index 1243023f2b..4c9a1093e3 100644 --- a/lib/ansible/plugins/connection/winrm.py +++ b/lib/ansible/plugins/connection/winrm.py @@ -2,8 +2,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Ansible Core Team connection: winrm short_description: Run tasks over Microsoft's WinRM @@ -26,9 +28,6 @@ DOCUMENTATION: - name: ansible_winrm_user """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import base64 import inspect import os diff --git a/lib/ansible/plugins/connection/zone.py b/lib/ansible/plugins/connection/zone.py index 62238195f3..ea625df410 100644 --- a/lib/ansible/plugins/connection/zone.py +++ b/lib/ansible/plugins/connection/zone.py @@ -6,8 +6,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ author: Ansible Core Team connection: zone short_description: Run tasks in a zone instance @@ -24,9 +26,6 @@ DOCUMENTATION: - name: ansible_zone_host """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import distutils.spawn import os import os.path diff --git a/lib/ansible/plugins/inventory/advanced_host_list.py b/lib/ansible/plugins/inventory/advanced_host_list.py index a4c6934351..1783efa961 100644 --- a/lib/ansible/plugins/inventory/advanced_host_list.py +++ b/lib/ansible/plugins/inventory/advanced_host_list.py @@ -1,24 +1,25 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' inventory: advanced_host_list version_added: "2.4" short_description: Parses a 'host list' with ranges description: - Parses a host list string as a comma separated values of hosts and supports host ranges. - This plugin only applies to inventory sources that are not paths and contain at least one comma. -EXAMPLES: | - # simple range - ansible -i 'host[1:10],' -m ping - - # still supports w/o ranges also - ansible-playbook -i 'localhost,' play.yml ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type +EXAMPLES = ''' + # simple range + # ansible -i 'host[1:10],' -m ping + + # still supports w/o ranges also + # ansible-playbook -i 'localhost,' play.yml +''' import os diff --git a/lib/ansible/plugins/inventory/constructed.py b/lib/ansible/plugins/inventory/constructed.py index 72d112e010..814c67a4f9 100644 --- a/lib/ansible/plugins/inventory/constructed.py +++ b/lib/ansible/plugins/inventory/constructed.py @@ -1,8 +1,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' name: constructed plugin_type: inventory version_added: "2.4" @@ -15,7 +17,10 @@ DOCUMENTATION: - Failed expressions will be ignored (assumes vars were missing). extends_documentation_fragment: - constructed -EXAMPLES: | # inventory.config file in YAML format +''' + +EXAMPLES = ''' + # inventory.config file in YAML format plugin: comstructed compose: var_sum: var1 + var2 @@ -42,9 +47,6 @@ EXAMPLES: | # inventory.config file in YAML format key: ec2_architecture ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import os from ansible.errors import AnsibleParserError diff --git a/lib/ansible/plugins/inventory/host_list.py b/lib/ansible/plugins/inventory/host_list.py index 6b1a8b8104..b9bfa9dbd5 100644 --- a/lib/ansible/plugins/inventory/host_list.py +++ b/lib/ansible/plugins/inventory/host_list.py @@ -1,27 +1,28 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -r''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = r''' inventory: host_list version_added: "2.4" short_description: Parses a 'host list' string description: - Parses a host list string as a comma separated values of hosts - This plugin only applies to inventory strings that are not paths and contain a comma. -EXAMPLES: | - # define 2 hosts in command line - ansible -i '10.10.2.6, 10.10.2.4' -m ping all - - # DNS resolvable names - ansible -i 'host1.example.com, host2' -m user -a 'name=me state=absent' all - - # just use localhost - ansible-playbook -i 'localhost,' play.yml -c local ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type +EXAMPLES = r''' + # define 2 hosts in command line + # ansible -i '10.10.2.6, 10.10.2.4' -m ping all + + # DNS resolvable names + # ansible -i 'host1.example.com, host2' -m user -a 'name=me state=absent' all + + # just use localhost + # ansible-playbook -i 'localhost,' play.yml -c local +''' import os diff --git a/lib/ansible/plugins/inventory/ini.py b/lib/ansible/plugins/inventory/ini.py index a84cdeee19..8033ccf315 100644 --- a/lib/ansible/plugins/inventory/ini.py +++ b/lib/ansible/plugins/inventory/ini.py @@ -1,8 +1,9 @@ # Copyright (c) 2017 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 -''' -DOCUMENTATION: +DOCUMENTATION = ''' inventory: ini version_added: "2.4" short_description: Uses an Ansible INI file as inventory source. @@ -19,8 +20,9 @@ DOCUMENTATION: notes: - It takes the place of the previously hardcoded INI inventory. - To function it requires being whitelisted in configuration. +''' -EXAMPLES: +EXAMPLES = ''' example1: | # example cfg file [web] @@ -63,8 +65,6 @@ EXAMPLES: host4 # same host as above, but member of 2 groups, will inherit vars from both # inventory hostnames are unique ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type import ast import re diff --git a/lib/ansible/plugins/inventory/openstack.py b/lib/ansible/plugins/inventory/openstack.py index 61bb642ea2..a4514b502a 100644 --- a/lib/ansible/plugins/inventory/openstack.py +++ b/lib/ansible/plugins/inventory/openstack.py @@ -5,8 +5,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' name: openstack plugin_type: inventory short_description: OpenStack inventory source @@ -84,7 +86,9 @@ DOCUMENTATION: description: Add hosts to group based on Jinja2 conditionals. type: dictionary default: {} -EXAMPLES: +''' + +EXAMPLES = ''' # file must be named openstack.yaml or openstack.yml # Make the plugin behave like the default behavior of the old script simple_config_file: @@ -93,8 +97,6 @@ simple_config_file: expand_hostvars: true fail_on_errors: true ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type import collections diff --git a/lib/ansible/plugins/inventory/script.py b/lib/ansible/plugins/inventory/script.py index a85be8f768..3da241e058 100644 --- a/lib/ansible/plugins/inventory/script.py +++ b/lib/ansible/plugins/inventory/script.py @@ -2,8 +2,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' inventory: script version_added: "2.4" short_description: Executes an inventory script that returns JSON @@ -15,8 +17,6 @@ DOCUMENTATION: - It takes the place of the previously hardcoded script inventory. - To function it requires being whitelisted in configuration, which is true by default. ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type import os import subprocess diff --git a/lib/ansible/plugins/inventory/virtualbox.py b/lib/ansible/plugins/inventory/virtualbox.py index 5d105b984e..9efb74da77 100644 --- a/lib/ansible/plugins/inventory/virtualbox.py +++ b/lib/ansible/plugins/inventory/virtualbox.py @@ -1,8 +1,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' name: virtualbox plugin_type: inventory short_description: virtualbox inventory source @@ -32,7 +34,9 @@ DOCUMENTATION: description: add hosts to group based on Jinja2 conditionals, these also run after query block type: dictionary default: {} -EXAMPLES: +''' + +EXAMPLES = ''' # file must be named vbox.yaml or vbox.yml simple_config_file: plugin: virtualbox @@ -42,8 +46,6 @@ simple_config_file: compose: ansible_connection: ('indows' in vbox_Guest_OS)|ternary('winrm', 'ssh') ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type import os diff --git a/lib/ansible/plugins/inventory/yaml.py b/lib/ansible/plugins/inventory/yaml.py index 2337fcf333..560d25d96b 100644 --- a/lib/ansible/plugins/inventory/yaml.py +++ b/lib/ansible/plugins/inventory/yaml.py @@ -1,8 +1,10 @@ # Copyright (c) 2017 Ansible Project # GNU General Public License v3.0+ (see COPYING or https://www.gnu.org/licenses/gpl-3.0.txt) -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' inventory: yaml version_added: "2.4" short_description: Uses a specifically YAML file as inventory source. @@ -20,7 +22,8 @@ DOCUMENTATION: description: list of 'valid' extensions for files containing YAML type: list default: ['.yaml', '.yml', '.json'] -EXAMPLES: +''' +EXAMPLES = ''' all: # keys must be unique, i.e. only one 'hosts' per group hosts: test1: @@ -46,9 +49,6 @@ all: # keys must be unique, i.e. only one 'hosts' per group last_var: MYVALUE ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import re import os diff --git a/lib/ansible/plugins/lookup/cartesian.py b/lib/ansible/plugins/lookup/cartesian.py index 8b8decffae..d15bf026b8 100644 --- a/lib/ansible/plugins/lookup/cartesian.py +++ b/lib/ansible/plugins/lookup/cartesian.py @@ -14,8 +14,10 @@ # # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . -""" -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = """ lookup: cartesian version_added: "2.1" short_description: returns the cartesian product of lists @@ -26,7 +28,9 @@ DOCUMENTATION: description: - a set of lists required: True -EXAMPLES: +""" + +EXAMPLES = """ - name: outputs the cartesian product of the supplied lists debug: msg="{{item}}" @@ -35,15 +39,14 @@ EXAMPLES: - "{{list2}}" - name: used as lookup changes [1, 2, 3], [a, b] into [1, a], [1, b], [2, a], [2, b], [3, a], [3, b] debug: msg="{{ [1,2,3]|lookup('cartesian', [a, b])}}" +""" -RETURN: +RETURN = """ _list: description: - list of lists composed of elements of the input lists type: lists """ -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type from itertools import product diff --git a/lib/ansible/plugins/lookup/etcd.py b/lib/ansible/plugins/lookup/etcd.py index 30b562fb30..d6b9a1d6a5 100644 --- a/lib/ansible/plugins/lookup/etcd.py +++ b/lib/ansible/plugins/lookup/etcd.py @@ -15,8 +15,10 @@ # # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' author: - Jan-Piet Mens (@jpmens) lookup: etcd @@ -47,21 +49,23 @@ DOCUMENTATION: - name: ANSIBLE_ETCD_VERSION yaml: - key: etcd.version -EXAMPLES: +''' + +EXAMPLES = ''' - name: "a value from a locally running etcd" debug: msg={{ lookup('etcd', 'foo/bar') }} - name: "a values from a folder on a locally running etcd" debug: msg={{ lookup('etcd', 'foo') }} -RETURN: +''' + +RETURN = ''' _raw: description: - list of values associated with input keys type: list elements: strings ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type import os diff --git a/lib/ansible/plugins/lookup/mongodb.py b/lib/ansible/plugins/lookup/mongodb.py index 6f410aeb53..9df48720cf 100644 --- a/lib/ansible/plugins/lookup/mongodb.py +++ b/lib/ansible/plugins/lookup/mongodb.py @@ -15,8 +15,12 @@ # # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . -''' -DOCUMENTATION: + +from __future__ import (absolute_import, division, print_function) +from ansible.module_utils.six import string_types, integer_types +__metaclass__ = type + +DOCUMENTATION = ''' author: 'Marcos Diez ' lookup: mongodb version_added: "2.3" @@ -65,7 +69,9 @@ DOCUMENTATION: - "Please check https://api.mongodb.org/python/current/api/pymongo/collection.html?highlight=find#pymongo.collection.Collection.find for more detais." requirements: - pymongo >= 2.4 -EXAMPLES: +''' + +EXAMPLES = ''' - hosts: all gather_facts: false vars: @@ -87,12 +93,8 @@ EXAMPLES: with_mongodb: "{{mongodb_parameters}}" ''' -from __future__ import (absolute_import, division, print_function) -from ansible.module_utils.six import string_types, integer_types import datetime -__metaclass__ = type - try: from pymongo import ASCENDING, DESCENDING from pymongo.errors import ConnectionFailure diff --git a/lib/ansible/plugins/strategy/debug.py b/lib/ansible/plugins/strategy/debug.py index 0b5a1ccc4e..6146c98cf8 100644 --- a/lib/ansible/plugins/strategy/debug.py +++ b/lib/ansible/plugins/strategy/debug.py @@ -12,8 +12,10 @@ # # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' strategy: debug short_description: Executes tasks in interactive debug session. description: @@ -22,9 +24,6 @@ DOCUMENTATION: author: Kishin Yagami ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import cmd import pprint import sys diff --git a/lib/ansible/plugins/strategy/free.py b/lib/ansible/plugins/strategy/free.py index 43e5c05ddd..c398c19cc4 100644 --- a/lib/ansible/plugins/strategy/free.py +++ b/lib/ansible/plugins/strategy/free.py @@ -14,8 +14,11 @@ # # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' strategy: free short_description: Executes tasks on each host independently description: @@ -25,9 +28,6 @@ DOCUMENTATION: version_added: "2.0" author: Ansible Core Team ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type import time diff --git a/lib/ansible/plugins/strategy/linear.py b/lib/ansible/plugins/strategy/linear.py index 05afae28ef..7ecc75b58f 100644 --- a/lib/ansible/plugins/strategy/linear.py +++ b/lib/ansible/plugins/strategy/linear.py @@ -14,8 +14,11 @@ # # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . -''' -DOCUMENTATION: +# Make coding more python3-ish +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' strategy: linear short_description: Executes tasks in a linear fashion description: @@ -27,9 +30,6 @@ DOCUMENTATION: - This was the default Ansible behaviour before 'strategy plugins' were introduced in 2.0. author: Ansible Core Team ''' -# Make coding more python3-ish -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type from ansible.errors import AnsibleError from ansible.executor.play_iterator import PlayIterator diff --git a/lib/ansible/plugins/vars/host_group_vars.py b/lib/ansible/plugins/vars/host_group_vars.py index bc4fd0a9dd..66c059b263 100644 --- a/lib/ansible/plugins/vars/host_group_vars.py +++ b/lib/ansible/plugins/vars/host_group_vars.py @@ -15,8 +15,10 @@ # You should have received a copy of the GNU General Public License # along with Ansible. If not, see . ############################################# -''' -DOCUMENTATION: +from __future__ import (absolute_import, division, print_function) +__metaclass__ = type + +DOCUMENTATION = ''' vars: host_group_vars version_added: "2.4" short_description: In charge of loading group_vars and host_vars @@ -41,9 +43,6 @@ DOCUMENTATION: type: list ''' -from __future__ import (absolute_import, division, print_function) -__metaclass__ = type - import os from ansible import constants as C from ansible.errors import AnsibleParserError