raw should not use default executable (#16085)
also removed unused cruft in script
This commit is contained in:
parent
828b73dd2d
commit
a529a60478
4 changed files with 15 additions and 14 deletions
|
@ -29,11 +29,9 @@ import string
|
|||
from ansible.compat.six import iteritems, string_types
|
||||
from ansible import constants as C
|
||||
from ansible.errors import AnsibleError
|
||||
from ansible.playbook.attribute import Attribute, FieldAttribute
|
||||
from ansible.playbook.attribute import FieldAttribute
|
||||
from ansible.playbook.base import Base
|
||||
from ansible.template import Templar
|
||||
from ansible.utils.boolean import boolean
|
||||
from ansible.utils.unicode import to_unicode
|
||||
|
||||
__all__ = ['PlayContext']
|
||||
|
||||
|
@ -447,16 +445,21 @@ class PlayContext(Base):
|
|||
success_key = None
|
||||
self.prompt = None
|
||||
|
||||
if self.become:
|
||||
|
||||
if executable is None:
|
||||
executable = self.executable
|
||||
|
||||
if self.become:
|
||||
|
||||
becomecmd = None
|
||||
randbits = ''.join(random.choice(string.ascii_lowercase) for x in range(32))
|
||||
success_key = 'BECOME-SUCCESS-%s' % randbits
|
||||
success_cmd = pipes.quote('echo %s; %s' % (success_key, cmd))
|
||||
|
||||
if executable:
|
||||
command = '%s -c %s' % (executable, success_cmd)
|
||||
else:
|
||||
command = success_cmd
|
||||
|
||||
# set executable to use for the privilege escalation method, with various overrides
|
||||
exe = self.become_exe or \
|
||||
getattr(self, '%s_exe' % self.become_method, None) or \
|
||||
|
@ -485,9 +488,9 @@ class PlayContext(Base):
|
|||
# force quick error if password is required but not supplied, should prevent sudo hangs.
|
||||
if self.become_pass:
|
||||
prompt = '[sudo via ansible, key=%s] password: ' % randbits
|
||||
becomecmd = '%s %s -p "%s" -u %s %s -c %s' % (exe, flags.replace('-n',''), prompt, self.become_user, executable, success_cmd)
|
||||
becomecmd = '%s %s -p "%s" -u %s %s' % (exe, flags.replace('-n',''), prompt, self.become_user, command)
|
||||
else:
|
||||
becomecmd = '%s %s -u %s %s -c %s' % (exe, flags, self.become_user, executable, success_cmd)
|
||||
becomecmd = '%s %s -u %s %s' % (exe, flags, self.become_user, command)
|
||||
|
||||
|
||||
elif self.become_method == 'su':
|
||||
|
@ -498,7 +501,7 @@ class PlayContext(Base):
|
|||
return bool(SU_PROMPT_LOCALIZATIONS_RE.match(data))
|
||||
prompt = detect_su_prompt
|
||||
|
||||
becomecmd = '%s %s %s -c %s' % (exe, flags, self.become_user, pipes.quote('%s -c %s' % (executable, success_cmd)))
|
||||
becomecmd = '%s %s %s -c %s' % (exe, flags, self.become_user, pipes.quote(command))
|
||||
|
||||
elif self.become_method == 'pbrun':
|
||||
|
||||
|
@ -534,7 +537,7 @@ class PlayContext(Base):
|
|||
|
||||
exe = self.become_exe or 'dzdo'
|
||||
|
||||
becomecmd = '%s -u %s %s -c %s' % (exe, self.become_user, executable, success_cmd)
|
||||
becomecmd = '%s -u %s %s' % (exe, self.become_user, command)
|
||||
|
||||
else:
|
||||
raise AnsibleError("Privilege escalation method not found: %s" % self.become_method)
|
||||
|
|
|
@ -37,7 +37,7 @@ class ActionModule(ActionBase):
|
|||
result['skipped'] = True
|
||||
return result
|
||||
|
||||
executable = self._task.args.get('executable')
|
||||
executable = self._task.args.get('executable', False)
|
||||
result.update(self._low_level_execute_command(self._task.args.get('_raw_params'), executable=executable))
|
||||
|
||||
return result
|
||||
|
|
|
@ -19,7 +19,6 @@ __metaclass__ = type
|
|||
|
||||
import os
|
||||
|
||||
from ansible import constants as C
|
||||
from ansible.plugins.action import ActionBase
|
||||
|
||||
|
||||
|
@ -79,7 +78,6 @@ class ActionModule(ActionBase):
|
|||
tmp_src = self._connection._shell.join_path(tmp, os.path.basename(source))
|
||||
self._transfer_file(source, tmp_src)
|
||||
|
||||
sudoable = True
|
||||
# set file permissions, more permissive when the copy is done as a different user
|
||||
self._fixup_perms(tmp, remote_user, execute=True, recursive=True)
|
||||
|
||||
|
|
|
@ -54,7 +54,7 @@ class TestCopyResultExclude(unittest.TestCase):
|
|||
self.mock_am.display = Mock()
|
||||
|
||||
self.mock_am.run()
|
||||
self.mock_am._low_level_execute_command.assert_called_with('Args1', executable=None)
|
||||
self.mock_am._low_level_execute_command.assert_called_with('Args1', executable=False)
|
||||
|
||||
def test_raw_check_mode_is_True(self):
|
||||
|
||||
|
|
Loading…
Reference in a new issue