def __init__(self, *args, **kwargs): super(Gauge, self).__init__(*args, **kwargs) sysprefix = get_sys_prefix() self.config_file = os.getenv( 'GAUGE_CONFIG', sysprefix + '/etc/ryu/faucet/gauge.yaml') self.exc_logfile = os.getenv( 'GAUGE_EXCEPTION_LOG', sysprefix + '/var/log/ryu/faucet/gauge_exception.log') self.logfile = os.getenv( 'GAUGE_LOG', sysprefix + '/var/log/ryu/faucet/gauge.log') # Setup logging self.logger = get_logger( self.logname, self.logfile, logging.DEBUG, 0) # Set up separate logging for exceptions self.exc_logger = get_logger( self.exc_logname, self.exc_logfile, logging.CRITICAL, 1) # Set the signal handler for reloading config file signal.signal(signal.SIGHUP, self.signal_handler) # dict of watchers/handlers: # indexed by dp_id and then by name self.watchers = {} confs = watcher_parser(self.config_file, self.logname) for conf in confs: watcher = watcher_factory(conf)(conf, self.logname) self.watchers.setdefault(watcher.dp.dp_id, {}) self.watchers[watcher.dp.dp_id][watcher.conf.type] = watcher # Create dpset object for querying Ryu's DPSet application self.dpset = kwargs['dpset']
def __init__(self, *args, **kwargs): super(Gauge, self).__init__(*args, **kwargs) sysprefix = get_sys_prefix() self.config_file = os.getenv('GAUGE_CONFIG', sysprefix + '/etc/ryu/faucet/gauge.yaml') self.exc_logfile = os.getenv( 'GAUGE_EXCEPTION_LOG', sysprefix + '/var/log/ryu/faucet/gauge_exception.log') self.logfile = os.getenv('GAUGE_LOG', sysprefix + '/var/log/ryu/faucet/gauge.log') # Setup logging self.logger = get_logger(self.logname, self.logfile, logging.DEBUG, 0) # Set up separate logging for exceptions self.exc_logger = get_logger(self.exc_logname, self.exc_logfile, logging.DEBUG, 1) # Set the signal handler for reloading config file signal.signal(signal.SIGHUP, self.signal_handler) # dict of watchers/handlers: # indexed by dp_id and then by name self.watchers = {} confs = watcher_parser(self.config_file, self.logname) for conf in confs: watcher = watcher_factory(conf)(conf, self.logname) self.watchers.setdefault(watcher.dp.dp_id, {}) self.watchers[watcher.dp.dp_id][watcher.conf.type] = watcher # Create dpset object for querying Ryu's DPSet application self.dpset = kwargs['dpset']
def _load_config(self): """Load Gauge config.""" self.config_file = os.getenv('GAUGE_CONFIG', self.config_file) new_confs = watcher_parser(self.config_file, self.logname) new_watchers = {} for conf in new_confs: watcher = watcher_factory(conf)(conf, self.logname) new_watchers.setdefault(watcher.dp.dp_id, {}) new_watchers[watcher.dp.dp_id][watcher.conf.type] = watcher return new_watchers
def __init__(self, *args, **kwargs): super(Gauge, self).__init__(*args, **kwargs) sysprefix = get_sys_prefix() self.config_file = os.getenv('GAUGE_CONFIG', sysprefix + '/etc/ryu/faucet/gauge.conf') self.exc_logfile = os.getenv( 'GAUGE_EXCEPTION_LOG', sysprefix + '/var/log/ryu/faucet/gauge_exception.log') self.logfile = os.getenv('GAUGE_LOG', sysprefix + '/var/log/ryu/faucet/gauge.log') # Setup logging self.logger = logging.getLogger(self.logname) logger_handler = TimedRotatingFileHandler(self.logfile, when='midnight') log_fmt = '%(asctime)s %(name)-6s %(levelname)-8s %(message)s' date_fmt = '%b %d %H:%M:%S' default_formatter = logging.Formatter(log_fmt, date_fmt) logger_handler.setFormatter(default_formatter) self.logger.addHandler(logger_handler) self.logger.propagate = 0 # Set up separate logging for exceptions exc_logger = logging.getLogger(self.exc_logname) exc_logger_handler = logging.FileHandler(self.exc_logfile) exc_logger_handler.setFormatter(logging.Formatter(log_fmt, date_fmt)) exc_logger.addHandler(exc_logger_handler) exc_logger.propagate = 1 exc_logger.setLevel(logging.ERROR) # Set the signal handler for reloading config file signal.signal(signal.SIGHUP, self.signal_handler) # dict of watchers/handlers: # indexed by dp_id and then by name self.watchers = {} confs = watcher_parser(self.config_file, self.logname) for conf in confs: watcher = watcher_factory(conf)(conf, self.logname) self.watchers.setdefault(watcher.dp.dp_id, {}) self.watchers[watcher.dp.dp_id][watcher.conf.type] = watcher # Create dpset object for querying Ryu's DPSet application self.dpset = kwargs['dpset']
def _load_config(self): """Load Gauge config.""" self.config_file = os.getenv('GAUGE_CONFIG', self.config_file) new_confs = watcher_parser(self.config_file, self.logname, self.prom_client) new_watchers = {} for conf in new_confs: watcher = watcher_factory(conf)(conf, self.logname, self.prom_client) watcher_dpid = watcher.dp.dp_id ryu_dp = self.dpset.get(watcher_dpid) watcher_type = watcher.conf.type watcher_msg = '%s %s watcher' % (dpid_log(watcher_dpid), watcher_type) if watcher_dpid not in new_watchers: new_watchers[watcher_dpid] = {} if (watcher_dpid in self.watchers and watcher_type in self.watchers[watcher_dpid]): old_watcher = self.watchers[watcher_dpid][watcher_type] if old_watcher.running(): self.logger.info('%s stopped', watcher_msg) old_watcher.stop() del self.watchers[watcher_dpid][watcher_type] new_watchers[watcher_dpid][watcher_type] = watcher if ryu_dp is None: self.logger.info('%s added but DP currently down', watcher_msg) else: new_watchers[watcher_dpid][watcher_type].start(ryu_dp) self.logger.info('%s started', watcher_msg) for watcher_dpid, leftover_watchers in list(self.watchers.items()): for watcher_type, watcher in list(leftover_watchers.items()): if watcher.running(): self.logger.info('%s %s deconfigured', dpid_log(watcher_dpid), watcher_type) watcher.stop() self.watchers = new_watchers self.logger.info('config complete')
def __init__(self, *args, **kwargs): super(Gauge, self).__init__(*args, **kwargs) self.config_file = os.getenv( 'GAUGE_CONFIG', '/etc/ryu/faucet/gauge.conf') self.exc_logfile = os.getenv( 'GAUGE_EXCEPTION_LOG', '/var/log/ryu/faucet/gauge_exception.log') self.logfile = os.getenv('GAUGE_LOG', '/var/log/ryu/faucet/gauge.log') # Setup logging self.logger = logging.getLogger(self.logname) logger_handler = TimedRotatingFileHandler( self.logfile, when='midnight') log_fmt = '%(asctime)s %(name)-6s %(levelname)-8s %(message)s' date_fmt = '%b %d %H:%M:%S' default_formatter = logging.Formatter(log_fmt, date_fmt) logger_handler.setFormatter(default_formatter) self.logger.addHandler(logger_handler) self.logger.propagate = 0 # Set up separate logging for exceptions exc_logger = logging.getLogger(self.exc_logname) exc_logger_handler = logging.FileHandler(self.exc_logfile) exc_logger_handler.setFormatter( logging.Formatter(log_fmt, date_fmt)) exc_logger.addHandler(exc_logger_handler) exc_logger.propagate = 1 exc_logger.setLevel(logging.ERROR) # Set the signal handler for reloading config file signal.signal(signal.SIGHUP, self.signal_handler) # dict of watchers/handlers: # indexed by dp_id and then by name self.watchers = {} confs = watcher_parser(self.config_file, self.logname) for conf in confs: watcher = watcher_factory(conf)(conf, self.logname) self.watchers.setdefault(watcher.dp.dp_id, {}) self.watchers[watcher.dp.dp_id][watcher.conf.type] = watcher # Create dpset object for querying Ryu's DPSet application self.dpset = kwargs['dpset']
def reload_config(self, ev): self.config_file = os.getenv('GAUGE_CONFIG', self.config_file) new_confs = watcher_parser(self.config_file, self.logname) new_watchers = {} for conf in new_confs: watcher = watcher_factory(conf)(conf, self.logname) new_watchers.setdefault(watcher.dp.dp_id, {}) new_watchers[watcher.dp.dp_id][watcher.conf.type] = watcher for dp_id, watchers in self.watchers: for watcher_type, watcher in watchers: try: new_watcher = new_watchers[dp_id][watcher_type] self.watchers[dp_id][watcher_type] = new_watcher except KeyError: del self.watchers[dp_id][watcher_type] if watcher.running(): watcher.stop() new_watcher.start(self.dpset.get(dp_id))
def reload_config(self, ryu_event): self.config_file = os.getenv('GAUGE_CONFIG', self.config_file) new_confs = watcher_parser(self.config_file, self.logname) new_watchers = {} for conf in new_confs: watcher = watcher_factory(conf)(conf, self.logname) new_watchers.setdefault(watcher.dp.dp_id, {}) new_watchers[watcher.dp.dp_id][watcher.conf.type] = watcher for dp_id, watchers in self.watchers: for watcher_type, watcher in watchers: try: new_watcher = new_watchers[dp_id][watcher_type] self.watchers[dp_id][watcher_type] = new_watcher except KeyError: del self.watchers[dp_id][watcher_type] if watcher.running(): watcher.stop() new_watcher.start(self.dpset.get(dp_id))