Commit ca77cdc3 by Erik Sundell

stackdriver: add aggregation query

parent b1db0778
......@@ -2,6 +2,7 @@ import {
extractServicesFromMetricDescriptors,
getMetricTypesByService,
getAlignmentOptionsByMetric,
getAggregationOptionsByMetric,
} from './functions';
import { alignmentPeriods } from './constants';
import has from 'lodash/has';
......@@ -24,6 +25,8 @@ export default class StackdriverMetricFindQuery {
return this.handleAlignersType(query);
case 'alignmentPeriods':
return this.handleAlignmentPeriodType();
case 'aggregations':
return this.handleAggregationType(query);
default:
return [];
}
......@@ -107,6 +110,18 @@ export default class StackdriverMetricFindQuery {
}));
}
async handleAggregationType({ metricType }) {
if (!metricType) {
return [];
}
const metricDescriptors = await this.datasource.getMetricTypes(this.datasource.projectName);
const { valueType, metricKind } = metricDescriptors.find(m => m.type === metricType);
return getAggregationOptionsByMetric(valueType, metricKind).map(o => ({
...o,
expandable: true,
}));
}
handleAlignmentPeriodType() {
return alignmentPeriods.map(s => ({
...s,
......
......@@ -134,6 +134,7 @@ export class StackdriverTemplateQueryComponent extends PureComponent<TemplateQue
</React.Fragment>
);
case 'alignerns':
case 'aggregations':
return (
<React.Fragment>
<ServiceSelector metricDescriptors={this.state.metricDescriptors} onServiceChange={this.onServiceChange} />
......
import { alignOptions } from './constants';
import { alignOptions, aggOptions } from './constants';
import uniqBy from 'lodash/uniqBy';
export const extractServicesFromMetricDescriptors = metricDescriptors => uniqBy(metricDescriptors, 'service');
......@@ -13,3 +13,11 @@ export const getAlignmentOptionsByMetric = (metricValueType, metricKind) => {
return i.valueTypes.indexOf(metricValueType) !== -1 && i.metricKinds.indexOf(metricKind) !== -1;
});
};
export const getAggregationOptionsByMetric = (valueType, metricKind) => {
return !metricKind
? []
: aggOptions.filter(i => {
return i.valueTypes.indexOf(valueType) !== -1 && i.metricKinds.indexOf(metricKind) !== -1;
});
};
import coreModule from 'app/core/core_module';
import _ from 'lodash';
import * as options from './constants';
import { getAlignmentOptionsByMetric } from './functions';
import { getAlignmentOptionsByMetric, getAggregationOptionsByMetric } from './functions';
import kbn from 'app/core/utils/kbn';
export class StackdriverAggregation {
......@@ -49,13 +49,7 @@ export class StackdriverAggregationCtrl {
}
setAggOptions() {
this.aggOptions = !this.target.metricKind
? []
: options.aggOptions.filter(i => {
return (
i.valueTypes.indexOf(this.target.valueType) !== -1 && i.metricKinds.indexOf(this.target.metricKind) !== -1
);
});
this.aggOptions = getAggregationOptionsByMetric(this.target.valueType, this.target.metricKind);
if (!this.aggOptions.find(o => o.value === this.target.aggregation.crossSeriesReducer)) {
this.deselectAggregationOption('REDUCE_NONE');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment