|
|
|
@ -181,53 +181,60 @@ def merge_hash(x, y, recursive=True, list_merge='replace'):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def load_extra_vars(loader):
|
|
|
|
|
extra_vars = {}
|
|
|
|
|
for extra_vars_opt in context.CLIARGS.get('extra_vars', tuple()):
|
|
|
|
|
data = None
|
|
|
|
|
extra_vars_opt = to_text(extra_vars_opt, errors='surrogate_or_strict')
|
|
|
|
|
if extra_vars_opt is None or not extra_vars_opt:
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
if extra_vars_opt.startswith(u"@"):
|
|
|
|
|
# Argument is a YAML file (JSON is a subset of YAML)
|
|
|
|
|
data = loader.load_from_file(extra_vars_opt[1:])
|
|
|
|
|
elif extra_vars_opt[0] in [u'/', u'.']:
|
|
|
|
|
raise AnsibleOptionsError("Please prepend extra_vars filename '%s' with '@'" % extra_vars_opt)
|
|
|
|
|
elif extra_vars_opt[0] in [u'[', u'{']:
|
|
|
|
|
# Arguments as YAML
|
|
|
|
|
data = loader.load(extra_vars_opt)
|
|
|
|
|
else:
|
|
|
|
|
# Arguments as Key-value
|
|
|
|
|
data = parse_kv(extra_vars_opt)
|
|
|
|
|
if not getattr(load_extra_vars, 'extra_vars', None):
|
|
|
|
|
extra_vars = {}
|
|
|
|
|
for extra_vars_opt in context.CLIARGS.get('extra_vars', tuple()):
|
|
|
|
|
data = None
|
|
|
|
|
extra_vars_opt = to_text(extra_vars_opt, errors='surrogate_or_strict')
|
|
|
|
|
if extra_vars_opt is None or not extra_vars_opt:
|
|
|
|
|
continue
|
|
|
|
|
|
|
|
|
|
if extra_vars_opt.startswith(u"@"):
|
|
|
|
|
# Argument is a YAML file (JSON is a subset of YAML)
|
|
|
|
|
data = loader.load_from_file(extra_vars_opt[1:])
|
|
|
|
|
elif extra_vars_opt[0] in [u'/', u'.']:
|
|
|
|
|
raise AnsibleOptionsError("Please prepend extra_vars filename '%s' with '@'" % extra_vars_opt)
|
|
|
|
|
elif extra_vars_opt[0] in [u'[', u'{']:
|
|
|
|
|
# Arguments as YAML
|
|
|
|
|
data = loader.load(extra_vars_opt)
|
|
|
|
|
else:
|
|
|
|
|
# Arguments as Key-value
|
|
|
|
|
data = parse_kv(extra_vars_opt)
|
|
|
|
|
|
|
|
|
|
if isinstance(data, MutableMapping):
|
|
|
|
|
extra_vars = combine_vars(extra_vars, data)
|
|
|
|
|
else:
|
|
|
|
|
raise AnsibleOptionsError("Invalid extra vars data supplied. '%s' could not be made into a dictionary" % extra_vars_opt)
|
|
|
|
|
|
|
|
|
|
if isinstance(data, MutableMapping):
|
|
|
|
|
extra_vars = combine_vars(extra_vars, data)
|
|
|
|
|
else:
|
|
|
|
|
raise AnsibleOptionsError("Invalid extra vars data supplied. '%s' could not be made into a dictionary" % extra_vars_opt)
|
|
|
|
|
setattr(load_extra_vars, 'extra_vars', extra_vars)
|
|
|
|
|
|
|
|
|
|
return extra_vars
|
|
|
|
|
return load_extra_vars.extra_vars
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def load_options_vars(version):
|
|
|
|
|
|
|
|
|
|
if version is None:
|
|
|
|
|
version = 'Unknown'
|
|
|
|
|
options_vars = {'ansible_version': version}
|
|
|
|
|
attrs = {'check': 'check_mode',
|
|
|
|
|
'diff': 'diff_mode',
|
|
|
|
|
'forks': 'forks',
|
|
|
|
|
'inventory': 'inventory_sources',
|
|
|
|
|
'skip_tags': 'skip_tags',
|
|
|
|
|
'subset': 'limit',
|
|
|
|
|
'tags': 'run_tags',
|
|
|
|
|
'verbosity': 'verbosity'}
|
|
|
|
|
|
|
|
|
|
for attr, alias in attrs.items():
|
|
|
|
|
opt = context.CLIARGS.get(attr)
|
|
|
|
|
if opt is not None:
|
|
|
|
|
options_vars['ansible_%s' % alias] = opt
|
|
|
|
|
|
|
|
|
|
return options_vars
|
|
|
|
|
if not getattr(load_options_vars, 'options_vars', None):
|
|
|
|
|
if version is None:
|
|
|
|
|
version = 'Unknown'
|
|
|
|
|
options_vars = {'ansible_version': version}
|
|
|
|
|
attrs = {'check': 'check_mode',
|
|
|
|
|
'diff': 'diff_mode',
|
|
|
|
|
'forks': 'forks',
|
|
|
|
|
'inventory': 'inventory_sources',
|
|
|
|
|
'skip_tags': 'skip_tags',
|
|
|
|
|
'subset': 'limit',
|
|
|
|
|
'tags': 'run_tags',
|
|
|
|
|
'verbosity': 'verbosity'}
|
|
|
|
|
|
|
|
|
|
for attr, alias in attrs.items():
|
|
|
|
|
opt = context.CLIARGS.get(attr)
|
|
|
|
|
if opt is not None:
|
|
|
|
|
options_vars['ansible_%s' % alias] = opt
|
|
|
|
|
|
|
|
|
|
setattr(load_options_vars, 'options_vars', options_vars)
|
|
|
|
|
|
|
|
|
|
return load_options_vars.options_vars
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _isidentifier_PY3(ident):
|
|
|
|
|