def __init__(self, config, hosts_ipset):
super(EtcdAPI, self).__init__(config.ETCD_ADDRS,
etcd_scheme=config.ETCD_SCHEME,
etcd_key=config.ETCD_KEY_FILE,
etcd_cert=config.ETCD_CERT_FILE,
etcd_ca=config.ETCD_CA_FILE)
self._config = config
# Timestamp storing when the EtcdAPI started. This info is needed
# in order to report uptime to etcd.
self._start_time = monotonic_time()
# Create an Actor to report per-endpoint status into etcd. We defer
# startup of this and our other workers until we get started.
self.status_reporter = EtcdStatusReporter(config)
# Create the main etcd-watching greenlet.
self._watcher = _FelixEtcdWatcher(config,
self,
self.status_reporter,
hosts_ipset)
self._watcher.link(self._on_worker_died)
# Create a greenlet to trigger periodic resyncs.
self._resync_greenlet = gevent.Greenlet(self._periodically_resync)
self._resync_greenlet.link_exception(self._on_worker_died)
# Create a greenlet to report felix's liveness into etcd.
self.done_first_status_report = False
self._status_reporting_greenlet = gevent.Greenlet(
self._periodically_report_status
)
self._status_reporting_greenlet.link_exception(self._on_worker_died)
self.status_reporter.greenlet.link(self._on_worker_died)
评论列表
文章目录