[node-patches] Change in ovirt-node[master]: process: Raise an error for a known problem

fabiand at fedoraproject.org fabiand at fedoraproject.org
Fri Sep 13 16:36:39 UTC 2013


Fabian Deutsch has uploaded a new change for review.

Change subject: process: Raise an error for a known problem
......................................................................

process: Raise an error for a known problem

It is known that combining shell=True with an argumentlist doesn't work.
Thsi check is now added to call subprocess calls.

Change-Id: Ic0208de30aa5b8312384c0736f6f7ad38624ec89
Signed-off-by: Fabian Deutsch <fabiand at fedoraproject.org>
---
M src/ovirt/node/utils/process.py
1 file changed, 12 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-node refs/changes/25/19225/1

diff --git a/src/ovirt/node/utils/process.py b/src/ovirt/node/utils/process.py
index b442eb2..b6e0cbd 100644
--- a/src/ovirt/node/utils/process.py
+++ b/src/ovirt/node/utils/process.py
@@ -43,11 +43,19 @@
     return new_kwargs
 
 
+def __check_for_problems(args, kwargs):
+    if ("shell" in kwargs) and (args and type(args[0]) is list):
+        raise RuntimeError("Combining  shell=True and a command list does " +
+                           "not work. With shell=True the first argument" +
+                           "must be a string. A list otherwise.")
+
+
 def popen(*args, **kwargs):
     """subprocess.Popen wrapper to not leak file descriptors
     """
     kwargs = __update_kwargs(kwargs)
     LOGGER.debug("Popen with: %s %s" % (args, kwargs))
+    # Intentionally no check for common problems
     return subprocess.Popen(*args, **kwargs)
 
 
@@ -56,6 +64,7 @@
     """
     kwargs = __update_kwargs(kwargs)
     LOGGER.debug("Calling with: %s %s" % (args, kwargs))
+    __check_for_problems(args, kwargs)
     return int(subprocess.call(*args, **kwargs))
 
 
@@ -64,6 +73,7 @@
     """
     kwargs = __update_kwargs(kwargs)
     LOGGER.debug("Checking call with: %s %s" % (args, kwargs))
+    __check_for_problems(args, kwargs)
     return int(subprocess.check_call(*args, **kwargs))
 
 
@@ -72,6 +82,7 @@
     """
     kwargs = __update_kwargs(kwargs)
     LOGGER.debug("Checking output with: %s %s" % (args, kwargs))
+    __check_for_problems(args, kwargs)
     try:
         return unicode(subprocess.check_output(*args, **kwargs),
                        encoding=sys.stdin.encoding or "utf-8")
@@ -96,4 +107,5 @@
     kwargs.update({"stdin": PIPE,
                    "stdout": PIPE,
                    "stderr": STDOUT})
+    __check_for_problems(cmd, kwargs)
     return unicode(popen(cmd, **kwargs).communicate(stdin)[0])


-- 
To view, visit http://gerrit.ovirt.org/19225
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ic0208de30aa5b8312384c0736f6f7ad38624ec89
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-node
Gerrit-Branch: master
Gerrit-Owner: Fabian Deutsch <fabiand at fedoraproject.org>



More information about the node-patches mailing list