Exemplo n.º 1
0
def post_alarm(request):
    '''
    Post new alarms through ceilometer API.
    Notice: This api is protected by csrf_protect. 'X-csrf-token' should be added to request headers .
    :param request:
    :return: (JSON) Result of posting new alarm.
                     Return state: 'success' or 'error'
    '''
    token_id = request.session['token'].id
    new_ceilometer_api = CeilometerApi(token_id)

    if request.method == 'POST':
        kwargs = sanitize_arguments(_request_GET_to_dict(request.POST, False),
                                    capabilities.ALARM_CAPABILITIES)
        q = []
        try:
            q[0] = {}
            q[0]['value'] = kwargs.pop('resource_id')
            q[0]['field'] = 'resource_id'
            q[0]['op'] = 'eq'
        except NameError:
            q[0] = {}
        finally:
            kwargs['q'] = q
            result = {}
            try:
                new_ceilometer_api.post_threshold_alarm(**kwargs)
                result['status'] = 'success'
                return HttpResponse(json.dumps(result),
                                    content_type='application/json')
            except (err.ClientSideError, err.ServerSideError), e:
                return _report_error(e.message)
Exemplo n.º 2
0
def get_alarms(request):
    '''
    Fetch alarms for a query.
    Filter options supported by Ceilometer includes:
        name: alarm name, user: user_id, project: project_id, meter: meter_name
        enabled, state, alarm_id, alarm_type
    Additional filter enabled by editing pymongo_base:
        resource: resource_id
    :param request:
    :return:
    '''
    arrays, filters = _request_GET_to_dict(request.GET)
    filters = sanitize_arguments(filters, capabilities.ALARM_LIST_CAPABILITIES)
    token_id = request.session['token'].id
    new_ceilometer_api = CeilometerApi(token_id)

    try:
        result = {}
        result['status'] = 'success'
        result['data'] = new_ceilometer_api.get_alarms(**filters)
        result['recordsTotal'] = len(result['data'])
        result['recordsFiltered'] = len(result['data'])
        print 'success'
        return HttpResponse(json.dumps(result),
                            content_type='application/json')
    except (err.ClientSideError, err.ServerSideError), e:
        print 'fail'
        return _report_error(e.message)
Exemplo n.º 3
0
def get_alarms(request):
    '''
    Fetch alarms for a query.
    Filter options supported by Ceilometer includes:
        name: alarm name, user: user_id, project: project_id, meter: meter_name
        enabled, state, alarm_id, alarm_type
    Additional filter enabled by editing pymongo_base:
        resource: resource_id
    :param request:
    :return:
    '''
    arrays, filters = _request_GET_to_dict(request.GET)
    filters = sanitize_arguments(filters, capabilities.ALARM_LIST_CAPABILITIES)
    token_id = request.session['token'].id
    new_ceilometer_api = CeilometerApi(token_id)

    try:
        result = {}
        result['status'] = 'success'
        result['data'] = new_ceilometer_api.get_alarms(**filters)
        result['recordsTotal'] = len(result['data'])
        result['recordsFiltered'] = len(result['data'])
        print 'success'
        return HttpResponse(json.dumps(result), content_type='application/json')
    except (err.ClientSideError, err.ServerSideError), e:
        print 'fail'
        return _report_error(e.message)
Exemplo n.º 4
0
def post_alarm(request):
    '''
    Post new alarms through ceilometer API.
    Notice: This api is protected by csrf_protect. 'X-csrf-token' should be added to request headers .
    :param request:
    :return: (JSON) Result of posting new alarm.
                     Return state: 'success' or 'error'
    '''
    token_id = request.session['token'].id
    new_ceilometer_api = CeilometerApi(token_id)

    if request.method == 'POST':
        kwargs = sanitize_arguments(_request_GET_to_dict(request.POST, False),
                                    capabilities.ALARM_CAPABILITIES)
        q = []
        try:
            q[0] = {}
            q[0]['value'] = kwargs.pop('resource_id')
            q[0]['field'] = 'resource_id'
            q[0]['op'] = 'eq'
        except NameError:
            q[0] = {}
        finally:
            kwargs['q'] = q
            result = {}
            try:
                new_ceilometer_api.post_threshold_alarm(**kwargs)
                result['status'] = 'success'
                return HttpResponse(json.dumps(result), content_type='application/json')
            except (err.ClientSideError, err.ServerSideError), e:
                return _report_error(e.message)
