bitkeeper revision 1.1159.154.1 (4189125da-JXVx56I2Sl4SQmQFvGcA)

Fix for os.popen problems on some systems.  Not pretty.
This commit is contained in:
mwilli2@equilibrium.research committed 2004-11-03 17:16:13 +00:00
1 parent 357d5bcf21
commit 6ab8abb18d
8 files changed
+56 -11

No files matched your search

+3 -2
View File
@@ -11,6 +11,7 @@ import sys
import re
from xen.sv.params import *
from xen.xend import util
from twisted.internet import reactor
from twisted.web import static, server, script
@@ -29,7 +30,7 @@ class Daemon:
cmdex = '(?P<cmd>.*)'
procre = re.compile('^\s*' + pidex + '\s*' + pythonex + '\s*' + cmdex + '$')
xendre = re.compile('^/usr/sbin/xend\s*(start|restart)\s*.*$')
procs = os.popen('ps -e -o pid,args 2>/dev/null')
procs = util.popen('ps -e -o pid,args 2>/dev/null')
for proc in procs:
pm = procre.match(proc)
if not pm: continue
@@ -57,7 +58,7 @@ class Daemon:
return 0
# Read the pid of the previous invocation and search active process list.
pid = open(PID_FILE, 'r').read()
lines = os.popen('ps ' + pid + ' 2>/dev/null').readlines()
lines = util.popen('ps ' + pid + ' 2>/dev/null').readlines()
for line in lines:
if re.search('^ *' + pid + '.+xensv', line):
if not kill:
+4 -2
View File
@@ -5,6 +5,8 @@ import os.path
import re
import sys
from xen.xend import util
os.defpath = os.defpath + ':/sbin:/usr/sbin:/usr/local/sbin'
CMD_IFCONFIG = 'ifconfig'
CMD_ROUTE = 'route'
@@ -81,7 +83,7 @@ def bridge_del(bridge):
def routes():
"""Return a list of the routes.
"""
fin = os.popen(CMD_ROUTE + ' -n', 'r')
fin = util.popen(CMD_ROUTE + ' -n', 'r')
routes = []
for x in fin:
if x.startswith('Kernel'): continue
@@ -102,7 +104,7 @@ def routes():
def ifconfig(interface):
"""Return the ip config for an interface,
"""
fin = os.popen(CMD_IFCONFIG + ' %s' % interface, 'r')
fin = util.popen(CMD_IFCONFIG + ' %s' % interface, 'r')
inetre = re.compile('\s*inet\s*addr:(?P<address>\S*)\s*Bcast:(?P<broadcast>\S*)\s*Mask:(?P<mask>\S*)')
info = None
for x in fin:
+5 -3
View File
@@ -4,6 +4,8 @@ import socket
import struct
import errno
from xen.xend import util
def _readlines(fd):
"""Version of readlines safe against EINTR.
"""
@@ -49,7 +51,7 @@ def get_current_ipaddr(dev='eth0'):
returns interface address as a string
"""
fd = os.popen( '/sbin/ifconfig ' + dev + ' 2>/dev/null' )
fd = util.popen( '/sbin/ifconfig ' + dev + ' 2>/dev/null' )
lines = _readlines(fd)
for line in lines:
m = re.search( '^\s+inet addr:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*',
@@ -67,7 +69,7 @@ def get_current_ipmask(dev='eth0'):
returns interface netmask as a string
"""
fd = os.popen( '/sbin/ifconfig ' + dev + ' 2>/dev/null' )
fd = util.popen( '/sbin/ifconfig ' + dev + ' 2>/dev/null' )
lines = _readlines(fd)
for line in lines:
m = re.search( '^.+Mask:([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+).*',
@@ -85,7 +87,7 @@ def get_current_ipgw(dev='eth0'):
returns gateway address as a string
"""
fd = os.popen( '/sbin/route -n' )
fd = util.popen( '/sbin/route -n' )
lines = _readlines(fd)
for line in lines:
m = re.search( '^\S+\s+([0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)' +
+2 -1
View File
@@ -5,6 +5,7 @@ import os.path
import sys
import string
from xen.xend import util
from xen.xend import XendRoot
xroot = XendRoot.instance()
@@ -35,7 +36,7 @@ def block(op, type, dets, script=None):
script = os.path.join(SCRIPT_DIR, script)
args = [op] + string.split(dets, ':')
args = ' '.join(args)
out = os.popen(script + ' ' + args)
out = util.popen(script + ' ' + args)
output = out.readline()
out.close()
+3 -2
View File
@@ -34,6 +34,7 @@ from xen.xend.XendError import XendError
from xen.xend.server import SrvServer
from xen.xend import XendRoot
from xen.xend.XendLogging import log
from xen.xend import util
import channel
import blkif
@@ -336,7 +337,7 @@ class Daemon:
cmdex = '(?P<cmd>.*)'
procre = re.compile('^\s*' + pidex + '\s*' + pythonex + '\s*' + cmdex + '$')
xendre = re.compile('^/usr/sbin/xend\s*(start|restart)\s*.*$')
procs = os.popen('ps -e -o pid,args 2>/dev/null')
procs = util.popen('ps -e -o pid,args 2>/dev/null')
for proc in procs:
pm = procre.match(proc)
if not pm: continue
@@ -382,7 +383,7 @@ class Daemon:
"""
running = 0
if pid:
lines = os.popen('ps %d 2>/dev/null' % pid).readlines()
lines = util.popen('ps %d 2>/dev/null' % pid).readlines()
exp = '^ *%d.+%s' % (pid, name)
for line in lines:
if re.search(exp, line):
+2 -1
View File
@@ -8,6 +8,7 @@ from xen.xend import sxp
from xen.xend import Blkctl
from xen.xend.XendLogging import log
from xen.xend.XendError import XendError, VmError
from xen.xend import util
import os
import re
@@ -25,7 +26,7 @@ def expand_dev_name(name):
def check_mounted(self, name):
mode = None
name = expand_dev_name(name)
lines = os.popen('mount 2>/dev/null').readlines()
lines = util.popen('mount 2>/dev/null').readlines()
exp = re.compile('^' + name + ' .*[\(,]r(?P<mode>[ow])[,\)]')
for line in lines:
pm = exp.match(line)
+36
View File
@@ -0,0 +1,36 @@
# Misc utility functions for Xend
# (c) 2004 Mark A. Williamson <mark.williamson@cl.cam.ac.uk>
from twisted.internet import utils
from twisted.internet import reactor
from XendLogging import log
from StringIO import StringIO
# This is rather distasteful. Twisted doesn't play nicely with Python's
# standard os.popen, so here's an implementation of a synchronous popen that
# should work reliably. - MAW
def popen(cmd):
global done_flag, result
done_flag = False
result = ''
def done(output):
global done_flag, result
done_flag = True
result = output
def err(output):
global done_flag
# For normal use, suppress debug output here. It grumbles about stderr if the
# program exits with $? != 0, even if stderr is redirected. Grrr!
# log.debug("util.popen(\'%s\'): %s" % (cmd, output))
done_flag = True
d = utils.getProcessOutput(cmd)
d.addCallbacks(done, err)
while not done_flag:
reactor.iterate()
return StringIO(result)
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.