a3c40ef813
OBS-URL: https://build.opensuse.org/package/show/systemsmanagement:saltstack/salt?expand=0&rev=169
114 lines
4.2 KiB
Diff
114 lines
4.2 KiB
Diff
From 0c988e1db59a255b2f707c4e626cec21ff06d7a3 Mon Sep 17 00:00:00 2001
|
|
From: Jochen Breuer <jbreuer@suse.de>
|
|
Date: Thu, 9 Apr 2020 17:12:54 +0200
|
|
Subject: [PATCH] Fix for return value ret vs return in batch mode
|
|
|
|
The least intrusive fix for ret vs return in batch mode.
|
|
---
|
|
salt/cli/batch.py | 16 ++++++----
|
|
tests/unit/cli/test_batch.py | 62 ++++++++++++++++++++++++++++++++++++
|
|
2 files changed, 71 insertions(+), 7 deletions(-)
|
|
|
|
diff --git a/salt/cli/batch.py b/salt/cli/batch.py
|
|
index 10fc81a5f4..d5b8754ad7 100644
|
|
--- a/salt/cli/batch.py
|
|
+++ b/salt/cli/batch.py
|
|
@@ -234,14 +234,16 @@ class Batch(object):
|
|
if not self.quiet:
|
|
salt.utils.stringutils.print_cli('\nExecuting run on {0}\n'.format(sorted(next_)))
|
|
# create a new iterator for this batch of minions
|
|
+ return_value = self.opts.get("return", self.opts.get("ret", ""))
|
|
new_iter = self.local.cmd_iter_no_block(
|
|
- *args,
|
|
- raw=self.opts.get('raw', False),
|
|
- ret=self.opts.get('return', ''),
|
|
- show_jid=show_jid,
|
|
- verbose=show_verbose,
|
|
- gather_job_timeout=self.opts['gather_job_timeout'],
|
|
- **self.eauth)
|
|
+ *args,
|
|
+ raw=self.opts.get("raw", False),
|
|
+ ret=return_value,
|
|
+ show_jid=show_jid,
|
|
+ verbose=show_verbose,
|
|
+ gather_job_timeout=self.opts["gather_job_timeout"],
|
|
+ **self.eauth
|
|
+ )
|
|
# add it to our iterators and to the minion_tracker
|
|
iters.append(new_iter)
|
|
minion_tracker[new_iter] = {}
|
|
diff --git a/tests/unit/cli/test_batch.py b/tests/unit/cli/test_batch.py
|
|
index acabbe51f5..d7411e8039 100644
|
|
--- a/tests/unit/cli/test_batch.py
|
|
+++ b/tests/unit/cli/test_batch.py
|
|
@@ -72,3 +72,65 @@ class BatchTestCase(TestCase):
|
|
'''
|
|
ret = Batch.get_bnum(self.batch)
|
|
self.assertEqual(ret, None)
|
|
+
|
|
+ def test_return_value_in_run_for_ret(self):
|
|
+ """
|
|
+ cmd_iter_no_block should have been called with a return no matter if
|
|
+ the return value was in ret or return.
|
|
+ """
|
|
+ self.batch.opts = {
|
|
+ "batch": "100%",
|
|
+ "timeout": 5,
|
|
+ "fun": "test",
|
|
+ "arg": "foo",
|
|
+ "gather_job_timeout": 5,
|
|
+ "ret": "my_return",
|
|
+ }
|
|
+ self.batch.minions = ["foo", "bar", "baz"]
|
|
+ self.batch.local.cmd_iter_no_block = MagicMock(return_value=iter([]))
|
|
+ ret = Batch.run(self.batch)
|
|
+ # We need to fetch at least one object to trigger the relevant code path.
|
|
+ x = next(ret)
|
|
+ self.batch.local.cmd_iter_no_block.assert_called_with(
|
|
+ ["baz", "bar", "foo"],
|
|
+ "test",
|
|
+ "foo",
|
|
+ 5,
|
|
+ "list",
|
|
+ raw=False,
|
|
+ ret="my_return",
|
|
+ show_jid=False,
|
|
+ verbose=False,
|
|
+ gather_job_timeout=5,
|
|
+ )
|
|
+
|
|
+ def test_return_value_in_run_for_return(self):
|
|
+ """
|
|
+ cmd_iter_no_block should have been called with a return no matter if
|
|
+ the return value was in ret or return.
|
|
+ """
|
|
+ self.batch.opts = {
|
|
+ "batch": "100%",
|
|
+ "timeout": 5,
|
|
+ "fun": "test",
|
|
+ "arg": "foo",
|
|
+ "gather_job_timeout": 5,
|
|
+ "return": "my_return",
|
|
+ }
|
|
+ self.batch.minions = ["foo", "bar", "baz"]
|
|
+ self.batch.local.cmd_iter_no_block = MagicMock(return_value=iter([]))
|
|
+ ret = Batch.run(self.batch)
|
|
+ # We need to fetch at least one object to trigger the relevant code path.
|
|
+ x = next(ret)
|
|
+ self.batch.local.cmd_iter_no_block.assert_called_with(
|
|
+ ["baz", "bar", "foo"],
|
|
+ "test",
|
|
+ "foo",
|
|
+ 5,
|
|
+ "list",
|
|
+ raw=False,
|
|
+ ret="my_return",
|
|
+ show_jid=False,
|
|
+ verbose=False,
|
|
+ gather_job_timeout=5,
|
|
+ )
|
|
--
|
|
2.26.1
|
|
|
|
|