diff --git a/.rootkeys b/.rootkeys index c4b0af0cad..597af41af3 100644 --- a/.rootkeys +++ b/.rootkeys @@ -908,6 +908,7 @@ 4055ee4dwy4l0MghZosxoiu6zmhc9Q tools/python/xen/util/console_client.py 40c9c468IienauFHQ_xJIcqnPJ8giQ tools/python/xen/util/ip.py 41dde8b0yuJX-S79w4xJKxBQ-Mhp1A tools/python/xen/util/memmap.py +4288c6fcB1kUAqX0gzU85GGxmamS4Q tools/python/xen/util/process.py 4059c6a0pnxhG8hwSOivXybbGOwuXw tools/python/xen/util/tempfile.py 4267a9b16u4IEPhjRryesk6A17sobA tools/python/xen/web/SrvBase.py 4267a9b1FfCUjW7m9anLERcx9lwhJg tools/python/xen/web/SrvDir.py diff --git a/tools/python/xen/util/process.py b/tools/python/xen/util/process.py new file mode 100644 index 0000000000..f6aac50f5b --- /dev/null +++ b/tools/python/xen/util/process.py @@ -0,0 +1,31 @@ +# Copyright (C) 2005 Christian Limpach + +# os.system() replacement which outputs through the logger + +import popen2 +import select + +from xen.xend.XendLogging import log + +def system(cmd): + # split after first space, then grab last component of path + cmdname = "[%s] " % cmd.split()[0].split('/')[-1] + # run command and grab stdin, stdout and stderr + cout, cin, cerr = popen2.popen3(cmd) + # close stdin to get command to terminate if it waits for input + cin.close() + # wait for output and process + p = select.poll() + p.register(cout) + p.register(cerr) + while True: + r = p.poll() + for (fd, event) in r: + if event == select.POLLHUP: + return + if fd == cout.fileno(): + l = cout.readline() + log.info(cmdname + l.rstrip()) + if fd == cerr.fileno(): + l = cerr.readline() + log.error(cmdname + l.rstrip()) diff --git a/tools/python/xen/xend/Vifctl.py b/tools/python/xen/xend/Vifctl.py index fe33ecbc71..d26f78d7a0 100644 --- a/tools/python/xen/xend/Vifctl.py +++ b/tools/python/xen/xend/Vifctl.py @@ -3,6 +3,7 @@ import os import os.path import sys +import xen.util.process from xen.xend import XendRoot xroot = XendRoot.instance() @@ -35,7 +36,7 @@ def network(op, script=None, bridge=None, antispoof=None): else: args.append("antispoof=no") args = ' '.join(args) - os.system(script + ' ' + args) + xen.util.process.system(script + ' ' + args) def set_vif_name(vif_old, vif_new): if vif_old == vif_new: