def tree_indexes(self, oid): """Return OIDs mathcing prefix Return OID tree indexes matching provided OID from self.trees """ oid = self.tree_key(oid) try: return map(lambda k: k.split('.')[-1], sorted( self.trees[oid].keys(), lambda x, y: cmp_oid(x, y) )) except KeyError: raise SNMPError('Tree not loaded: {0}'.format(oid))
def tree(self,oid, refetch=False, indexed=False): """Walk and store tree to self.trees Wrapper to self.walk to store tree results to self.trees for further processing """ tree_id = self.tree_key(oid) if not refetch and tree_id in self.trees: tree = self.trees[tree_id] else: try: tree = self.walk(oid) self.trees[tree_id] = tree except CarrierError as e: raise SNMPError(str(e)) except SNMPError as e: raise SNMPError(str(e)) if indexed is True: keys = sorted(tree.keys(), lambda x, y: cmp_oid(x, y)) return [(k.lstrip('.').split('.')[-1], tree[k]) for k in keys] else: return tree