Browse Source

HUE-8672 [core] Provide an entry point to the Prometheus API

e.g.
     $.post("/metadata/api/prometheus/query", {
        "query": ko.mapping.toJSON("kube_node_status_capacity_cpu_cores"),
      }, function(data) {
        console.log(ko.mapping.toJSON(data));
      });
Romain Rigaux 7 years ago
parent
commit
3bab502

+ 2 - 1
desktop/libs/metadata/src/metadata/prometheus_api.py

@@ -16,6 +16,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+import json
 import logging
 
 from django.utils.html import escape
@@ -53,7 +54,7 @@ def query(request):
   }
   api = PrometheusApi(request.user)
 
-  query = request.POST.get('query')
+  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'), steps=request.POST.get('steps'))

+ 1 - 8
desktop/libs/metadata/src/metadata/prometheus_client.py

@@ -16,9 +16,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import json
 import logging
-import urllib
 
 from django.core.cache import cache
 from django.utils.translation import ugettext as _
@@ -47,17 +45,12 @@ class PrometheusApiException(Exception):
 
 class PrometheusApi(object):
 
-  def __init__(self, user=None, security_enabled=False, ssl_cert_ca_verify=False):
+  def __init__(self, user=None, ssl_cert_ca_verify=False):
     self._api_url = '%s/%s' % (PROMETHEUS.API_URL.get().strip('/'), VERSION)
 
     self.user = user
     self._client = HttpClient(self._api_url, logger=LOG)
 
-    if security_enabled:
-      self._client.set_kerberos_auth()
-    else:
-      self._client.set_basic_auth(self._username, self._password)
-
     self._client.set_verify(ssl_cert_ca_verify)
     self._root = Resource(self._client)
 

+ 7 - 1
desktop/libs/metadata/src/metadata/urls.py

@@ -17,7 +17,7 @@
 
 from django.conf.urls import url
 
-from metadata import catalog_api as metadata_catalog_api, analytic_db_api, dataeng_api
+from metadata import catalog_api as metadata_catalog_api, analytic_db_api, dataeng_api, prometheus_api
 from metadata import optimizer_api as metadata_optimizer_api
 from metadata import workload_analytics_api as metadata_workload_analytics_api
 from metadata import manager_api as metadata_manager_api
@@ -85,6 +85,12 @@ urlpatterns += [
 ]
 
 
+# Prometheus API
+urlpatterns += [
+  url(r'^api/prometheus/query?$', prometheus_api.query, name='prometheus_query'),
+]
+
+
 # Altus API
 urlpatterns += [
   url(r'^api/analytic_db/create_cluster/?$', analytic_db_api.create_cluster, name='create_cluster'),