mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-24 05:40:23 -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
|
@ -29,6 +29,7 @@ import string
|
|||
import sys
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible import context
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.module_utils.six import iteritems
|
||||
from ansible.module_utils.six.moves import shlex_quote
|
||||
|
@ -186,7 +187,7 @@ class PlayContext(Base):
|
|||
_gather_timeout = FieldAttribute(isa='string', default=C.DEFAULT_GATHER_TIMEOUT)
|
||||
_fact_path = FieldAttribute(isa='string', default=C.DEFAULT_FACT_PATH)
|
||||
|
||||
def __init__(self, play=None, options=None, passwords=None, connection_lockfd=None):
|
||||
def __init__(self, play=None, passwords=None, connection_lockfd=None):
|
||||
|
||||
super(PlayContext, self).__init__()
|
||||
|
||||
|
@ -203,8 +204,8 @@ class PlayContext(Base):
|
|||
self.connection_lockfd = connection_lockfd
|
||||
|
||||
# set options before play to allow play to override them
|
||||
if options:
|
||||
self.set_options(options)
|
||||
if context.CLIARGS:
|
||||
self.set_options()
|
||||
|
||||
if play:
|
||||
self.set_play(play)
|
||||
|
@ -250,7 +251,7 @@ class PlayContext(Base):
|
|||
# for flag in ('ssh_common_args', 'docker_extra_args', 'sftp_extra_args', 'scp_extra_args', 'ssh_extra_args'):
|
||||
# setattr(self, flag, getattr(options, flag, ''))
|
||||
|
||||
def set_options(self, options):
|
||||
def set_options(self):
|
||||
'''
|
||||
Configures this connection information instance with data from
|
||||
options specified by the user on the command line. These have a
|
||||
|
@ -258,33 +259,33 @@ class PlayContext(Base):
|
|||
'''
|
||||
|
||||
# privilege escalation
|
||||
self.become = options.become
|
||||
self.become_method = options.become_method
|
||||
self.become_user = options.become_user
|
||||
self.become = context.CLIARGS['become']
|
||||
self.become_method = context.CLIARGS['become_method']
|
||||
self.become_user = context.CLIARGS['become_user']
|
||||
|
||||
self.check_mode = boolean(options.check, strict=False)
|
||||
self.diff = boolean(options.diff, strict=False)
|
||||
self.check_mode = boolean(context.CLIARGS['check'], strict=False)
|
||||
self.diff = boolean(context.CLIARGS['diff'], strict=False)
|
||||
|
||||
# general flags (should we move out?)
|
||||
# should only be 'non plugin' flags
|
||||
for flag in OPTION_FLAGS:
|
||||
attribute = getattr(options, flag, False)
|
||||
attribute = context.CLIARGS.get(flag, False)
|
||||
if attribute:
|
||||
setattr(self, flag, attribute)
|
||||
|
||||
if hasattr(options, 'timeout') and options.timeout:
|
||||
self.timeout = int(options.timeout)
|
||||
if context.CLIARGS.get('timeout', False):
|
||||
self.timeout = context.CLIARGS['timeout']
|
||||
|
||||
# get the tag info from options. We check to see if the options have
|
||||
# the attribute, as it is not always added via the CLI
|
||||
if hasattr(options, 'tags'):
|
||||
self.only_tags.update(options.tags)
|
||||
if context.CLIARGS.get('tags', False):
|
||||
self.only_tags.update(context.CLIARGS['tags'])
|
||||
|
||||
if len(self.only_tags) == 0:
|
||||
self.only_tags = set(['all'])
|
||||
|
||||
if hasattr(options, 'skip_tags'):
|
||||
self.skip_tags.update(options.skip_tags)
|
||||
if context.CLIARGS.get('skip_tags', False):
|
||||
self.skip_tags.update(context.CLIARGS['skip_tags'])
|
||||
|
||||
def set_task_and_variable_override(self, task, variables, templar):
|
||||
'''
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue