Esempio n. 1
0
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")
Esempio n. 2
0
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")
Esempio n. 3
0
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")