mount /proc before chroot'ing into filesystem.
[util-vserver-pl.git] / python / vserver.py
index f6d6505..65d9c62 100644 (file)
@@ -157,12 +157,12 @@ class VServer:
     def log(self,msg):
         if self.logfile:
             try:
     def log(self,msg):
         if self.logfile:
             try:
-                fd = os.open(self.logfile,"a", 0600)
+                fd = os.open(self.logfile,os.O_WRONLY | os.O_CREAT | os.O_APPEND, 0600)
                 if not msg.endswith('\n'): msg += '\n'
                 os.write(fd, '%s: %s' % (time.asctime(time.gmtime()), msg))
                 os.close(fd)
             except:
                 if not msg.endswith('\n'): msg += '\n'
                 os.write(fd, '%s: %s' % (time.asctime(time.gmtime()), msg))
                 os.close(fd)
             except:
-                print msg
+                print '%s: (%s failed to open) %s'%(time.asctime(time.gmtime()),self.logfile,msg)
 
     def have_limits_changed(self):
         return self.rlimits_changed
 
     def have_limits_changed(self):
         return self.rlimits_changed
@@ -381,7 +381,7 @@ class VServer:
             self.set_resources()
             vserverimpl.setup_done(self.ctx)
 
             self.set_resources()
             vserverimpl.setup_done(self.ctx)
 
-    def __prep(self, runlevel, log):
+    def __prep(self, runlevel):
 
         """ Perform all the crap that the vserver script does before
         actually executing the startup scripts. """
 
         """ Perform all the crap that the vserver script does before
         actually executing the startup scripts. """
@@ -444,6 +444,10 @@ class VServer:
                 if fd != 0:
                     os.dup2(fd, 0)
                     os.close(fd)
                 if fd != 0:
                     os.dup2(fd, 0)
                     os.close(fd)
+                # perform pre-init cleanup
+                self.__prep(runlevel)
+
                 self.config.cache_it()
                 self.__do_chroot()
                 log = open("/var/log/boot.log", "a", 0)
                 self.config.cache_it()
                 self.__do_chroot()
                 log = open("/var/log/boot.log", "a", 0)
@@ -453,10 +457,6 @@ class VServer:
 
                 print >>log, ("%s: starting the virtual server %s" %
                               (time.asctime(time.gmtime()), self.name))
 
                 print >>log, ("%s: starting the virtual server %s" %
                               (time.asctime(time.gmtime()), self.name))
-
-                # perform pre-init cleanup
-                self.__prep(runlevel, log)
-
                 # execute each init script in turn
                 # XXX - we don't support all scripts that vserver script does
                 self.__do_chcontext(state_file)
                 # execute each init script in turn
                 # XXX - we don't support all scripts that vserver script does
                 self.__do_chcontext(state_file)