Exemplo n.º 5
0
def get_resources(request):
    '''
    Get resource list through Ceilometer API
    :param request: Django request object
    :return:
    '''
    arrays, filters = _request_GET_to_dict(request.GET)
    filters = sanitize_arguments(filters, capabilities.RESOURCE_LIST_CAPABILITIES)
    token_id = request.session['token'].id
    new_ceilometer_api = CeilometerApi(token_id)
    try:
        result = ceilometer_api.get_resources(token_id, **filters)
        return HttpResponse(json.dumps(result), content_type='application/json')
    except (err.ClientSideError, err.ServerSideError), e:
        return _report_error(e.message)
Exemplo n.º 6
0
def get_resources(request):
    '''
    Get resource list through Ceilometer API
    :param request: Django request object
    :return:
    '''
    arrays, filters = _request_GET_to_dict(request.GET)
    filters = sanitize_arguments(filters,
                                 capabilities.RESOURCE_LIST_CAPABILITIES)
    token_id = request.session['token'].id
    new_ceilometer_api = CeilometerApi(token_id)
    try:
        result = ceilometer_api.get_resources(token_id, **filters)
        return HttpResponse(json.dumps(result),
                            content_type='application/json')
    except (err.ClientSideError, err.ServerSideError), e:
        return _report_error(e.message)
Exemplo n.º 7
0
        # argument 'q' is designed for supporting complex query, which have not
        # been implement on the back-end side. Thus, we unpack 'q' into
        # simple query form.
        # Example: q: {'resource_id': 'computer001'}
        # Output:  filter['resource_id'] = 'computer001'
        try:
            if 'q' in args:
                for query_item in args['q']:
                    filters[query_item['field']] = query_item['value']
        except KeyError, e:
            # Currently malformated query objects(q) are ignored.
            pass
            #return _report_error('KeyError', e)

    filters = sanitize_arguments(filters, capabilities.METER_LIST_CAPABILITIES)
    result = {}
    try:
        result['data'] = new_ceilometer_api.get_meters(**filters)
    except (err.ClientSideError, err.ServerSideError), e:
        return _report_error(e.message)

    _update_total_meters_count(request, filters)

    result['recordsTotal'] = request.session['total_meters_count']
    result['recordsFiltered'] = request.session['total_meters_count']
    return HttpResponse(json.dumps(result), content_type='application/json')


@decorators.login_required
def get_predict_meters(request):
Exemplo n.º 8
0
        # argument 'q' is designed for supporting complex query, which have not
        # been implement on the back-end side. Thus, we unpack 'q' into
        # simple query form.
        # Example: q: {'resource_id': 'computer001'}
        # Output:  filter['resource_id'] = 'computer001'
        try:
            if 'q' in args:
                for query_item in args['q']:
                    filters[query_item['field']] = query_item['value']
        except KeyError, e:
            # Currently malformated query objects(q) are ignored.
            pass
            #return _report_error('KeyError', e)

    filters = sanitize_arguments(filters, capabilities.METER_LIST_CAPABILITIES)
    result = {}
    try:
        result['data'] = new_ceilometer_api.get_meters(**filters)
    except (err.ClientSideError, err.ServerSideError), e:
        return _report_error(e.message)

    _update_total_meters_count(request, filters)

    result['recordsTotal'] = request.session['total_meters_count']
    result['recordsFiltered'] = request.session['total_meters_count']
    return HttpResponse(json.dumps(result), content_type='application/json')


@decorators.login_required
def get_predict_meters(request):