def get_tag_names(domain): """Returns a list of all tag names. """ if not authorized(request, domain, 'r'): return 'Forbidden', 403, [] return (json.dumps({'results': [name for name in datastore.get_tag_names(domain)]}), 200, [])
def add_datapoints(domain): """Records metric data points. """ if not authorized(request, domain, 'w'): return 'Forbidden', 403, [] for dps in DataPointSet.from_json_object(request.get_json()): datastore.put_data_points(dps, domain) return '', 204, []
def query_metric_tags(domain): """Same as the query but it leaves off the data and just returns the tag information. """ if not authorized(request, domain, 'r'): return 'Forbidden', 403, [] return (json.dumps({'results': [{ 'name': query.name, 'tags': datastore.query_metric_tags(query, domain) } for query in QueryMetric.from_json_object(request.get_json())]}), 200, [])
def query_database(domain): """Returns a list of metric values based on a set of criteria. Also returns a set of all tag names and values that are found across the data points. """ if not authorized(request, domain, 'r'): return 'Forbidden', 403, [] # spawn all threads gather_threads = [datastore.query_database(query, QueryMetric.create_callback(query), domain) \ for query in QueryMetric.from_json_object(request.get_json())] return (json.dumps({'queries': [{ 'sample_size': result.sample_size, 'results': result.results } for result in [t.get_result() for t in gather_threads]]}), 200, [])