mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Cloudwatch: Add expression field to interpolate variables in Metrics Code Builder (#64288)
This commit is contained in:
parent
3cbeace0ca
commit
1c8ad04f8d
@ -338,9 +338,9 @@ describe('datasource', () => {
|
|||||||
|
|
||||||
datasource.interpolateVariablesInQueries([metricsQuery], {});
|
datasource.interpolateVariablesInQueries([metricsQuery], {});
|
||||||
|
|
||||||
// We interpolate `expression`, `region`, `period`, `alias`, `metricName`, and `nameSpace` in CloudWatchMetricsQuery
|
// We interpolate `expression`, `sqlExpression`, `region`, `period`, `alias`, `metricName`, `dimensions`, and `nameSpace` in CloudWatchMetricsQuery
|
||||||
expect(templateService.replace).toHaveBeenCalledWith(`$${variableName}`, {});
|
expect(templateService.replace).toHaveBeenCalledWith(`$${variableName}`, {});
|
||||||
expect(templateService.replace).toHaveBeenCalledTimes(7);
|
expect(templateService.replace).toHaveBeenCalledTimes(8);
|
||||||
|
|
||||||
expect(templateService.getVariableName).toHaveBeenCalledWith(`$${variableName}`);
|
expect(templateService.getVariableName).toHaveBeenCalledWith(`$${variableName}`);
|
||||||
expect(templateService.getVariableName).toHaveBeenCalledTimes(1);
|
expect(templateService.getVariableName).toHaveBeenCalledTimes(1);
|
||||||
|
@ -694,18 +694,20 @@ describe('CloudWatchMetricsQueryRunner', () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('interpolateMetricsQueryVariables', () => {
|
describe('interpolateMetricsQueryVariables', () => {
|
||||||
it('interpolates dimensions correctly', () => {
|
it('interpolates values correctly', () => {
|
||||||
const testQuery = {
|
const testQuery = {
|
||||||
id: 'a',
|
id: 'a',
|
||||||
refId: 'a',
|
refId: 'a',
|
||||||
region: 'us-east-2',
|
region: 'us-east-2',
|
||||||
namespace: '',
|
namespace: '',
|
||||||
|
expression: 'ABS($datasource)',
|
||||||
|
sqlExpression: 'select SUM(CPUUtilization) from $datasource',
|
||||||
dimensions: { InstanceId: '$dimension' },
|
dimensions: { InstanceId: '$dimension' },
|
||||||
};
|
};
|
||||||
const { runner } = setupMockedMetricsQueryRunner({ variables: [dimensionVariable], mockGetVariableName: false });
|
const { runner } = setupMockedMetricsQueryRunner({ variables: [dimensionVariable], mockGetVariableName: false });
|
||||||
const result = runner.interpolateMetricsQueryVariables(testQuery, {
|
const result = runner.interpolateMetricsQueryVariables(testQuery, {
|
||||||
|
datasource: { text: 'foo', value: 'foo' },
|
||||||
dimension: { text: 'foo', value: 'foo' },
|
dimension: { text: 'foo', value: 'foo' },
|
||||||
});
|
});
|
||||||
expect(result).toStrictEqual({
|
expect(result).toStrictEqual({
|
||||||
@ -713,7 +715,8 @@ describe('CloudWatchMetricsQueryRunner', () => {
|
|||||||
metricName: '',
|
metricName: '',
|
||||||
namespace: '',
|
namespace: '',
|
||||||
period: '',
|
period: '',
|
||||||
sqlExpression: '',
|
sqlExpression: 'select SUM(CPUUtilization) from foo',
|
||||||
|
expression: 'ABS(foo)',
|
||||||
dimensions: { InstanceId: ['foo'] },
|
dimensions: { InstanceId: ['foo'] },
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -99,12 +99,16 @@ export class CloudWatchMetricsQueryRunner extends CloudWatchRequest {
|
|||||||
interpolateMetricsQueryVariables(
|
interpolateMetricsQueryVariables(
|
||||||
query: CloudWatchMetricsQuery,
|
query: CloudWatchMetricsQuery,
|
||||||
scopedVars: ScopedVars
|
scopedVars: ScopedVars
|
||||||
): Pick<CloudWatchMetricsQuery, 'alias' | 'metricName' | 'namespace' | 'period' | 'dimensions' | 'sqlExpression'> {
|
): Pick<
|
||||||
|
CloudWatchMetricsQuery,
|
||||||
|
'alias' | 'metricName' | 'namespace' | 'period' | 'dimensions' | 'sqlExpression' | 'expression'
|
||||||
|
> {
|
||||||
return {
|
return {
|
||||||
alias: this.replaceVariableAndDisplayWarningIfMulti(query.alias, scopedVars),
|
alias: this.replaceVariableAndDisplayWarningIfMulti(query.alias, scopedVars),
|
||||||
metricName: this.replaceVariableAndDisplayWarningIfMulti(query.metricName, scopedVars),
|
metricName: this.replaceVariableAndDisplayWarningIfMulti(query.metricName, scopedVars),
|
||||||
namespace: this.replaceVariableAndDisplayWarningIfMulti(query.namespace, scopedVars),
|
namespace: this.replaceVariableAndDisplayWarningIfMulti(query.namespace, scopedVars),
|
||||||
period: this.replaceVariableAndDisplayWarningIfMulti(query.period, scopedVars),
|
period: this.replaceVariableAndDisplayWarningIfMulti(query.period, scopedVars),
|
||||||
|
expression: this.templateSrv.replace(query.expression, scopedVars),
|
||||||
sqlExpression: this.replaceVariableAndDisplayWarningIfMulti(query.sqlExpression, scopedVars),
|
sqlExpression: this.replaceVariableAndDisplayWarningIfMulti(query.sqlExpression, scopedVars),
|
||||||
dimensions: this.convertDimensionFormat(query.dimensions ?? {}, scopedVars),
|
dimensions: this.convertDimensionFormat(query.dimensions ?? {}, scopedVars),
|
||||||
};
|
};
|
||||||
|
Loading…
Reference in New Issue
Block a user