mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
stackdriver: add resource types query
This commit is contained in:
parent
cb0d563aae
commit
b3edad40a9
@ -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 [];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,10 @@ export class StackdriverTemplateQueryComponent extends PureComponent<TemplateQue
|
||||
this.setState({ metricDescriptors });
|
||||
}
|
||||
|
||||
isLabelQuery(queryType) {
|
||||
return ['metricLabels', 'resourceLabels'].indexOf(queryType) !== -1;
|
||||
}
|
||||
|
||||
async loadTimeSeriesData() {
|
||||
const refId = 'StackdriverTemplateQueryComponent';
|
||||
const response = await this.props.datasource.getLabels(this.state.metricType, refId);
|
||||
@ -52,10 +56,6 @@ export class StackdriverTemplateQueryComponent extends PureComponent<TemplateQue
|
||||
}
|
||||
}
|
||||
|
||||
isLabelQuery(queryType) {
|
||||
return ['metricLabels', 'resourceLabels'].indexOf(queryType) !== -1;
|
||||
}
|
||||
|
||||
handleQueryTypeChange(event) {
|
||||
this.setState({ type: event.target.value });
|
||||
if (this.isLabelQuery(event.target.value)) {
|
||||
@ -87,6 +87,31 @@ export class StackdriverTemplateQueryComponent extends PureComponent<TemplateQue
|
||||
this.props.onChange(queryModel);
|
||||
}
|
||||
|
||||
switchMetaType(queryType) {
|
||||
switch (queryType) {
|
||||
case 'resourceLabels':
|
||||
return (
|
||||
<SimpleDropdown
|
||||
value={this.state.resourceLabelKey}
|
||||
options={this.state.resourceLabels}
|
||||
onValueChange={this.onResourceLabelKeyChange}
|
||||
label="Resource Labels"
|
||||
/>
|
||||
);
|
||||
case 'metricLabels':
|
||||
return (
|
||||
<SimpleDropdown
|
||||
value={this.state.metricLabelKey}
|
||||
options={this.state.metricLabels}
|
||||
onValueChange={this.onMetricLabelKeyChange}
|
||||
label="Metric Labels"
|
||||
/>
|
||||
);
|
||||
default:
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
renderSwitch(queryType) {
|
||||
switch (queryType) {
|
||||
case 'metricTypes':
|
||||
@ -95,22 +120,8 @@ export class StackdriverTemplateQueryComponent extends PureComponent<TemplateQue
|
||||
);
|
||||
case 'metricLabels':
|
||||
case 'resourceLabels':
|
||||
const dropdown =
|
||||
queryType === 'resourceLabels' ? (
|
||||
<SimpleDropdown
|
||||
value={this.state.resourceLabelKey}
|
||||
options={this.state.resourceLabels}
|
||||
onValueChange={this.onResourceLabelKeyChange}
|
||||
label="Resource Labels"
|
||||
/>
|
||||
) : (
|
||||
<SimpleDropdown
|
||||
value={this.state.metricLabelKey}
|
||||
options={this.state.metricLabels}
|
||||
onValueChange={this.onMetricLabelKeyChange}
|
||||
label="Metric Labels"
|
||||
/>
|
||||
);
|
||||
case 'resourceTypes':
|
||||
const dropdown = this.switchMetaType(queryType);
|
||||
return (
|
||||
<React.Fragment>
|
||||
<ServiceSelector metricDescriptors={this.state.metricDescriptors} onServiceChange={this.onServiceChange} />
|
||||
|
Loading…
Reference in New Issue
Block a user