vswitches: Remove datapath after stopping OVS
[vswitchperf.git] / tools / tasks.py
index 33a5931..90b7e55 100644 (file)
@@ -29,7 +29,6 @@ from conf import settings
 
 
 CMD_PREFIX = 'cmd : '
-_MY_ENCODING = locale.getdefaultlocale()[1]
 
 def _get_stdout():
     """Get stdout value for ``subprocess`` calls.
@@ -68,6 +67,7 @@ def run_task(cmd, logger, msg=None, check_error=False):
 
     stdout = []
     stderr = []
+    my_encoding = locale.getdefaultlocale()[1]
 
     if msg:
         logger.info(msg)
@@ -75,8 +75,9 @@ def run_task(cmd, logger, msg=None, check_error=False):
     logger.debug('%s%s', CMD_PREFIX, ' '.join(cmd))
 
     try:
-        proc = subprocess.Popen(
-            cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, bufsize=0)
+        proc = subprocess.Popen(map(os.path.expanduser, cmd),
+                                stdout=subprocess.PIPE,
+                                stderr=subprocess.PIPE, bufsize=0)
 
         while True:
             reads = [proc.stdout.fileno(), proc.stderr.fileno()]
@@ -86,11 +87,11 @@ def run_task(cmd, logger, msg=None, check_error=False):
                 if file_d == proc.stdout.fileno():
                     line = proc.stdout.readline()
                     if settings.getValue('VERBOSITY') == 'debug':
-                        sys.stdout.write(line.decode(_MY_ENCODING))
+                        sys.stdout.write(line.decode(my_encoding))
                     stdout.append(line)
                 if file_d == proc.stderr.fileno():
                     line = proc.stderr.readline()
-                    sys.stderr.write(line.decode(_MY_ENCODING))
+                    sys.stderr.write(line.decode(my_encoding))
                     stderr.append(line)
 
             if proc.poll() is not None:
@@ -102,8 +103,8 @@ def run_task(cmd, logger, msg=None, check_error=False):
             ex = subprocess.CalledProcessError(proc.returncode, cmd, stderr)
             handle_error(ex)
 
-    return ('\n'.join(sout.decode(_MY_ENCODING).strip() for sout in stdout),
-            ('\n'.join(sout.decode(_MY_ENCODING).strip() for sout in stderr)))
+    return ('\n'.join(sout.decode(my_encoding).strip() for sout in stdout),
+            ('\n'.join(sout.decode(my_encoding).strip() for sout in stderr)))
 
 def run_background_task(cmd, logger, msg):
     """Run task in background and log when started.
@@ -121,7 +122,7 @@ def run_background_task(cmd, logger, msg):
     logger.info(msg)
     logger.debug('%s%s', CMD_PREFIX, ' '.join(cmd))
 
-    proc = subprocess.Popen(cmd, stdout=_get_stdout(), bufsize=0)
+    proc = subprocess.Popen(map(os.path.expanduser, cmd), stdout=_get_stdout(), bufsize=0)
 
     return proc.pid