+ # start the vserver
+ subprocess.call(["/usr/sbin/vserver",self.name,"start"])
+
+ # execute initscripts
+ for cmd_to_expand in self.INITSCRIPTS:
+ # enter vserver context
+ expand = { 'runlevel': runlevel,
+ 'name': self.name, }
+ cmd = [ x % expand for x in cmd_to_expand ]
+ cmd_name = os.path.basename(cmd[0])
+ cmd_file = "/vservers/" + self.name + cmd[0]
+ if not os.path.isfile(cmd_file):
+ self.log("WARNING: could not find %s for %s" % (cmd_file, self.name))
+ break
+ self.log("executing %r" % cmd)
+ try:
+ logname='/vservers/%s/var/log/%s'%(self.name,cmd_name)
+ log_fd=os.open(logname,os.O_WRONLY | os.O_CREAT | os.O_APPEND, 0600)
+ self.log_in_file(log_fd,"Running %r into %s"%(cmd,logname))
+ self.chroot_call(subprocess.call,cmd,
+ stdout=log_fd,stderr=subprocess.STDOUT,
+ close_fds=True)
+ except: self.log(traceback.format_exc())
+ finally: os.close(log_fd)
+
+ # we get here due to an exception in the grandson process