From 98f9dbde957e19762142308254a138ae8d20d78c 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 (cherry picked from commit 1033f0f905f2e50094be4e37f9b96ec375849f7c) --- 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 f918063d06b..9480a61187e 100644 --- a/packages/grafana-ui/src/types/datasource.ts +++ b/packages/grafana-ui/src/types/datasource.ts @@ -80,6 +80,13 @@ export interface DataSourcePluginMeta extends PluginMeta { mixed?: boolean; hasQueryHelp?: boolean; queryOptions?: PluginMetaQueryOptions; + sort?: number; + /** + * 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 dd4ae6972aa..56010067048 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 04c4f9f7a74..05e0ad1c785 100644 --- a/public/app/features/dashboard/state/PanelQueryRunner.ts +++ b/public/app/features/dashboard/state/PanelQueryRunner.ts @@ -97,9 +97,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, @@ -109,7 +106,7 @@ export class PanelQueryRunner { timeInfo, interval: '', intervalMs: 0, - targets: clonedAndFilteredQueries, + targets: cloneDeep(queries), maxDataPoints: maxDataPoints || widthPixels, scopedVars: scopedVars || {}, cacheTimeout, @@ -124,6 +121,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 c131c768880..839569b7984 100644 --- a/public/app/plugins/datasource/cloudwatch/plugin.json +++ b/public/app/plugins/datasource/cloudwatch/plugin.json @@ -3,6 +3,7 @@ "name": "CloudWatch", "id": "cloudwatch", + "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 a28ef8249a1..0496307f3ff 100644 --- a/public/app/plugins/datasource/graphite/plugin.json +++ b/public/app/plugins/datasource/graphite/plugin.json @@ -5,6 +5,7 @@ "includes": [{ "type": "dashboard", "name": "Graphite Carbon Metrics", "path": "dashboards/carbon_metrics.json" }], + "hiddenQueries": true, "metrics": true, "alerting": true, "annotations": true,