示例#1
0
文件: gauge.py 项目: c65sdn/faucet
 def __init__(self, *args, **kwargs):
     super().__init__(*args, **kwargs)
     self.watchers = {}
     self.config_watcher = ConfigWatcher()
     self.faucet_config_watchers = []
     self.prom_client = GaugePrometheusClient(reg=self._reg)
     self.thread_managers = (self.prom_client, )
示例#2
0
文件: gauge.py 项目: c65sdn/faucet
    def _load_config(self):
        """Load Gauge config."""
        try:
            conf_hash, _faucet_config_files, faucet_conf_hashes, new_confs = watcher_parser(
                self.config_file, self.logname, self.prom_client)
            watchers = [
                watcher_factory(watcher_conf)(watcher_conf, self.logname,
                                              self.prom_client)
                for watcher_conf in new_confs
            ]
            self.prom_client.reregister_nonflow_vars()
        except InvalidConfigError as err:
            self.config_watcher.update(self.config_file)
            self.logger.error('invalid config: %s', err)
            return

        for old_watchers in self.watchers.values():
            self._stop_watchers(old_watchers)
        new_watchers = {}
        for watcher in watchers:
            watcher_dpid = watcher.dp.dp_id
            watcher_type = watcher.conf.type
            if watcher_dpid not in new_watchers:
                new_watchers[watcher_dpid] = {}
            if watcher_type not in new_watchers[watcher_dpid]:
                new_watchers[watcher_dpid][watcher_type] = []
            new_watchers[watcher_dpid][watcher_type].append(watcher)

        timestamp = time.time()
        for watcher_dpid, watchers in new_watchers.items():
            ryu_dp = self.dpset.get(watcher_dpid)
            if ryu_dp:
                self._start_watchers(ryu_dp, watchers, timestamp)

        self.watchers = new_watchers
        self.config_watcher.update(self.config_file,
                                   {self.config_file: conf_hash})
        self.faucet_config_watchers = []
        for faucet_config_file, faucet_conf_hash in faucet_conf_hashes.items():
            faucet_config_watcher = ConfigWatcher()
            faucet_config_watcher.update(faucet_config_file, faucet_conf_hash)
            self.faucet_config_watchers.append(faucet_config_watcher)
            self.logger.info('watching FAUCET config %s', faucet_config_file)
        self.logger.info('config complete')
示例#3
0
 def __init__(self, *args, **kwargs):
     super(Gauge, self).__init__(*args, **kwargs)
     self.prom_client = GaugePrometheusClient()
     self.watchers = {}
     self.config_watcher = ConfigWatcher()