2010-02-04 16:21:36 +01:00
|
|
|
|
|
|
|
import re
|
2010-02-11 23:17:36 +01:00
|
|
|
import socket
|
|
|
|
import time
|
2010-05-14 19:38:26 +02:00
|
|
|
import os
|
2010-02-04 16:21:36 +01:00
|
|
|
# various utilities that are handy
|
|
|
|
|
|
|
|
def execsys( args ):
|
|
|
|
import subprocess
|
|
|
|
if isinstance( args , str ):
|
|
|
|
r = re.compile( "\s+" )
|
|
|
|
args = r.split( args )
|
|
|
|
p = subprocess.Popen( args , stdout=subprocess.PIPE , stderr=subprocess.PIPE )
|
|
|
|
r = p.communicate()
|
|
|
|
return r;
|
|
|
|
|
|
|
|
def getprocesslist():
|
|
|
|
raw = ""
|
|
|
|
try:
|
|
|
|
raw = execsys( "/bin/ps -ax" )[0]
|
|
|
|
except Exception,e:
|
|
|
|
print( "can't get processlist: " + str( e ) )
|
|
|
|
|
|
|
|
r = re.compile( "[\r\n]+" )
|
|
|
|
return r.split( raw )
|
2010-02-11 23:17:36 +01:00
|
|
|
|
|
|
|
|
2010-05-14 19:38:26 +02:00
|
|
|
def removeIfInList( lst , thing ):
|
|
|
|
if thing in lst:
|
|
|
|
lst.remove( thing )
|
|
|
|
|
|
|
|
def findVersion( root , choices ):
|
|
|
|
for c in choices:
|
|
|
|
if ( os.path.exists( root + c ) ):
|
|
|
|
return root + c
|
|
|
|
raise "can't find a version of [" + root + "] choices: " + choices
|
|
|
|
|
|
|
|
def choosePathExist( choices , default=None):
|
|
|
|
for c in choices:
|
|
|
|
if c != None and os.path.exists( c ):
|
|
|
|
return c
|
|
|
|
return default
|
|
|
|
|
|
|
|
def filterExists(paths):
|
|
|
|
return filter(os.path.exists, paths)
|
|
|
|
|
|
|
|
def ensureDir( name ):
|
|
|
|
d = os.path.dirname( name )
|
|
|
|
if not os.path.exists( d ):
|
|
|
|
print( "Creating dir: " + name );
|
|
|
|
os.makedirs( d )
|
|
|
|
if not os.path.exists( d ):
|
|
|
|
raise "Failed to create dir: " + name
|
2010-05-15 05:37:29 +02:00
|
|
|
|
2010-05-15 05:57:55 +02:00
|
|
|
def checkMongoPort( port=27017 ):
|
|
|
|
sock = socket.socket()
|
|
|
|
sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_NODELAY, 1)
|
|
|
|
sock.settimeout(1)
|
|
|
|
sock.connect(("localhost", port))
|
|
|
|
sock.close()
|
|
|
|
|
|
|
|
|
2010-05-15 05:37:29 +02:00
|
|
|
def didMongodStart( port=27017 , timeout=20 ):
|
|
|
|
while timeout > 0:
|
|
|
|
time.sleep( 1 )
|
|
|
|
try:
|
|
|
|
checkMongoPort( port )
|
|
|
|
return True
|
|
|
|
except Exception,e:
|
|
|
|
print( e )
|
|
|
|
timeout = timeout - 1
|
|
|
|
return False
|
|
|
|
|