def reconfig(self, data): self.interval = int(data.get('interval', 60)) if self.loghandler: logger.removeHandler(self.loghandler) fname = data.get('logfile', '/var/log/sauron.log') # Set up the logging file self.loghandler = logging.FileHandler(fname, mode='a') self.loghandler.setFormatter(formatter) self.loghandler.setLevel(logging.INFO) logger.addHandler(self.loghandler) # Read in /all/ the metrics! try: if len(data['metrics']) == 0: logger.error('No metrics in config file!') exit(1) for key,value in data['metrics'].items(): try: try: d = dict(value.items()) self.metrics[key].reconfig(**d) except: module = value['module'] m = __import__('sauron.metrics.%s' % module) m = getattr(m, 'metrics') m = getattr(m, module) c = getattr(m, module) del d['module'] d['name'] = key self.metrics[key] = c(**d) except KeyError: logger.exception('No module listed for metric %s' % key) exit(1) except ImportError: logger.exception('Unable to import module %s' % module) exit(1) except TypeError as e: logger.exception('Unable to initialize metric %s' % key) exit(1) except MetricException as e: logger.exception('Module Exception %s' % module) exit(1) except KeyError: logger.error('No metrics in config file!') exit(1) # Read in /all/ the emitters! try: if self.dryrun: logger.warn('Skipping all emitters because of --dry-run') self.emitters[''] = Emitter() return if len(data['emitters']) == 0: logger.error('No metrics in config file!') exit(1) for key,value in data['emitters'].items(): try: m = __import__('sauron.emitters.%s' % key) m = getattr(m, 'emitters') m = getattr(m, key) c = getattr(m, key) d = dict(value.items()) self.emitters[key] = c(**d) except ImportError: logger.exception('Unable to import module %s' % key) exit(1) except TypeError as e: logger.exception('Unable to initialize emitter %s' % key) exit(1) except EmitterException as e: logger.exception('Error with module %s' % module) exit(1) except: logger.exception('Emitter error!') exit(1)