diff --git a/public/app/plugins/datasource/stackdriver/StackdriverMetricFindQuery.ts b/public/app/plugins/datasource/stackdriver/StackdriverMetricFindQuery.ts index 5b7c5fd2bf8..83fe2094a82 100644 --- a/public/app/plugins/datasource/stackdriver/StackdriverMetricFindQuery.ts +++ b/public/app/plugins/datasource/stackdriver/StackdriverMetricFindQuery.ts @@ -13,6 +13,8 @@ export default class StackdriverMetricFindQuery { case 'metricLabels': case 'resourceLabels': return this.handleLabelQueryType(query); + case 'resourceTypes': + return this.handleResourceType(query); default: return []; } @@ -40,11 +42,23 @@ export default class StackdriverMetricFindQuery { })); } - async handleLabelQueryType({ type, metricType, metricLabelKey, resourceLabelKey }) { + getLabelKey({ type, metricLabelKey, resourceLabelKey }) { + switch (type) { + case 'metricLabels': + return metricLabelKey; + break; + case 'resourceLabels': + return resourceLabelKey; + default: + return ''; + } + } + + async handleLabelQueryType({ type, metricType, metricLabelKey, resourceLabelKey, resourceTypeKey }) { if (!metricType) { return []; } - const key = type === 'metricLabels' ? metricLabelKey : resourceLabelKey; + const key = this.getLabelKey({ type, metricLabelKey, resourceLabelKey }); const refId = 'handleLabelsQueryType'; const response = await this.datasource.getLabels(metricType, refId); if (!has(response, `meta.${type}.${key}`)) { @@ -55,4 +69,20 @@ export default class StackdriverMetricFindQuery { expandable: true, })); } + + async handleResourceType({ metricType }) { + if (!metricType) { + return []; + } + try { + const refId = 'handleResourceTypeQueryType'; + const response = await this.datasource.getLabels(metricType, refId); + return response.meta.resourceTypes.map(s => ({ + text: s, + expandable: true, + })); + } catch (error) { + return []; + } + } } diff --git a/public/app/plugins/datasource/stackdriver/components/TemplateQueryComponent.tsx b/public/app/plugins/datasource/stackdriver/components/TemplateQueryComponent.tsx index c4c7487e029..3d1bef0aa15 100644 --- a/public/app/plugins/datasource/stackdriver/components/TemplateQueryComponent.tsx +++ b/public/app/plugins/datasource/stackdriver/components/TemplateQueryComponent.tsx @@ -44,6 +44,10 @@ export class StackdriverTemplateQueryComponent extends PureComponent + ); + case 'metricLabels': + return ( + + ); + default: + return ''; + } + } + renderSwitch(queryType) { switch (queryType) { case 'metricTypes': @@ -95,22 +120,8 @@ export class StackdriverTemplateQueryComponent extends PureComponent - ) : ( - - ); + case 'resourceTypes': + const dropdown = this.switchMetaType(queryType); return (