X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=python%2Fvserver.py;h=30e619b1ddc7fc8e8d2584f9f9da06a11406d774;hb=67f86b9c416602d6c59da0303693194f610a1c32;hp=e27f6bb1a59545a0a25017b597c32310a09af3f3;hpb=4f2445b4807306b582013abb957e6ff263e3787d;p=util-vserver.git diff --git a/python/vserver.py b/python/vserver.py index e27f6bb..30e619b 100644 --- a/python/vserver.py +++ b/python/vserver.py @@ -1,6 +1,6 @@ # Copyright 2005 Princeton University -#$Id: vserver.py,v 1.65 2007/07/31 14:36:19 dhozac Exp $ +#$Id: vserver.py,v 1.69 2007/08/01 18:33:28 dhozac Exp $ import errno import fcntl @@ -61,6 +61,9 @@ class VServerConfig: def __init__(self, name, directory): self.name = name self.dir = directory + if not (os.path.isdir(self.dir) and + os.access(self.dir, os.R_OK | os.W_OK | os.X_OK)): + raise NoSuchVServer, "%s does not exist" % self.dir def get(self, option, default = None): try: @@ -405,11 +408,6 @@ class VServer: state_file = open("/var/run/vservers/%s" % self.name, "w") # use /dev/null for stdin, /var/log/boot.log for stdout/err - try: - os.close(0) - os.close(1) - except: - pass fd = os.open("/dev/null", os.O_RDONLY) if fd != 0: os.dup2(fd, 0) @@ -429,14 +427,14 @@ class VServer: # execute each init script in turn # XXX - we don't support all scripts that vserver script does self.__do_chcontext(state_file) - for cmd in self.INITSCRIPTS + [None]: + for cmd in self.INITSCRIPTS: try: # enter vserver context arg_subst = { 'runlevel': runlevel } cmd_args = [cmd[0]] + map(lambda x: x % arg_subst, cmd[1:]) print >>log, "executing '%s'" % " ".join(cmd_args) - os.spawnvp(os.P_WAIT,cmd[0],*cmd_args) + os.spawnvp(os.P_WAIT,cmd[0],cmd_args) except: traceback.print_exc() os._exit(1)