def __init__(self, nodes=ES_NODES, **kwargs): if type(nodes) == str: nodes = nodes.split(',') if not nodes: nodes = ES_NODES self.indicators_prefix = kwargs.get('indicators_prefix', 'indicators') self.tokens_prefix = kwargs.get('tokens_prefix', 'tokens') logger.info('setting es nodes {}'.format(nodes)) connections.create_connection(hosts=nodes) self._alive = False while not self._alive: if not self._health_check(): logger.warn('ES cluster not accessible') logger.info('retrying connection in 30s') sleep(30) self._alive = True logger.info('ES connection successful') self.tokens = TokenManager() self.indicators = IndicatorManager()
class _ElasticSearch(Store): # http://stackoverflow.com/questions/533631/what-is-a-mixin-and-why-are-they-useful name = 'elasticsearch' def __init__(self, nodes=ES_NODES, **kwargs): if type(nodes) == str: nodes = nodes.split(',') if not nodes: nodes = ES_NODES self.indicators_prefix = kwargs.get('indicators_prefix', 'indicators') self.tokens_prefix = kwargs.get('tokens_prefix', 'tokens') logger.info('setting es nodes {}'.format(nodes)) connections.create_connection(hosts=nodes) self._alive = False while not self._alive: if not self._health_check(): logger.warn('ES cluster not accessible') logger.info('retrying connection in 30s') sleep(30) self._alive = True logger.info('ES connection successful') self.tokens = TokenManager() self.indicators = IndicatorManager() def _health_check(self): try: x = connections.get_connection().cluster.health() except ConnectionError as e: logger.warn('elasticsearch connection error') logger.error(e) return except Exception as e: logger.error(traceback.print_exc()) return logger.info('ES cluster is: %s' % x['status']) return x def ping(self, token): s = self._health_check() if s is None or s['status'] == 'red': raise CIFException('ES Cluster Issue') if self.tokens.read(token) or self.tokens.write(token): return True
def __init__(self, nodes=ES_NODES, **kwargs): if type(nodes) == str: nodes = nodes.split(',') self.indicators_prefix = kwargs.get('indicators_prefix', 'indicators') self.tokens_prefix = kwargs.get('tokens_prefix', 'tokens') logger.info('setting es nodes {}'.format(nodes)) connections.create_connection(hosts=nodes) self.tokens = TokenManager() self.indicators = IndicatorManager()