From: Thierry Parmentelat Date: Wed, 16 Feb 2011 19:58:12 +0000 (+0100) Subject: bind mount sliver's .ssh dir into the slice X-Git-Tag: nodemanager-2.0-28~6 X-Git-Url: http://git.onelab.eu/?p=nodemanager.git;a=commitdiff_plain;h=4ced87d3169c9eaa821128b3cc9ba59cccb29e33 bind mount sliver's .ssh dir into the slice --- diff --git a/sliver_vs.py b/sliver_vs.py index 4c084b9..2554c2a 100644 --- a/sliver_vs.py +++ b/sliver_vs.py @@ -1,5 +1,4 @@ -# $Id$ -# $URL$ +# """VServer slivers. @@ -168,6 +167,25 @@ class Sliver_VS(accounts.Account, vserver.VServer): logger.log("vsliver_vs: %s: Installed new initscript in %s"%(self.name,sliver_initscript)) else: logger.log("vsliver_vs: %s: Removed obsolete initscript %s"%(self.name,sliver_initscript)) + + # bind mount root side dir to sliver side + # needs to be done before sliver starts + def expose_ssh_dir (self): + try: + root_ssh="/home/%s/.ssh" + sliver_ssh="/vservers/%s/home/%s/.ssh"%(self.name,self.name) + # any of both might not exist yet + for path in [root_ssh,sliver_ssh]: + if not os.path.exists (path): + os.mkdir(path) + if not os.path.isdir (path): + raise Exception + mounts=file('/proc/mounts').read() + if mounts.find(sliver_ssh)<0: + # xxx perform mount + subprocess.call("mount --bind -o ro %s %s"%(root_ssh,sliver_ssh),shell=True) + except: + logger.log("expose_ssh_dir with slice %s failed"%self.name) def start(self, delay=0): if self.rspec['enabled'] <= 0: @@ -177,6 +195,7 @@ class Sliver_VS(accounts.Account, vserver.VServer): time.sleep(delay) # the generic /etc/init.d/vinit script is permanently refreshed, and enabled self.install_and_enable_vinit() + self.expose_ssh_dir() # if a change has occured in the slice initscript, reflect this in /etc/init.d/vinit.slice self.refresh_slice_vinit() child_pid = os.fork()