issue #477: fix sudo_args selection.

issue510
David Wilson 6 years ago
parent 9aff8edf50
commit e7fe95af88

@ -89,6 +89,16 @@ def optional_secret(value):
return mitogen.core.Secret(value) return mitogen.core.Secret(value)
def first_true(it, default=None):
"""
Return the first truthy element from `it`.
"""
for elem in it:
if elem:
return elem
return default
class Spec(with_metaclass(abc.ABCMeta, object)): class Spec(with_metaclass(abc.ABCMeta, object)):
""" """
A source for variables that comprise a connection configuration. A source for variables that comprise a connection configuration.
@ -350,15 +360,15 @@ class PlayContextSpec(Spec):
def sudo_args(self): def sudo_args(self):
return [ return [
mitogen.core.to_text(term) mitogen.core.to_text(term)
for s in ( for term in ansible.utils.shlex.shlex_split(
self._play_context.sudo_flags, first_true((
self._play_context.become_flags, self._play_context.become_flags,
self._play_context.sudo_flags,
# Ansible 2.3. # Ansible 2.3.
getattr(C, 'DEFAULT_BECOME_FLAGS', ''), getattr(C, 'DEFAULT_BECOME_FLAGS', ''),
getattr(C, 'DEFAULT_SUDO_FLAGS', ''), getattr(C, 'DEFAULT_SUDO_FLAGS', '')
), default='')
) )
for term in ansible.utils.shlex.shlex_split(s or '')
] ]
def mitogen_via(self): def mitogen_via(self):

Loading…
Cancel
Save