diff --git a/src/datasource/hastic_api.ts b/src/datasource/hastic_api.ts index 4c9b836..7c281b5 100644 --- a/src/datasource/hastic_api.ts +++ b/src/datasource/hastic_api.ts @@ -1,5 +1,6 @@ import { BackendSrv } from 'grafana/app/core/services/backend_srv'; + export default class HasticAPI { private url: string; diff --git a/src/panel/graph_panel/controllers/analytic_controller.ts b/src/panel/graph_panel/controllers/analytic_controller.ts index 4abb753..56e2110 100644 --- a/src/panel/graph_panel/controllers/analytic_controller.ts +++ b/src/panel/graph_panel/controllers/analytic_controller.ts @@ -12,7 +12,7 @@ import { DatasourceRequest } from '../models/datasource'; import { Segment, SegmentId } from '../models/segment'; import { SegmentsSet } from '../models/segment_set'; import { SegmentArray } from '../models/segment_array'; -import { ServerInfo, ServerInfoUnknown } from '../models/info'; +import { HasticServerInfo, HasticServerInfoUnknown } from '../models/hastic_server_info'; import { Threshold, Condition } from '../models/threshold'; import text from '../partials/help_section.html'; @@ -43,7 +43,7 @@ export class AnalyticController { private _tempIdCounted: number = -1; private _graphLocked: boolean = false; private _statusRunners: Set = new Set(); - private _serverInfo: ServerInfo; + private _serverInfo: HasticServerInfo; private _currentMetric: MetricExpanded; private _currentDatasource: DatasourceRequest; private _thresholds: Threshold[]; @@ -477,7 +477,7 @@ export class AnalyticController { public async updateServerInfo() { if(!this._analyticService) { - this._serverInfo = ServerInfoUnknown; + this._serverInfo = HasticServerInfoUnknown; return; } this._serverInfo = await this._analyticService.getServerInfo(); diff --git a/src/panel/graph_panel/graph_ctrl.ts b/src/panel/graph_panel/graph_ctrl.ts index e6e5332..0835c19 100644 --- a/src/panel/graph_panel/graph_ctrl.ts +++ b/src/panel/graph_panel/graph_ctrl.ts @@ -10,7 +10,7 @@ import { DatasourceRequest } from './models/datasource'; import { AnalyticUnitId, AnalyticUnit, LabelingMode } from './models/analytic_unit'; import { AnalyticService } from './services/analytic_service'; import { AnalyticController } from './controllers/analytic_controller'; -import { PanelInfo } from './models/info'; +import { HasticPanelInfo } from './models/hastic_panel_info'; import { axesEditorComponent } from './axes_editor'; @@ -47,7 +47,7 @@ class GraphCtrl extends MetricsPanelCtrl { _graphRenderer: GraphRenderer; _graphLegend: GraphLegend; - _panelInfo: PanelInfo; + _panelInfo: HasticPanelInfo; private _analyticUnitTypes: any; private _hasticDatasources: any[]; @@ -183,14 +183,18 @@ class GraphCtrl extends MetricsPanelCtrl { this.rebindKeys(); } - getHasticDatasourceURL(): string | undefined { + getHasticDatasource(): { url: string, name: string } | undefined { const hasticDatasourceId = this.panel.hasticDatasource; if(hasticDatasourceId !== undefined && hasticDatasourceId !== null) { const hasticDatasource = _.find(this._hasticDatasources, { id: hasticDatasourceId }); + let url = hasticDatasource.url; if(hasticDatasource.access === 'proxy') { - return `/api/datasources/proxy/${hasticDatasource.id}`; + url = `/api/datasources/proxy/${hasticDatasource.id}` + } + return { + url, + name: hasticDatasource.name } - return hasticDatasource.url; } return undefined; } @@ -296,11 +300,11 @@ class GraphCtrl extends MetricsPanelCtrl { this.processor = new DataProcessor(this.panel); await this._fetchHasticDatasources(); - const hasticDatasourceURL = this.getHasticDatasourceURL(); - if(hasticDatasourceURL === undefined) { + let hasticDatasource = this.getHasticDatasource(); + if(hasticDatasource === undefined) { delete this.analyticService; } else { - this.analyticService = new AnalyticService(hasticDatasourceURL, this.$http); + this.analyticService = new AnalyticService(hasticDatasource.url, this.$http); this.runDatasourceConnectivityCheck(); } @@ -651,7 +655,7 @@ class GraphCtrl extends MetricsPanelCtrl { datasource = await this._getDatasourceByName(this.panel.datasource); } - const backendUrl = this.getHasticDatasourceURL(); + const hasticDatasource = this.getHasticDatasource(); let grafanaVersion = 'unknown'; if(_.has(window, 'grafanaBootData.settings.buildInfo.version')) { @@ -660,8 +664,10 @@ class GraphCtrl extends MetricsPanelCtrl { this._panelInfo = { grafanaVersion, grafanaUrl: window.location.host, + datasourceName: datasource === undefined ? 'unknown' : datasource.name, datasourceType: datasource === undefined ? 'unknown' : datasource.type, - hasticServerUrl: backendUrl + hasticDatasourceName: datasource === undefined ? 'unknown' : hasticDatasource.name, + hasticDatasourceUrl: hasticDatasource === undefined ? 'unknown' : hasticDatasource.url }; } diff --git a/src/panel/graph_panel/models/hastic_panel_info.ts b/src/panel/graph_panel/models/hastic_panel_info.ts new file mode 100644 index 0000000..6973c58 --- /dev/null +++ b/src/panel/graph_panel/models/hastic_panel_info.ts @@ -0,0 +1,8 @@ +export type HasticPanelInfo = { + grafanaVersion: string, + grafanaUrl: string, + datasourceName: string, + datasourceType: string, + hasticDatasourceName: string, + hasticDatasourceUrl: string +} diff --git a/src/panel/graph_panel/models/info.ts b/src/panel/graph_panel/models/hastic_server_info.ts similarity index 67% rename from src/panel/graph_panel/models/info.ts rename to src/panel/graph_panel/models/hastic_server_info.ts index dcb70c2..1817f0f 100644 --- a/src/panel/graph_panel/models/info.ts +++ b/src/panel/graph_panel/models/hastic_server_info.ts @@ -1,28 +1,21 @@ -export type ServerInfo = { - nodeVersion: string, - packageVersion: string, - npmUserAgent: string, - docker: string | boolean, - zmqConectionString: string, - serverPort: string | number, - gitBranch: string, - gitCommitHash: string -} - -export const ServerInfoUnknown: ServerInfo = { - nodeVersion: 'unknown', - packageVersion: 'unknown', - npmUserAgent: 'unknown', - docker: 'unknown', - zmqConectionString: 'unknown', - serverPort: 'unknown', - gitBranch: 'unknown', - gitCommitHash: 'unknown' -}; - -export type PanelInfo = { - grafanaVersion: string, - grafanaUrl: string, - datasourceType: string, - hasticServerUrl: string -} +export type HasticServerInfo = { + nodeVersion: string, + packageVersion: string, + npmUserAgent: string, + docker: string | boolean, + zmqConectionString: string, + serverPort: string | number, + gitBranch: string, + gitCommitHash: string +} + +export const HasticServerInfoUnknown: HasticServerInfo = { + nodeVersion: 'unknown', + packageVersion: 'unknown', + npmUserAgent: 'unknown', + docker: 'unknown', + zmqConectionString: 'unknown', + serverPort: 'unknown', + gitBranch: 'unknown', + gitCommitHash: 'unknown' +}; \ No newline at end of file diff --git a/src/panel/graph_panel/services/analytic_service.ts b/src/panel/graph_panel/services/analytic_service.ts index f7ee951..9dcc73f 100644 --- a/src/panel/graph_panel/services/analytic_service.ts +++ b/src/panel/graph_panel/services/analytic_service.ts @@ -3,7 +3,7 @@ import { MetricExpanded } from '../models/metric'; import { DatasourceRequest } from '../models/datasource'; import { SegmentsSet } from '../models/segment_set'; import { AnalyticUnitId, AnalyticUnit, AnalyticSegment } from '../models/analytic_unit'; -import { ServerInfo, ServerInfoUnknown } from '../models/info'; +import { HasticServerInfo, HasticServerInfoUnknown } from '../models/hastic_server_info'; import { Threshold } from '../models/threshold'; import { appEvents } from 'grafana/app/core/core'; @@ -150,10 +150,10 @@ export class AnalyticService { } } - async getServerInfo(): Promise { + async getServerInfo(): Promise { const data = await this.get('/'); if(data === undefined) { - return ServerInfoUnknown; + return HasticServerInfoUnknown; } return { nodeVersion: data.nodeVersion,