def _watcher_parser_v2(conf, logname, prom_client): logger = config_parser_util.get_logger(logname) result = [] if conf is None: conf = {} dps = {} if 'faucet_configs' in conf: for faucet_file in conf['faucet_configs']: _, dp_list = dp_parser(faucet_file, logname) if dp_list: for dp in dp_list: dps[dp.name] = dp if 'faucet' in conf: faucet_conf = conf['faucet'] acls = faucet_conf.get('acls', {}) fct_dps = faucet_conf.get('dps', {}) meters = faucet_conf.get('meters', {}) routers = faucet_conf.get('routers', {}) vlans = faucet_conf.get('vlans', {}) for dp in _dp_parser_v2(acls, fct_dps, meters, routers, vlans): dps[dp.name] = dp if not dps: raise InvalidConfigError( 'Gauge configured without any FAUCET configuration') dbs = conf.pop('dbs') # pylint: disable=fixme for watcher_name, watcher_conf in list(conf['watchers'].items()): if watcher_conf.get('all_dps', False): watcher_dps = list(dps.keys()) else: watcher_dps = watcher_conf['dps'] # Watcher config has a list of DPs, but actually a WatcherConf is # created for each DP. # TODO: refactor watcher_conf as a container. for dp_name in watcher_dps: if dp_name not in dps: logger.error('DP %s in Gauge but not configured in FAUCET', dp_name) continue dp = dps[dp_name] if 'dbs' in watcher_conf: watcher_dbs = watcher_conf['dbs'] elif 'db' in watcher_conf: watcher_dbs = [watcher_conf['db']] else: raise InvalidConfigError('Watcher configured without DB') for db in watcher_dbs: watcher = WatcherConf(watcher_name, dp.dp_id, watcher_conf, prom_client) watcher.add_db(dbs[db]) watcher.add_dp(dp) result.append(watcher) return result
def _watcher_parser_v2(conf, logname, prom_client): logger = config_parser_util.get_logger(logname) result = [] dps = {} for faucet_file in conf['faucet_configs']: _, dp_list = dp_parser(faucet_file, logname) if dp_list: for dp in dp_list: dps[dp.name] = dp dbs = conf.pop('dbs') for name, dictionary in list(conf['watchers'].items()): for dp_name in dictionary['dps']: if dp_name not in dps: logger.error('dp %s metered but not configured', dp_name) continue dp = dps[dp_name] watcher = WatcherConf(name, dictionary, prom_client) watcher.add_db(dbs[watcher.db]) watcher.add_dp(dp) result.append(watcher) return result
def _watcher_parser_v2(conf, logname, prom_client): logger = config_parser_util.get_logger(logname) result = [] dps = {} for faucet_file in conf['faucet_configs']: _, dp_list = dp_parser(faucet_file, logname) if dp_list: for dp in dp_list: dps[dp.name] = dp dbs = conf.pop('dbs') for watcher_name, watcher_conf in list(conf['watchers'].items()): if watcher_conf.get('all_dps', False): watcher_dps = list(dps.keys()) else: watcher_dps = watcher_conf['dps'] # Watcher config has a list of DPs, but actually a WatcherConf is # created for each DP. # TODO: refactor watcher_conf as a container. for dp_name in watcher_dps: if dp_name not in dps: logger.error('DP %s in Gauge but not configured in FAUCET', dp_name) continue dp = dps[dp_name] watcher = WatcherConf(watcher_name, dp.dp_id, watcher_conf, prom_client) watcher.add_db(dbs[watcher.db]) watcher.add_dp(dp) result.append(watcher) return result
def _watcher_parser_v2(conf, logname, prom_client): logger = config_parser_util.get_logger(logname) if conf is None: conf = {} dps = _parse_dps_for_watchers(conf, logname) dbs = conf.pop('dbs') result = [] # pylint: disable=fixme for watcher_name, watcher_conf in list(conf['watchers'].items()): if watcher_conf.get('all_dps', False): watcher_dps = list(dps.keys()) else: watcher_dps = watcher_conf['dps'] # Watcher config has a list of DPs, but actually a WatcherConf is # created for each DP. # TODO: refactor watcher_conf as a container. for dp_name in watcher_dps: if dp_name not in dps: logger.error('DP %s in Gauge but not configured in FAUCET', dp_name) continue dp = dps[dp_name] if 'dbs' in watcher_conf: watcher_dbs = watcher_conf['dbs'] elif 'db' in watcher_conf: watcher_dbs = [watcher_conf['db']] else: raise InvalidConfigError('Watcher configured without DB') for db in watcher_dbs: watcher = WatcherConf(watcher_name, dp.dp_id, watcher_conf, prom_client) watcher.add_db(dbs[db]) watcher.add_dp(dp) result.append(watcher) return result
def _watcher_parser_v2(conf, logname, prom_client): logger = config_parser_util.get_logger(logname) if conf is None: conf = {} faucet_config_files, faucet_conf_hashes, dps = _parse_dps_for_watchers( conf, logname) dbs = conf.pop('dbs') result = [] # pylint: disable=fixme for watcher_name, watcher_conf in conf['watchers'].items(): if watcher_conf.get('all_dps', False): watcher_dps = dps.keys() else: watcher_dps = watcher_conf['dps'] # Watcher config has a list of DPs, but actually a WatcherConf is # created for each DP. # TODO: refactor watcher_conf as a container. for dp_name in watcher_dps: if dp_name not in dps: logger.error('DP %s in Gauge but not configured in FAUCET', dp_name) continue dp = dps[dp_name] if 'dbs' in watcher_conf: watcher_dbs = watcher_conf['dbs'] elif 'db' in watcher_conf: watcher_dbs = [watcher_conf['db']] else: raise InvalidConfigError('Watcher configured without DB') for db in watcher_dbs: watcher = WatcherConf(watcher_name, dp.dp_id, watcher_conf, prom_client) watcher.add_db(dbs[db]) watcher.add_dp(dp) result.append(watcher) return faucet_config_files, faucet_conf_hashes, result