git://git.onelab.eu
/
nodemanager.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7b955ce
)
chrooting is not thread-safe. Install the initscript before calling VServer.start...
author
Daniel Hokka Zakrisson
<dhokka@cs.princeton.edu>
Mon, 7 Jul 2008 16:02:42 +0000
(16:02 +0000)
committer
Daniel Hokka Zakrisson
<dhokka@cs.princeton.edu>
Mon, 7 Jul 2008 16:02:42 +0000
(16:02 +0000)
sliver_vs.py
patch
|
blob
|
history
diff --git
a/sliver_vs.py
b/sliver_vs.py
index
b889e32
..
90b2ca7
100644
(file)
--- a/
sliver_vs.py
+++ b/
sliver_vs.py
@@
-166,16
+166,7
@@
class Sliver_VS(accounts.Account, vserver.VServer):
new_initscript = rec['initscript']
if new_initscript != self.initscript:
self.initscript = new_initscript
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
accounts.Account.configure(self, rec) # install ssh keys
@@
-185,6
+176,17
@@
class Sliver_VS(accounts.Account, vserver.VServer):
time.sleep(delay)
child_pid = os.fork()
if child_pid == 0:
time.sleep(delay)
child_pid = os.fork()
if child_pid == 0:
+ 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, new_initscript)
+ os.close(fd)
+ try:
+ self.chroot_call(install_initscript)
+ self.initscriptchanged = False
+ except: logger.log_exc(self.name)
# VServer.start calls fork() internally,
# so just close the nonstandard fds and fork once to avoid creating zombies
tools.close_nonstandard_fds()
# VServer.start calls fork() internally,
# so just close the nonstandard fds and fork once to avoid creating zombies
tools.close_nonstandard_fds()
@@
-192,7
+194,6
@@
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)
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)
def stop(self):
logger.log('%s: stopping' % self.name)