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..
# 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
# 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']