示例#1
0
def get_samples(request):
    ''' Get samples of every meter through ceilometer_api
    In a correctly constructed request, all arrays are treated as meters, while
    all independent values are treated as url parameters.
    Example:
        /api/meters/get-samples?limit=10&cpu_util[]=computer001&cpu_util[]=computer002
                                &cpu[]=computer001&skip=2
    Resolved as:
        url_parameters = {'limit': 10, 'skip': 2}
        meters = {'cpu_util': ['computer001', 'computer002'], 'cpu':['computer001']}
    :param request:
    :return:
    '''
    # TODO(pwwp):
    # Apply token management method instead of requesting one each time
    token_id = request.session['token'].id
    new_ceilometer_api = CeilometerApi(token_id)

    meters, kwargs = _request_GET_to_dict(request.GET)
    result = []
    try:
        for meter_name, resource_ids in meters.iteritems():
            for i in range(len(resource_ids)):
                resource_id = resource_ids[i]
                result.append({
                    'meter_name': meter_name,
                    'resource_id': resource_id,
                    'data': new_ceilometer_api.get_samples(meter_name,
                                                           resource_id=resource_id,
                                                           **kwargs)
                })
        return HttpResponse(json.dumps({'data': result}), content_type='application/json')
    except (err.ClientSideError, err.ServerSideError), e:
        return _report_error(e.message)
示例#2
0
def get_samples(request):
    ''' Get samples of every meter through ceilometer_api
    In a correctly constructed request, all arrays are treated as meters, while
    all independent values are treated as url parameters.
    Example:
        /api/meters/get-samples?limit=10&cpu_util[]=computer001&cpu_util[]=computer002
                                &cpu[]=computer001&skip=2
    Resolved as:
        url_parameters = {'limit': 10, 'skip': 2}
        meters = {'cpu_util': ['computer001', 'computer002'], 'cpu':['computer001']}
    :param request:
    :return:
    '''
    # TODO(pwwp):
    # Apply token management method instead of requesting one each time
    token_id = request.session['token'].id
    new_ceilometer_api = CeilometerApi(token_id)

    meters, kwargs = _request_GET_to_dict(request.GET)
    result = []
    try:
        for meter_name, resource_ids in meters.iteritems():
            for i in range(len(resource_ids)):
                resource_id = resource_ids[i]
                result.append({
                    'meter_name':
                    meter_name,
                    'resource_id':
                    resource_id,
                    'data':
                    new_ceilometer_api.get_samples(meter_name,
                                                   resource_id=resource_id,
                                                   **kwargs)
                })
        return HttpResponse(json.dumps({'data': result}),
                            content_type='application/json')
    except (err.ClientSideError, err.ServerSideError), e:
        return _report_error(e.message)