Port #52709 to master

LocalClient: don't parse input twice and test fix.

Related to #49886 where passing input args and kwargs through
parse_input was inroduced.
This commit is contained in:
Dmitry Kuzmenko 2020-04-23 01:44:41 +03:00 committed by Daniel Wozniak
parent b966cda82d
commit f24669d608
2 changed files with 62 additions and 28 deletions

View file

@ -450,9 +450,8 @@ class LocalClient(object):
>>> local.cmd_async('*', 'test.sleep', [300])
'20131219215921857715'
"""
arg = salt.utils.args.parse_input(arg, kwargs=kwarg)
pub_data = self.run_job(
tgt, fun, arg, tgt_type, ret, jid=jid, listen=False, **kwargs
tgt, fun, arg, tgt_type, ret, jid=jid, kwarg=kwarg, listen=False, **kwargs
)
try:
return pub_data["jid"]
@ -704,12 +703,20 @@ class LocalClient(object):
minion ID. A compound command will return a sub-dictionary keyed by
function name.
"""
arg = salt.utils.args.parse_input(arg, kwargs=kwarg)
was_listening = self.event.cpub
try:
pub_data = self.run_job(
tgt, fun, arg, tgt_type, ret, timeout, jid, listen=True, **kwargs
tgt,
fun,
arg,
tgt_type,
ret,
timeout,
jid,
kwarg=kwarg,
listen=True,
**kwargs
)
if not pub_data:
@ -759,12 +766,19 @@ class LocalClient(object):
:param verbose: Print extra information about the running command
:returns: A generator
"""
arg = salt.utils.args.parse_input(arg, kwargs=kwarg)
was_listening = self.event.cpub
try:
self.pub_data = self.run_job(
tgt, fun, arg, tgt_type, ret, timeout, listen=True, **kwargs
tgt,
fun,
arg,
tgt_type,
ret,
timeout,
kwarg=kwarg,
listen=True,
**kwargs
)
if not self.pub_data:
@ -833,12 +847,19 @@ class LocalClient(object):
{'dave': {'ret': True}}
{'stewart': {'ret': True}}
"""
arg = salt.utils.args.parse_input(arg, kwargs=kwarg)
was_listening = self.event.cpub
try:
pub_data = self.run_job(
tgt, fun, arg, tgt_type, ret, timeout, listen=True, **kwargs
tgt,
fun,
arg,
tgt_type,
ret,
timeout,
kwarg=kwarg,
listen=True,
**kwargs
)
if not pub_data:
@ -897,12 +918,19 @@ class LocalClient(object):
None
{'stewart': {'ret': True}}
"""
arg = salt.utils.args.parse_input(arg, kwargs=kwarg)
was_listening = self.event.cpub
try:
pub_data = self.run_job(
tgt, fun, arg, tgt_type, ret, timeout, listen=True, **kwargs
tgt,
fun,
arg,
tgt_type,
ret,
timeout,
kwarg=kwarg,
listen=True,
**kwargs
)
if not pub_data:
@ -942,12 +970,19 @@ class LocalClient(object):
"""
Execute a salt command and return
"""
arg = salt.utils.args.parse_input(arg, kwargs=kwarg)
was_listening = self.event.cpub
try:
pub_data = self.run_job(
tgt, fun, arg, tgt_type, ret, timeout, listen=True, **kwargs
tgt,
fun,
arg,
tgt_type,
ret,
timeout,
kwarg=kwarg,
listen=True,
**kwargs
)
if not pub_data:

View file

@ -5,7 +5,6 @@ from __future__ import absolute_import, print_function, unicode_literals
import os
import sys
import tempfile
import textwrap
from contextlib import contextmanager
import pytest
@ -285,11 +284,11 @@ class CMDModuleTest(ModuleCase):
"""
cmd.exec_code
"""
code = textwrap.dedent(
"""\
import sys
sys.stdout.write('cheese')"""
)
# `code` is a multiline YAML text. Formatting it as a YAML block scalar.
code = """|
import sys
sys.stdout.write('cheese')
"""
self.assertEqual(
self.run_function(
"cmd.exec_code", [AVAILABLE_PYTHON_EXECUTABLE, code]
@ -302,11 +301,11 @@ class CMDModuleTest(ModuleCase):
"""
cmd.exec_code
"""
code = textwrap.dedent(
"""\
import sys
sys.stdout.write(sys.argv[1])"""
)
# `code` is a multiline YAML text. Formatting it as a YAML block scalar.
code = """|
import sys
sys.stdout.write(sys.argv[1])
"""
arg = "cheese"
self.assertEqual(
self.run_function(
@ -320,11 +319,11 @@ class CMDModuleTest(ModuleCase):
"""
cmd.exec_code
"""
code = textwrap.dedent(
"""\
import sys
sys.stdout.write(sys.argv[1])"""
)
# `code` is a multiline YAML text. Formatting it as a YAML block scalar.
code = """|
import sys
sys.stdout.write(sys.argv[1])
"""
arg = "cheese"
self.assertEqual(
self.run_function(