Handle db connection response on the backend
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
import _ from 'lodash';
|
||||
import { getDataSourceSrv } from '@grafana/runtime';
|
||||
import responseHandler from "../../responseHandler";
|
||||
|
||||
export const DEFAULT_QUERY_LIMIT = 10000;
|
||||
export const HISTORY_TO_TABLE_MAP = {
|
||||
@@ -92,10 +93,6 @@ export class DBConnector {
|
||||
getTrends() {
|
||||
throw new ZabbixNotImplemented('getTrends()');
|
||||
}
|
||||
|
||||
handleGrafanaTSResponse(history, items, addHostName = true) {
|
||||
return convertGrafanaTSResponse(history, items, addHostName);
|
||||
}
|
||||
}
|
||||
|
||||
// Define Zabbix DB Connector exception type for non-implemented methods
|
||||
@@ -111,6 +108,12 @@ export class ZabbixNotImplemented {
|
||||
}
|
||||
}
|
||||
|
||||
export function handleDBDataSourceResponse(response, items) {
|
||||
const series = responseHandler.dataResponseToTimeSeries(response, items);
|
||||
// return convertGrafanaTSResponse(series, items, addHostName);
|
||||
return series;
|
||||
}
|
||||
|
||||
/**
|
||||
* Converts time series returned by the data source into format that Grafana expects
|
||||
* time_series is Array of series:
|
||||
@@ -121,7 +124,11 @@ export class ZabbixNotImplemented {
|
||||
* }]
|
||||
* ```
|
||||
*/
|
||||
function convertGrafanaTSResponse(time_series, items, addHostName) {
|
||||
export function convertGrafanaTSResponse(time_series, items, addHostName) {
|
||||
if (time_series.length === 0) {
|
||||
return [];
|
||||
}
|
||||
|
||||
//uniqBy is needed to deduplicate
|
||||
const hosts = _.uniqBy(_.flatten(_.map(items, 'hosts')), 'hostid');
|
||||
let grafanaSeries = _.map(_.compact(time_series), series => {
|
||||
|
||||
@@ -109,7 +109,7 @@ export class SQLConnector extends DBConnector {
|
||||
};
|
||||
|
||||
return getBackendSrv().datasourceRequest({
|
||||
url: '/api/tsdb/query',
|
||||
url: '/api/ds/query',
|
||||
method: 'POST',
|
||||
data: {
|
||||
queries: [queryDef],
|
||||
@@ -118,7 +118,7 @@ export class SQLConnector extends DBConnector {
|
||||
.then(response => {
|
||||
let results = response.data.results;
|
||||
if (results['A']) {
|
||||
return results['A'].series;
|
||||
return results['A'].frames;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ import * as utils from '../utils';
|
||||
import responseHandler from '../responseHandler';
|
||||
import { CachingProxy } from './proxy/cachingProxy';
|
||||
// import { ZabbixNotImplemented } from './connectors/dbConnector';
|
||||
import { DBConnector } from './connectors/dbConnector';
|
||||
import { DBConnector, handleDBDataSourceResponse } from './connectors/dbConnector';
|
||||
import { ZabbixAPIConnector } from './connectors/zabbix_api/zabbixAPIConnector';
|
||||
import { SQLConnector } from './connectors/sql/sqlConnector';
|
||||
import { InfluxDBConnector } from './connectors/influxdb/influxdbConnector';
|
||||
@@ -432,7 +432,7 @@ export class Zabbix implements ZabbixConnector {
|
||||
const [timeFrom, timeTo] = timeRange;
|
||||
if (this.enableDirectDBConnection) {
|
||||
return this.getHistoryDB(items, timeFrom, timeTo, options)
|
||||
.then(history => this.dbConnector.handleGrafanaTSResponse(history, items));
|
||||
.then(history => handleDBDataSourceResponse(history, items));
|
||||
} else {
|
||||
return this.zabbixAPI.getHistory(items, timeFrom, timeTo)
|
||||
.then(history => responseHandler.handleHistory(history, items));
|
||||
@@ -443,7 +443,7 @@ export class Zabbix implements ZabbixConnector {
|
||||
const [timeFrom, timeTo] = timeRange;
|
||||
if (this.enableDirectDBConnection) {
|
||||
return this.getTrendsDB(items, timeFrom, timeTo, options)
|
||||
.then(history => this.dbConnector.handleGrafanaTSResponse(history, items));
|
||||
.then(history => handleDBDataSourceResponse(history, items));
|
||||
} else {
|
||||
const valueType = options.consolidateBy || options.valueType;
|
||||
return this.zabbixAPI.getTrend(items, timeFrom, timeTo)
|
||||
|
||||
Reference in New Issue
Block a user