def start_maintenance_tasks(self): # one-off task to ensure we have the correct offset logger.info('Hang on, calculating binary offset - this can take a while!') if os.path.isfile(self.config['iso']['path']): config_tar_offset = find_offset(self.config['iso']['path'], '\x07' * 30) if not config_tar_offset: logger.warning('Beeswarm client ISO was found but is invalid. Bootable clients can not be generated.') raise Exception('Expected binary pattern not found in ISO file.') else: logger.debug('Binary pattern found in ISO at: {0}'.format(config_tar_offset)) with open(self.config_file, 'r+') as config_file: self.config['iso']['offset'] = config_tar_offset #clear file config_file.seek(0) config_file.truncate(0) # and write again config_file.write(json.dumps(self.config, indent=4)) else: logger.warning('Beeswarm client ISO was NOT found. Bootable clients can not be generated.') maintenance_worker = Scheduler(self.config) maintenance_greenlet = gevent.spawn(maintenance_worker.start) config_last_modified = os.stat(self.config_file).st_mtime while self.started: poll_last_modified = os.stat(self.config_file).st_mtime if poll_last_modified > config_last_modified: logger.debug('Config file changed, restarting maintenance workers.') config_last_modified = poll_last_modified config = self.get_config(self.config_file) #kill and stop old greenlet maintenance_worker.stop() maintenance_greenlet.kill(timeout=2) #spawn new worker greenlet and pass the new config maintenance_worker = Scheduler(config) maintenance_greenlet = gevent.spawn(maintenance_worker.start) #check config file for changes every 5 second gevent.sleep(5)
def start_maintenance_tasks(self): maintenance_worker = Scheduler(self.config) maintenance_greenlet = gevent.spawn(maintenance_worker.start) config_last_modified = os.stat(self.config_file).st_mtime while self.started: poll_last_modified = os.stat(self.config_file).st_mtime if poll_last_modified > config_last_modified: logger.debug('Config file changed, restarting maintenance workers.') config_last_modified = poll_last_modified config = self.get_config(self.config_file) # kill and stop old greenlet maintenance_worker.stop() maintenance_greenlet.kill(timeout=2) # spawn new worker greenlet and pass the new config maintenance_worker = Scheduler(config) maintenance_greenlet = gevent.spawn(maintenance_worker.start) # check config file for changes every 5 second gevent.sleep(5)
def start_maintenance_tasks(self): maintenance_worker = Scheduler(self.config) maintenance_greenlet = gevent.spawn(maintenance_worker.start) config_last_modified = os.stat(self.config_file).st_mtime while self.started: poll_last_modified = os.stat(self.config_file).st_mtime if poll_last_modified > config_last_modified: logger.debug( 'Config file changed, restarting maintenance workers.') config_last_modified = poll_last_modified config = self.get_config(self.config_file) # kill and stop old greenlet maintenance_worker.stop() maintenance_greenlet.kill(timeout=2) # spawn new worker greenlet and pass the new config maintenance_worker = Scheduler(config) maintenance_greenlet = gevent.spawn(maintenance_worker.start) # check config file for changes every 5 second gevent.sleep(5)