From: David E. Eisenstat Date: Sat, 23 Jun 2007 12:35:24 +0000 (+0000) Subject: Call start after initscript change. set_disklimit() workaround. X-Git-Tag: NodeManager-1.6-1~95 X-Git-Url: http://git.onelab.eu/?p=nodemanager.git;a=commitdiff_plain;h=1218b7d0687156283b701f0cb15c920cf170df09 Call start after initscript change. set_disklimit() workaround. --- diff --git a/accounts.py b/accounts.py index 3142144..12084c2 100644 --- a/accounts.py +++ b/accounts.py @@ -31,6 +31,8 @@ import tools # When this variable is true, start after any ensure_created startingup = False +# Cumulative delay for starts when startingup is true +cumstartdelay = 0 # shell path -> account class association shell_acct_class = {} @@ -67,6 +69,7 @@ class Account: def __init__(self, rec): self.name = rec['name'] self.keys = '' + self.initscriptchanged = False self.configure(rec) @staticmethod @@ -119,7 +122,10 @@ class Worker: finally: self._create_sem.release() if not isinstance(self._acct, next_class): self._acct = next_class(rec) else: self._acct.configure(rec) - if next_class != curr_class or startingup: + if startingup: + self._acct.start(delay=cumstartdelay) + cumstartdelay += 2 + elif next_class != curr_class or self._acct.initscriptchanged: self._acct.start() def ensure_destroyed(self): self._q.put((self._ensure_destroyed,)) diff --git a/sliver_vs.py b/sliver_vs.py index ab34429..f5b9963 100644 --- a/sliver_vs.py +++ b/sliver_vs.py @@ -89,7 +89,9 @@ class Sliver_VS(accounts.Account, vserver.VServer): fd = os.open('/etc/rc.vinit', flags, 0755) os.write(fd, new_initscript) os.close(fd) - try: self.chroot_call(install_initscript) + try: + self.chroot_call(install_initscript) + self.initscriptchanged = True except: logger.log_exc() accounts.Account.configure(self, rec) # install ssh keys @@ -106,6 +108,7 @@ class Sliver_VS(accounts.Account, vserver.VServer): os._exit(0) else: os.waitpid(child_pid, 0) else: logger.log('%s: not starting, is not enabled' % self.name) + self.initscriptchanged = False def stop(self): logger.log('%s: stopping' % self.name) @@ -123,7 +126,7 @@ class Sliver_VS(accounts.Account, vserver.VServer): finally: Sliver_VS._init_disk_info_sem.release() logger.log('%s: computing disk usage: ended' % self.name) self.disk_usage_initialized = True - vserver.VServer.set_disklimit(self, disk_max) + vserver.VServer.set_disklimit(self, max(disk_max, self.disk_blocks)) except OSError: logger.log('%s: failed to set max disk usage' % self.name) logger.log_exc()