From 1033f0f905f2e50094be4e37f9b96ec375849f7c Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Tue, 21 May 2019 04:46:19 -0700 Subject: [PATCH] DataSourceMeta: add an option to get hidden queries (#17124) * add an option to get hidden queries * make sure you have meta * supportsHiddenQueries * remove spaces * DataSources: hidden queries flag --- packages/grafana-ui/src/types/datasource.ts | 7 +++++++ pkg/plugins/datasource_plugin.go | 21 ++++++++++--------- .../dashboard/state/PanelQueryRunner.ts | 9 ++++---- .../plugins/datasource/cloudwatch/plugin.json | 1 + .../plugins/datasource/graphite/plugin.json | 1 + 5 files changed, 25 insertions(+), 14 deletions(-) diff --git a/packages/grafana-ui/src/types/datasource.ts b/packages/grafana-ui/src/types/datasource.ts index 36506969117..596e5851cf0 100644 --- a/packages/grafana-ui/src/types/datasource.ts +++ b/packages/grafana-ui/src/types/datasource.ts @@ -85,6 +85,13 @@ export interface DataSourcePluginMeta extends PluginMeta { queryOptions?: PluginMetaQueryOptions; sort?: number; supportsStreaming?: boolean; + + /** + * By default, hidden queries are not passed to the datasource + * Set this to true in plugin.json to have hidden queries passed to the + * DataSource query method + */ + hiddenQueries?: boolean; } interface PluginMetaQueryOptions { diff --git a/pkg/plugins/datasource_plugin.go b/pkg/plugins/datasource_plugin.go index 57dacbe43b5..8c846839eda 100644 --- a/pkg/plugins/datasource_plugin.go +++ b/pkg/plugins/datasource_plugin.go @@ -18,16 +18,17 @@ import ( // DataSourcePlugin contains all metadata about a datasource plugin type DataSourcePlugin struct { FrontendPluginBase - Annotations bool `json:"annotations"` - Metrics bool `json:"metrics"` - Alerting bool `json:"alerting"` - Explore bool `json:"explore"` - Table bool `json:"tables"` - Logs bool `json:"logs"` - QueryOptions map[string]bool `json:"queryOptions,omitempty"` - BuiltIn bool `json:"builtIn,omitempty"` - Mixed bool `json:"mixed,omitempty"` - Routes []*AppPluginRoute `json:"routes"` + Annotations bool `json:"annotations"` + Metrics bool `json:"metrics"` + Alerting bool `json:"alerting"` + Explore bool `json:"explore"` + Table bool `json:"tables"` + HiddenQueries bool `json:"hiddenQueries"` + Logs bool `json:"logs"` + QueryOptions map[string]bool `json:"queryOptions,omitempty"` + BuiltIn bool `json:"builtIn,omitempty"` + Mixed bool `json:"mixed,omitempty"` + Routes []*AppPluginRoute `json:"routes"` Backend bool `json:"backend,omitempty"` Executable string `json:"executable,omitempty"` diff --git a/public/app/features/dashboard/state/PanelQueryRunner.ts b/public/app/features/dashboard/state/PanelQueryRunner.ts index 00f6e3a00f0..b75a538f496 100644 --- a/public/app/features/dashboard/state/PanelQueryRunner.ts +++ b/public/app/features/dashboard/state/PanelQueryRunner.ts @@ -108,9 +108,6 @@ export class PanelQueryRunner { delayStateNotification, } = options; - // filter out hidden queries & deep clone them - const clonedAndFilteredQueries = cloneDeep(queries.filter(q => !q.hide)); - const request: DataQueryRequest = { requestId: getNextRequestId(), timezone, @@ -120,7 +117,7 @@ export class PanelQueryRunner { timeInfo, interval: '', intervalMs: 0, - targets: clonedAndFilteredQueries, + targets: cloneDeep(queries), maxDataPoints: maxDataPoints || widthPixels, scopedVars: scopedVars || {}, cacheTimeout, @@ -135,6 +132,10 @@ export class PanelQueryRunner { try { const ds = await getDataSource(datasource, request.scopedVars); + if (ds.meta && !ds.meta.hiddenQueries) { + request.targets = request.targets.filter(q => !q.hide); + } + // Attach the datasource name to each query request.targets = request.targets.map(query => { if (!query.datasource) { diff --git a/public/app/plugins/datasource/cloudwatch/plugin.json b/public/app/plugins/datasource/cloudwatch/plugin.json index 212bb20a059..2e71355975c 100644 --- a/public/app/plugins/datasource/cloudwatch/plugin.json +++ b/public/app/plugins/datasource/cloudwatch/plugin.json @@ -4,6 +4,7 @@ "id": "cloudwatch", "category": "cloud", + "hiddenQueries": true, "metrics": true, "alerting": true, "annotations": true, diff --git a/public/app/plugins/datasource/graphite/plugin.json b/public/app/plugins/datasource/graphite/plugin.json index f66c7fb202f..01a95727ee7 100644 --- a/public/app/plugins/datasource/graphite/plugin.json +++ b/public/app/plugins/datasource/graphite/plugin.json @@ -6,6 +6,7 @@ "includes": [{ "type": "dashboard", "name": "Graphite Carbon Metrics", "path": "dashboards/carbon_metrics.json" }], + "hiddenQueries": true, "metrics": true, "alerting": true, "annotations": true,