mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-10-04 23:44:00 -07:00
Save the command line arguments into a global context
* Once cli args are parsed, they're constant. So, save the parsed args into the global context for everyone else to use them from now on. * Port cli scripts to use the CLIARGS in the context * Refactor call to parse cli args into the run() method * Fix unittests for changes to the internals of CLI arg parsing * Port callback plugins to use context.CLIARGS * Got rid of the private self._options attribute * Use context.CLIARGS in the individual callback plugins instead. * Also output positional arguments in default and unixy plugins * Code has been simplified since we're now dealing with a dict rather than Optparse.Value
This commit is contained in:
parent
c18da65089
commit
afdbb0d9d5
36 changed files with 1033 additions and 868 deletions
|
@ -46,11 +46,6 @@ else:
|
|||
|
||||
global_display = Display()
|
||||
|
||||
try:
|
||||
from __main__ import cli
|
||||
except ImportError:
|
||||
# using API w/o cli
|
||||
cli = False
|
||||
|
||||
__all__ = ["CallbackBase"]
|
||||
|
||||
|
@ -72,11 +67,6 @@ class CallbackBase(AnsiblePlugin):
|
|||
else:
|
||||
self._display = global_display
|
||||
|
||||
if cli:
|
||||
self._options = cli.options
|
||||
else:
|
||||
self._options = None
|
||||
|
||||
if self._display.verbosity >= 4:
|
||||
name = getattr(self, 'CALLBACK_NAME', 'unnamed')
|
||||
ctype = getattr(self, 'CALLBACK_TYPE', 'old')
|
||||
|
|
|
@ -19,6 +19,7 @@ DOCUMENTATION = '''
|
|||
'''
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible import context
|
||||
from ansible.playbook.task_include import TaskInclude
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
from ansible.utils.color import colorize, hostcolor
|
||||
|
@ -370,15 +371,16 @@ class CallbackModule(CallbackBase):
|
|||
from os.path import basename
|
||||
self._display.banner("PLAYBOOK: %s" % basename(playbook._file_name))
|
||||
|
||||
# show CLI arguments
|
||||
if self._display.verbosity > 3:
|
||||
# show CLI options
|
||||
if self._options is not None:
|
||||
for option in dir(self._options):
|
||||
if option.startswith('_') or option in ['read_file', 'ensure_value', 'read_module']:
|
||||
continue
|
||||
val = getattr(self._options, option)
|
||||
if val and self._display.verbosity > 3:
|
||||
self._display.display('%s: %s' % (option, val), color=C.COLOR_VERBOSE, screen_only=True)
|
||||
if context.CLIARGS.get('args'):
|
||||
self._display.display('Positional arguments: %s' % ' '.join(context.CLIARGS['args']),
|
||||
color=C.COLOR_VERBOSE, screen_only=True)
|
||||
|
||||
for argument in (a for a in context.CLIARGS if a != 'args'):
|
||||
val = context.CLIARGS[argument]
|
||||
if val:
|
||||
self._display.display('%s: %s' % (argument, val), color=C.COLOR_VERBOSE, screen_only=True)
|
||||
|
||||
def v2_runner_retry(self, result):
|
||||
task_name = result.task_name or result._task
|
||||
|
|
|
@ -58,11 +58,7 @@ import json
|
|||
import os
|
||||
import uuid
|
||||
|
||||
try:
|
||||
from __main__ import cli
|
||||
except ImportError:
|
||||
cli = None
|
||||
|
||||
from ansible import context
|
||||
from ansible.module_utils._text import to_text
|
||||
from ansible.module_utils.urls import open_url
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
|
@ -87,8 +83,6 @@ class CallbackModule(CallbackBase):
|
|||
|
||||
super(CallbackModule, self).__init__(display=display)
|
||||
|
||||
self._options = cli.options
|
||||
|
||||
if not HAS_PRETTYTABLE:
|
||||
self.disabled = True
|
||||
self._display.warning('The `prettytable` python module is not '
|
||||
|
@ -145,13 +139,14 @@ class CallbackModule(CallbackBase):
|
|||
title = [
|
||||
'*Playbook initiated* (_%s_)' % self.guid
|
||||
]
|
||||
|
||||
invocation_items = []
|
||||
if self._options and self.show_invocation:
|
||||
tags = self._options.tags
|
||||
skip_tags = self._options.skip_tags
|
||||
extra_vars = self._options.extra_vars
|
||||
subset = self._options.subset
|
||||
inventory = [os.path.abspath(i) for i in self._options.inventory]
|
||||
if context.CLIARGS and self.show_invocation:
|
||||
tags = context.CLIARGS['tags']
|
||||
skip_tags = context.CLIARGS['skip_tags']
|
||||
extra_vars = context.CLIARGS['extra_vars']
|
||||
subset = context.CLIARGS['subset']
|
||||
inventory = [os.path.abspath(i) for i in context.CLIARGS['inventory']]
|
||||
|
||||
invocation_items.append('Inventory: %s' % ', '.join(inventory))
|
||||
if tags and tags != ['all']:
|
||||
|
@ -164,7 +159,7 @@ class CallbackModule(CallbackBase):
|
|||
invocation_items.append('Extra Vars: %s' %
|
||||
' '.join(extra_vars))
|
||||
|
||||
title.append('by *%s*' % self._options.remote_user)
|
||||
title.append('by *%s*' % context.CLIARGS['remote_user'])
|
||||
|
||||
title.append('\n\n*%s*' % self.playbook_name)
|
||||
msg_items = [' '.join(title)]
|
||||
|
|
|
@ -23,6 +23,7 @@ DOCUMENTATION = '''
|
|||
from os.path import basename
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible import context
|
||||
from ansible.module_utils._text import to_text
|
||||
from ansible.plugins.callback import CallbackBase
|
||||
from ansible.utils.color import colorize, hostcolor
|
||||
|
@ -200,14 +201,16 @@ class CallbackModule(CallbackBase):
|
|||
# TODO display whether this run is happening in check mode
|
||||
self._display.display("Executing playbook %s" % basename(playbook._file_name))
|
||||
|
||||
# show CLI arguments
|
||||
if self._display.verbosity > 3:
|
||||
if self._options is not None:
|
||||
for option in dir(self._options):
|
||||
if option.startswith('_') or option in ['read_file', 'ensure_value', 'read_module']:
|
||||
continue
|
||||
val = getattr(self._options, option)
|
||||
if val:
|
||||
self._display.vvvv('%s: %s' % (option, val))
|
||||
if context.CLIARGS.get('args'):
|
||||
self._display.display('Positional arguments: %s' % ' '.join(context.CLIARGS['args']),
|
||||
color=C.COLOR_VERBOSE, screen_only=True)
|
||||
|
||||
for argument in (a for a in context.CLIARGS if a != 'args'):
|
||||
val = context.CLIARGS[argument]
|
||||
if val:
|
||||
self._display.vvvv('%s: %s' % (argument, val))
|
||||
|
||||
def v2_runner_retry(self, result):
|
||||
msg = " Retrying... (%d of %d)" % (result._result['attempts'], result._result['retries'])
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue