From 2e5005b822b1dab3d074361f46607af3bd696b71 Mon Sep 17 00:00:00 2001
From: Ivan Devat <idevat@redhat.com>
Date: Mon, 6 Aug 2018 08:43:47 +0200
Subject: [PATCH] squash bz1475318 RFE: Validate node's watchdog dev
9d95b73a1b22 do not connect stdin of subprocess to pcs's stdin
7607976d478e fix tests
---
pcs/lib/external.py | 10 +++++++++-
pcs/test/test_lib_external.py | 8 ++++----
pcs/utils.py | 8 +++++++-
3 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/pcs/lib/external.py b/pcs/lib/external.py
index 5507543f..fe17a864 100644
--- a/pcs/lib/external.py
+++ b/pcs/lib/external.py
@@ -25,6 +25,12 @@ try:
except ImportError:
# python3
from urllib.parse import urlencode as urllib_urlencode
+try:
+ # python 3
+ from subprocess import DEVNULL
+except ImportError:
+ # python 2
+ DEVNULL = open(os.devnull, "r")
from pcs import settings
from pcs.common import pcs_pycurl as pycurl
@@ -401,7 +407,9 @@ class CommandRunner(object):
process = subprocess.Popen(
args,
# Some commands react differently if they get anything via stdin
- stdin=(subprocess.PIPE if stdin_string is not None else None),
+ stdin=(
+ subprocess.PIPE if stdin_string is not None else DEVNULL
+ ),
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
preexec_fn=(
diff --git a/pcs/test/test_lib_external.py b/pcs/test/test_lib_external.py
index b249c47a..85c52a18 100644
--- a/pcs/test/test_lib_external.py
+++ b/pcs/test/test_lib_external.py
@@ -74,7 +74,7 @@ class CommandRunnerTest(TestCase):
self.assert_popen_called_with(
mock_popen,
command,
- {"env": {}, "stdin": None,}
+ {"env": {}, "stdin": lib.DEVNULL,}
)
logger_calls = [
mock.call("Running: {0}\nEnvironment:".format(command_str)),
@@ -158,7 +158,7 @@ class CommandRunnerTest(TestCase):
self.assert_popen_called_with(
mock_popen,
command,
- {"env": {"a": "a", "b": "B", "c": "{C}"}, "stdin": None,}
+ {"env": {"a": "a", "b": "B", "c": "{C}"}, "stdin": lib.DEVNULL,}
)
logger_calls = [
mock.call(
@@ -327,7 +327,7 @@ class CommandRunnerTest(TestCase):
self.assert_popen_called_with(
mock_popen,
command,
- {"env": {}, "stdin": None,}
+ {"env": {}, "stdin": lib.DEVNULL,}
)
logger_calls = [
mock.call("Running: {0}\nEnvironment:".format(command_str)),
@@ -376,7 +376,7 @@ class CommandRunnerTest(TestCase):
self.assert_popen_called_with(
mock_popen,
command,
- {"env": {}, "stdin": None,}
+ {"env": {}, "stdin": lib.DEVNULL,}
)
logger_calls = [
mock.call("Running: {0}\nEnvironment:".format(command_str)),
diff --git a/pcs/utils.py b/pcs/utils.py
index eb02ca34..347ad73e 100644
--- a/pcs/utils.py
+++ b/pcs/utils.py
@@ -86,6 +86,12 @@ try:
except ImportError:
# python3
from urllib.parse import urlencode as urllib_urlencode
+try:
+ # python 3
+ from subprocess import DEVNULL
+except ImportError:
+ # python 2
+ DEVNULL = open(os.devnull, "r")
PYTHON2 = (sys.version_info.major == 2)
@@ -1035,7 +1041,7 @@ def run(
if string_for_stdin != None:
stdin_pipe = subprocess.PIPE
else:
- stdin_pipe = None
+ stdin_pipe = DEVNULL
p = subprocess.Popen(
args,
--
2.13.6