| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 |
- #!/usr/bin/env python
- # -- coding: utf-8 --
- # Licensed to Cloudera, Inc. under one
- # or more contributor license agreements. See the NOTICE file
- # distributed with this work for additional information
- # regarding copyright ownership. Cloudera, Inc. licenses this file
- # to you under the Apache License, Version 2.0 (the
- # "License"); you may not use this file except in compliance
- # with the License. You may obtain a copy of the License at
- #
- # http://www.apache.org/licenses/LICENSE-2.0
- #
- # Unless required by applicable law or agreed to in writing, software
- # distributed under the License is distributed on an "AS IS" BASIS,
- # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- # See the License for the specific language governing permissions and
- # limitations under the License.
- import json
- import logging
- from django.utils.html import escape
- from django.utils.translation import ugettext as _
- from django.views.decorators.http import require_POST
- from desktop.lib.django_util import JsonResponse
- from desktop.lib.i18n import force_unicode
- from metadata.prometheus_client import PrometheusApi
- LOG = logging.getLogger(__name__)
- def error_handler(view_fn):
- def decorator(*args, **kwargs):
- try:
- return view_fn(*args, **kwargs)
- except Exception, e:
- LOG.exception(e)
- response = {
- 'status': -1,
- 'message': force_unicode(str(e))
- }
- return JsonResponse(response, status=500)
- return decorator
- @error_handler
- @require_POST
- def query(request):
- response = {
- 'status': 0
- }
- api = PrometheusApi(request.user)
- query = json.loads(request.POST.get('query', '{}'))
- if request.POST.get('start'):
- response['data'] = api.range_query(query, start=request.POST.get('start'), end=request.POST.get('end'), step=request.POST.get('step'))
- else:
- response['data'] = api.query(query)
- return JsonResponse(response)
|