From 8e45fa9b635b3fcb17532d72e04b6da9b82bb1e4 Mon Sep 17 00:00:00 2001 From: James Cammarata Date: Wed, 30 Apr 2014 15:33:46 -0500 Subject: [PATCH] Moving display-related functions to new module in utils --- lib/ansible/utils/__init__.py | 49 ++++---------------- lib/ansible/utils/display_functions.py | 63 ++++++++++++++++++++++++++ 2 files changed, 71 insertions(+), 41 deletions(-) create mode 100644 lib/ansible/utils/display_functions.py diff --git a/lib/ansible/utils/__init__.py b/lib/ansible/utils/__init__.py index 435da481c48..55e1c7d5361 100644 --- a/lib/ansible/utils/__init__.py +++ b/lib/ansible/utils/__init__.py @@ -25,8 +25,9 @@ import optparse import operator from ansible import errors from ansible import __version__ -from ansible.utils.plugins import * from ansible.utils import template +from ansible.utils.display_functions import * +from ansible.utils.plugins import * from ansible.callbacks import display import ansible.constants as C import ast @@ -42,7 +43,6 @@ import warnings import traceback import getpass import sys -import textwrap import json #import vault @@ -50,10 +50,6 @@ from vault import VaultLib VERBOSITY=0 -# list of all deprecation messages to prevent duplicate display -deprecations = {} -warns = {} - MAX_FILE_SIZE_FOR_DIFF=1*1024*1024 try: @@ -75,7 +71,12 @@ except: KEYCZAR_AVAILABLE=False try: - from Crypto.pct_warnings import PowmInsecureWarning + try: + # some versions of pycrypto may not have this? + from Crypto.pct_warnings import PowmInsecureWarning + except ImportError: + PowmInsecureWarning = RuntimeWarning + with warnings.catch_warnings(record=True) as warning_handler: warnings.simplefilter("error", PowmInsecureWarning) try: @@ -1127,40 +1128,6 @@ def listify_lookup_plugin_terms(terms, basedir, inject): return terms -def deprecated(msg, version, removed=False): - ''' used to print out a deprecation message.''' - - if not removed and not C.DEPRECATION_WARNINGS: - return - - if not removed: - if version: - new_msg = "\n[DEPRECATION WARNING]: %s. This feature will be removed in version %s." % (msg, version) - else: - new_msg = "\n[DEPRECATION WARNING]: %s. This feature will be removed in a future release." % (msg) - new_msg = new_msg + " Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.\n\n" - else: - raise errors.AnsibleError("[DEPRECATED]: %s. Please update your playbooks." % msg) - - wrapped = textwrap.wrap(new_msg, 79) - new_msg = "\n".join(wrapped) + "\n" - - if new_msg not in deprecations: - display(new_msg, color='purple', stderr=True) - deprecations[new_msg] = 1 - -def warning(msg): - new_msg = "\n[WARNING]: %s" % msg - wrapped = textwrap.wrap(new_msg, 79) - new_msg = "\n".join(wrapped) + "\n" - if new_msg not in warns: - display(new_msg, color='bright purple', stderr=True) - warns[new_msg] = 1 - -def system_warning(msg): - if C.SYSTEM_WARNINGS: - warning(msg) - def combine_vars(a, b): if C.DEFAULT_HASH_BEHAVIOUR == "merge": diff --git a/lib/ansible/utils/display_functions.py b/lib/ansible/utils/display_functions.py new file mode 100644 index 00000000000..2233c816577 --- /dev/null +++ b/lib/ansible/utils/display_functions.py @@ -0,0 +1,63 @@ +# (c) 2014, 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 . + +import textwrap + +from ansible import constants as C +from ansible import errors +from ansible.callbacks import display + +__all__ = ['deprecated', 'warning', 'system_warning'] + +# list of all deprecation messages to prevent duplicate display +deprecations = {} +warns = {} + +def deprecated(msg, version, removed=False): + ''' used to print out a deprecation message.''' + + if not removed and not C.DEPRECATION_WARNINGS: + return + + if not removed: + if version: + new_msg = "\n[DEPRECATION WARNING]: %s. This feature will be removed in version %s." % (msg, version) + else: + new_msg = "\n[DEPRECATION WARNING]: %s. This feature will be removed in a future release." % (msg) + new_msg = new_msg + " Deprecation warnings can be disabled by setting deprecation_warnings=False in ansible.cfg.\n\n" + else: + raise errors.AnsibleError("[DEPRECATED]: %s. Please update your playbooks." % msg) + + wrapped = textwrap.wrap(new_msg, 79) + new_msg = "\n".join(wrapped) + "\n" + + if new_msg not in deprecations: + display(new_msg, color='purple', stderr=True) + deprecations[new_msg] = 1 + +def warning(msg): + new_msg = "\n[WARNING]: %s" % msg + wrapped = textwrap.wrap(new_msg, 79) + new_msg = "\n".join(wrapped) + "\n" + if new_msg not in warns: + display(new_msg, color='bright purple', stderr=True) + warns[new_msg] = 1 + +def system_warning(msg): + if C.SYSTEM_WARNINGS: + warning(msg) +