def get_host_data_mongo(request): unis_id = urllib.unquote(request.GET.get('id', '')) t = request.GET.get('t', 300) try: t = int(t) except: return HttpResponseBadRequest("Time (t) must be an integer.") if not unis_id: return HttpResponseBadRequest("UNIS is is not defined.") event_types = ['http://ggf.org/ns/nmwg/tools/ganglia/network/utilization/bytes/sent/2.0', 'http://ggf.org/ns/nmwg/tools/ganglia/network/utilization/bytes/received/2.0', 'http://ggf.org/ns/nmwg/tools/ganglia/memory/main/free/2.0', 'http://ggf.org/ns/nmwg/tools/ganglia/cpu/utilization/system/2.0'] time_delta = timedelta(0, t) measurements = query_measurements(unis_id, event_types, None, {'time': { '$gte': datetime.now() - time_delta, '$lte': datetime.now() }}) values = "" labels = "" result = {"identifier": "urn", "idAttribute": "event_type", "label": "timestamps", "items": []} for meta_id, meta in measurements['meta'].items(): event = meta['event_type'] tmp = {'urn': meta['unis_id'], 'event_type': event, "values":[], 'timestamps': []} for data in measurements['data'][meta_id]: tmp['values'].append(data['value']) tmp['timestamps'].append(data['time']) result['items'].append(tmp) dthandler = lambda obj: obj.isoformat() if isinstance(obj, datetime) else None return HttpResponse(json.dumps(result, default=dthandler), mimetype="text/plain")
def get_perfometer_data(request): """ Return total Tx and Rx per site to used on ther perfometers """ urn = urllib.unquote(request.GET['urn']) if not urn: return HttpResponseBadRequest("URN is not defined") ganglia_sent = 'http://ggf.org/ns/nmwg/tools/ganglia/network/utilization/bytes/2.0' ganglia_recv = 'http://ggf.org/ns/nmwg/tools/ganglia/network/utilization/bytes/received/2.0' time_delta = timedelta(0, 60) measurements = query_measurements(urn, [ganglia_sent, ganglia_recv], None, {'time': { '$gte': datetime.now() - time_delta, '$lte': datetime.now() }}) values = "" labels = "" result = {"identifier": "event_type", "idAttribute": "event_type", "label": "timestamps", "items": []} for meta_id, meta in measurements['meta'].items(): event = meta['event_type'] tmp = {'urn': meta['unis_id'], 'event_type': event, "values":[], 'timestamps': []} for data in measurements['data'][meta_id]: tmp['values'].append(data['value']) tmp['timestamps'].append(data['time']) result['items'].append(tmp) dthandler = lambda obj: obj.isoformat() if isinstance(obj, datetime) else None return HttpResponse(json.dumps(result, default=dthandler), mimetype="text/plain")
def get_measurements_data_mongo(request): unis_id = urllib.unquote(request.GET.get('id', '')) event = request.GET.get('event', None) t = request.GET.get('t', 1800) if event and event[-1] == '/': event = event[:-1] try: t = int(t) except: return HttpResponseBadRequest("Time (t) must be an integer.") ganglia_sent = 'http://ggf.org/ns/nmwg/tools/ganglia/network/utilization/bytes/2.0' ganglia_recv = 'http://ggf.org/ns/nmwg/tools/ganglia/network/utilization/bytes/received/2.0' events_map = {} events_map[events.NET_DISCARD] = [events.NET_DISCARD_RECV, events.NET_DISCARD_SENT] events_map[events.NET_ERROR] = [events.NET_ERROR_RECV, events.NET_ERROR_SENT] if unis_id.find('escps') >=0: events_map[events.NET_UTILIZATION] = [ganglia_sent, ganglia_recv] else: events_map[events.NET_UTILIZATION] = [events.NET_UTILIZATION_RECV, events.NET_UTILIZATION_SENT] if not unis_id: return HttpResponseBadRequest("UNIS is is not defined.") if not event: return HttpResponseBadRequest("Event type is is not defined.") if event not in events_map: return HttpResponseBadRequest("Invalid Event type: " + event) time_delta = timedelta(0, t) measurements = query_measurements(unis_id, events_map[event], None, {'time': { '$gte': datetime.now() - time_delta, '$lte': datetime.now() }}) values = "" labels = "" result = {"identifier": "event_type", "idAttribute": "event_type", "label": "timestamps", "items": []} for meta_id, meta in measurements['meta'].items(): if meta['event_type'] == ganglia_sent: event = events.NET_UTILIZATION_SENT elif meta['event_type'] == ganglia_recv: event = events.NET_UTILIZATION_RECV else: event = meta['event_type'] tmp = {'urn': meta['unis_id'], 'event_type': event, "values":[], 'timestamps': []} for data in measurements['data'][meta_id]: tmp['values'].append(data['value']) tmp['timestamps'].append(data['time']) result['items'].append(tmp) dthandler = lambda obj: obj.isoformat() if isinstance(obj, datetime) else None return HttpResponse(json.dumps(result, default=dthandler), mimetype="text/plain")