new_initscript = rec['initscript']
if new_initscript != self.initscript:
self.initscript = new_initscript
- logger.log('%s: installing initscript' % self.name)
- def install_initscript():
- flags = os.O_WRONLY | os.O_CREAT | os.O_TRUNC
- fd = os.open('/etc/rc.vinit', flags, 0755)
- os.write(fd, new_initscript)
- os.close(fd)
- try:
- self.chroot_call(install_initscript)
- self.initscriptchanged = True
- except: logger.log_exc(self.name)
+ self.initscriptchanged = True
accounts.Account.configure(self, rec) # install ssh keys
if self.rspec['enabled'] > 0:
logger.log('%s: starting in %d seconds' % (self.name, delay))
time.sleep(delay)
+ # VServer.start calls fork() internally,
+ # so just close the nonstandard fds and fork once to avoid creating zombies
child_pid = os.fork()
if child_pid == 0:
- # VServer.start calls fork() internally,
- # so just close the nonstandard fds and fork once to avoid creating zombies
+ if self.initscriptchanged:
+ logger.log('%s: installing initscript' % self.name)
+ def install_initscript():
+ flags = os.O_WRONLY | os.O_CREAT | os.O_TRUNC
+ fd = os.open('/etc/rc.vinit', flags, 0755)
+ os.write(fd, self.initscript)
+ os.close(fd)
+ try:
+ self.chroot_call(install_initscript)
+ except: logger.log_exc(self.name)
tools.close_nonstandard_fds()
vserver.VServer.start(self)
os._exit(0)
- else: os.waitpid(child_pid, 0)
+ else:
+ os.waitpid(child_pid, 0)
+ self.initscriptchanged = False
else: logger.log('%s: not starting, is not enabled' % self.name)
- self.initscriptchanged = False
def stop(self):
logger.log('%s: stopping' % self.name)
vserver.VServer.stop(self)
+ def is_running(self):
+ return vserver.VServer.is_running(self)
+
def set_resources(self):
disk_max = self.rspec['disk_max']
logger.log('%s: setting max disk usage to %d KiB' % (self.name, disk_max))