Просмотр исходного кода

Stackdriver: Use metric type from query controller state

Erik Sundell 7 лет назад
Родитель
Сommit
2d52e5d26c
1 измененных файлов с 15 добавлено и 5 удалено
  1. 15 5
      public/app/plugins/datasource/stackdriver/datasource.ts

+ 15 - 5
public/app/plugins/datasource/stackdriver/datasource.ts

@@ -13,13 +13,12 @@ export default class StackdriverDatasource {
 
   async query(options) {
     const queries = options.targets.filter(target => !target.hide).map(t => ({
-      queryType: 'raw',
       refId: t.refId,
       datasourceId: this.id,
-      metric: t.metricType,
+      metricType: `metric.type="${t.metricType}"`,
     }));
     try {
-      const response = await this.backendSrv.datasourceRequest({
+      const { data } = await this.backendSrv.datasourceRequest({
         url: '/api/tsdb/query',
         method: 'POST',
         data: {
@@ -28,7 +27,18 @@ export default class StackdriverDatasource {
           queries,
         },
       });
-      return response;
+
+      const result = [];
+
+      if (data.results) {
+        Object['values'](data.results).forEach(queryRes => {
+          queryRes.series.forEach(series => {
+            result.push({ target: series.name, datapoints: series.points });
+          });
+        });
+      }
+
+      return { data: result };
     } catch (error) {
       console.log(error);
     }
@@ -77,7 +87,7 @@ export default class StackdriverDatasource {
     try {
       const metricsApiPath = `v3/projects/${projectId}/metricDescriptors`;
       const { data } = await this.doRequest(`${this.baseUrl}${metricsApiPath}`);
-      return data.metricDescriptors.map(m => ({ id: m.name, name: m.displayName }));
+      return data.metricDescriptors.map(m => ({ id: m.type, name: m.displayName }));
     } catch (error) {
       console.log(error);
     }