[Fix] Correctly pass subset parameter to cmd_subset (#58601)

* Fix subset parameter

* Support legacy parameter for now

* Add tests+changelog for cmd_subset fix

* Prevent passing 'sub' to cmd_cli
This commit is contained in:
Jarrod Funnell 2020-11-13 04:06:16 +11:00 committed by GitHub
parent e443061612
commit 3dc25dc4ca
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 29 additions and 3 deletions

1
changelog/58600.fixed Normal file
View file

@ -0,0 +1 @@
Fix --subset command line option, and support old 'sub' parameter name in cmd_subset for backwards compatibility

View file

@ -173,7 +173,7 @@ class SaltCMD(salt.utils.parsers.SaltCMDOptionParser):
try:
if self.options.subset:
cmd_func = self.local_client.cmd_subset
kwargs["sub"] = self.options.subset
kwargs["subset"] = self.options.subset
kwargs["cli"] = True
else:
cmd_func = self.local_client.cmd_cli

View file

@ -487,6 +487,10 @@ class LocalClient(object):
>>> SLC.cmd_subset('*', 'test.ping', subset=1)
{'jerry': True}
"""
# Support legacy parameter name:
subset = kwargs.pop("sub", subset)
minion_ret = self.cmd(tgt, "sys.list_functions", tgt_type=tgt_type, **kwargs)
minions = list(minion_ret)
random.shuffle(minions)

View file

@ -1,8 +1,6 @@
# -*- coding: utf-8 -*-
"""
:codeauthor: Mike Place <mp@saltstack.com>
"""
from __future__ import absolute_import, print_function, unicode_literals
import salt.utils.platform
from salt import client
@ -98,6 +96,29 @@ class LocalClientTestCase(TestCase, SaltClientTestCaseMixin):
):
with patch("salt.client.LocalClient.cmd_cli") as cmd_cli_mock:
self.client.cmd_subset("*", "first.func", subset=1, cli=True)
try:
cmd_cli_mock.assert_called_with(
["minion2"],
"first.func",
(),
progress=False,
kwarg=None,
tgt_type="list",
full_return=False,
ret="",
)
except AssertionError:
cmd_cli_mock.assert_called_with(
["minion1"],
"first.func",
(),
progress=False,
kwarg=None,
tgt_type="list",
full_return=False,
ret="",
)
self.client.cmd_subset("*", "first.func", sub=1, cli=True)
try:
cmd_cli_mock.assert_called_with(
["minion2"],