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 (