mirror of
https://github.com/ansible-collections/community.general.git
synced 2025-07-22 12:50:22 -07:00
added unsafe toggle to vars_prompt (#49219)
* added unsafe toggle to vars_prompt fixes #47534
This commit is contained in:
parent
4a0fceaa3b
commit
4ac0c23db6
7 changed files with 51 additions and 10 deletions
|
@ -111,6 +111,7 @@ class PlaybookExecutor:
|
|||
templar = Templar(loader=self._loader, variables=all_vars)
|
||||
setattr(play, 'vars_prompt', templar.template(play.vars_prompt))
|
||||
|
||||
# FIXME: this should be a play 'sub object' like loop_control
|
||||
if play.vars_prompt:
|
||||
for var in play.vars_prompt:
|
||||
vname = var['name']
|
||||
|
@ -121,11 +122,13 @@ class PlaybookExecutor:
|
|||
encrypt = var.get("encrypt", None)
|
||||
salt_size = var.get("salt_size", None)
|
||||
salt = var.get("salt", None)
|
||||
unsafe = var.get("unsafe", None)
|
||||
|
||||
if vname not in self._variable_manager.extra_vars:
|
||||
if self._tqm:
|
||||
self._tqm.send_callback('v2_playbook_on_vars_prompt', vname, private, prompt, encrypt, confirm, salt_size, salt, default)
|
||||
play.vars[vname] = display.do_var_prompt(vname, private, prompt, encrypt, confirm, salt_size, salt, default)
|
||||
self._tqm.send_callback('v2_playbook_on_vars_prompt', vname, private, prompt, encrypt, confirm, salt_size, salt,
|
||||
default, unsafe)
|
||||
play.vars[vname] = display.do_var_prompt(vname, private, prompt, encrypt, confirm, salt_size, salt, default, unsafe)
|
||||
else: # we are either in --list-<option> or syntax check
|
||||
play.vars[vname] = default
|
||||
|
||||
|
|
|
@ -303,7 +303,7 @@ class CallbackBase(AnsiblePlugin):
|
|||
def playbook_on_task_start(self, name, is_conditional):
|
||||
pass
|
||||
|
||||
def playbook_on_vars_prompt(self, varname, private=True, prompt=None, encrypt=None, confirm=False, salt_size=None, salt=None, default=None):
|
||||
def playbook_on_vars_prompt(self, varname, private=True, prompt=None, encrypt=None, confirm=False, salt_size=None, salt=None, default=None, unsafe=None):
|
||||
pass
|
||||
|
||||
def playbook_on_setup(self):
|
||||
|
@ -387,8 +387,8 @@ class CallbackBase(AnsiblePlugin):
|
|||
def v2_playbook_on_handler_task_start(self, task):
|
||||
pass # no v1 correspondence
|
||||
|
||||
def v2_playbook_on_vars_prompt(self, varname, private=True, prompt=None, encrypt=None, confirm=False, salt_size=None, salt=None, default=None):
|
||||
self.playbook_on_vars_prompt(varname, private, prompt, encrypt, confirm, salt_size, salt, default)
|
||||
def v2_playbook_on_vars_prompt(self, varname, private=True, prompt=None, encrypt=None, confirm=False, salt_size=None, salt=None, default=None, unsafe=None):
|
||||
self.playbook_on_vars_prompt(varname, private, prompt, encrypt, confirm, salt_size, salt, default, unsafe)
|
||||
|
||||
# FIXME: not called
|
||||
def v2_playbook_on_import_for_host(self, result, imported_file):
|
||||
|
|
|
@ -39,7 +39,7 @@ from ansible.module_utils._text import to_bytes, to_text
|
|||
from ansible.module_utils.six import with_metaclass
|
||||
from ansible.utils.color import stringc
|
||||
from ansible.utils.singleton import Singleton
|
||||
|
||||
from ansible.utils.unsafe_proxy import wrap_var
|
||||
|
||||
try:
|
||||
# Python 2
|
||||
|
@ -305,7 +305,7 @@ class Display(with_metaclass(Singleton, object)):
|
|||
else:
|
||||
return input(prompt_string)
|
||||
|
||||
def do_var_prompt(self, varname, private=True, prompt=None, encrypt=None, confirm=False, salt_size=None, salt=None, default=None):
|
||||
def do_var_prompt(self, varname, private=True, prompt=None, encrypt=None, confirm=False, salt_size=None, salt=None, default=None, unsafe=None):
|
||||
|
||||
result = None
|
||||
if sys.__stdin__.isatty():
|
||||
|
@ -343,6 +343,9 @@ class Display(with_metaclass(Singleton, object)):
|
|||
|
||||
# handle utf-8 chars
|
||||
result = to_text(result, errors='surrogate_or_strict')
|
||||
|
||||
if unsafe:
|
||||
result = wrap_var(result)
|
||||
return result
|
||||
|
||||
@staticmethod
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue