X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=sliver_lxc.py;h=8a8ebed12101d342985c4afc85881a3d9328fbe1;hb=0fc41ff1973ac16a261c90767173cb8343f3faa2;hp=b7cd45f4e101b1d053d95d5edfa4d9ea64f37b41;hpb=b266b22c0fce1a4c9d8c2f1bcfbbe876601fee55;p=nodemanager.git diff --git a/sliver_lxc.py b/sliver_lxc.py index b7cd45f..8a8ebed 100644 --- a/sliver_lxc.py +++ b/sliver_lxc.py @@ -44,6 +44,7 @@ class Sliver_LXC(Sliver_Libvirt, Initscript): Initscript.__init__(self,name) def configure(self, rec): + logger.log('========== sliver_lxc.configure {}'.format(self.name)) Sliver_Libvirt.configure(self, rec) # in case we update nodemanager.. @@ -51,7 +52,11 @@ class Sliver_LXC(Sliver_Libvirt, Initscript): # do the configure part from Initscript Initscript.configure(self, rec) + # remember configure() always gets called *before* start() + # in particular the slice initscript + # is expected to be in place already at this point def start(self, delay=0): + logger.log('==================== sliver_lxc.start {}'.format(self.name)) if 'enabled' in self.rspec and self.rspec['enabled'] <= 0: logger.log('sliver_lxc: not starting %s, is not enabled'%self.name) return @@ -60,22 +65,29 @@ class Sliver_LXC(Sliver_Libvirt, Initscript): # expose .ssh for omf_friendly slivers if 'tags' in self.rspec and 'omf_control' in self.rspec['tags']: Account.mount_ssh_dir(self.name) +# logger.log("NM is exiting for debug - just about to start {}".format(self.name)) +# exit(0) Sliver_Libvirt.start(self, delay) - # if a change has occured in the slice initscript, reflect this in /etc/init.d/vinit.slice - self.refresh_slice_vinit() - - def rerun_slice_vinit (self): - """This is called whenever the initscript code changes""" - # xxx - todo - not sure exactly how to: - # (.) invoke something in the guest - # (.) which options of systemctl should be used to trigger a restart - # should not prevent the first run from going fine hopefully - logger.log("WARNING: sliver_lxc.rerun_slice_vinit not implemented yet") + def rerun_slice_vinit(self): + """This is called at startup, and whenever the initscript code changes""" + logger.log("sliver_lxc.rerun_slice_vinit {}".format(self.name)) + plain = "virsh -c lxc:/// lxc-enter-namespace --noseclabel -- {} /usr/bin/systemctl --system daemon-reload"\ + .format(self.name) + command = plain.split() + logger.log_call(command, timeout=3) + plain = "virsh -c lxc:/// lxc-enter-namespace --noseclabel -- {} /usr/bin/systemctl restart vinit.service"\ + .format(self.name) + command = plain.split() + logger.log_call(command, timeout=3) + + @staticmethod def create(name, rec=None): - ''' Create dirs, copy fs image, lxc_create ''' - logger.verbose ('sliver_lxc: %s create'%(name)) + ''' + Create dirs, copy fs image, lxc_create + ''' + logger.verbose('sliver_lxc: %s create' % name) conn = Sliver_Libvirt.getConnection(Sliver_LXC.TYPE) vref = rec['vref']