class KairosDBFinder(object): def __init__(self): self.mt = MetricType() self.mt.openConnection() #self.mt = GLOBAL_METRIC_TYPE def getLeafNode(self, mname, reader, avoidIntervals=False): ln = LeafNode(mname, reader) #, avoidIntervals=avoidIntervals) return ln def getBranchNode(self, mname): bn = BranchNode(mname) return bn def find_nodes(self, query): timeStart = time.time() cacheKey = "find_node_qpList:%s" % query.pattern tupes = cache.get(cacheKey) if not tupes: tupes = self.mt.find_nodes(query.pattern) cache.set(cacheKey, tupes, 30*60) nodes = [] try: for mname, nodeType in tupes: if nodeType == 'L': reader = KairosdbReader(KAIROSDB_URL, mname) nodes.append(self.getLeafNode(mname, reader, avoidIntervals=True)) elif nodeType == 'B': nodes.append(BranchNode(mname)) else: assert False, "KairosDBFinder.find_nodes(): ERROR: got wrong node type back from nodeType: %s" % (nodeType) except Exception as e: tb = traceback.format_exc() log.info("finders.KairosDBFinder.find_nodes(%s) EXCEPTION: e: %s, %s, tupes: %s." % (query, e, tb, tupes)) if 0: log.info("finders.KairosDBFinder.find_nodes(%s) saving data! %d nodes." % (query.pattern, len(nodes))) if 0: log.info("finders.KairosDBFinder.find_nodes(%s) nodes to save: %s" % (query.pattern, nodes)) delay = time.time() - timeStart log.info("KairosDBFinder.find_nodes(): kdbFindNodesDelay: %05.08f #tupes: %s query: %s" % (delay, len(tupes), query)) return nodes
def __init__(self): self.mt = MetricType() self.mt.openConnection()