From 661690857726de9a63abc3c9503f6bcae52cb975 Mon Sep 17 00:00:00 2001 From: Dimitri Savineau Date: Wed, 13 Jan 2021 21:11:39 -0500 Subject: [PATCH] module_utils: don't add newline to the data When executing a command via the run_command method and passing some data with stdin then the default behavior is to add append a newline. This breaks the value of password used by our modules. Signed-off-by: Dimitri Savineau --- module_utils/ca_common.py | 5 ++++- tests/module_utils/test_ca_common.py | 16 +++++++++++++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/module_utils/ca_common.py b/module_utils/ca_common.py index 0a70a661c..8c75c4cec 100644 --- a/module_utils/ca_common.py +++ b/module_utils/ca_common.py @@ -76,7 +76,10 @@ def exec_command(module, cmd, stdin=None): Execute command(s) ''' - rc, out, err = module.run_command(cmd, data=stdin) + binary_data = False + if stdin: + binary_data = True + rc, out, err = module.run_command(cmd, data=stdin, binary_data=binary_data) return rc, cmd, out, err diff --git a/tests/module_utils/test_ca_common.py b/tests/module_utils/test_ca_common.py index 23c850857..2d0ea5ccf 100644 --- a/tests/module_utils/test_ca_common.py +++ b/tests/module_utils/test_ca_common.py @@ -1,4 +1,4 @@ -from mock.mock import patch +from mock.mock import patch, MagicMock import os import ca_common import pytest @@ -128,3 +128,17 @@ class TestCommon(object): ]) result = ca_common.generate_ceph_cmd(sub_cmd, args, user='client.foo', container_image=image) assert result == expected_cmd + + @pytest.mark.parametrize('stdin', [None, 'foo']) + def test_exec_command(self, stdin): + fake_module = MagicMock() + rc = 0 + stderr = '' + stdout = 'ceph version 1.2.3' + fake_module.run_command.return_value = 0, stdout, stderr + expected_cmd = [self.fake_binary, '--version'] + _rc, _cmd, _out, _err = ca_common.exec_command(fake_module, expected_cmd, stdin=stdin) + assert _rc == rc + assert _cmd == expected_cmd + assert _err == stderr + assert _out == stdout -- 2.39.5