/usr/share/grafana/public/app/plugins/datasource/cloudwatch
import { AnnotationQuery } from '@grafana/data'; import { CloudWatchAnnotationSupport } from './annotationSupport'; import { CloudWatchAnnotationQuery, LegacyAnnotationQuery } from './types'; const metricStatAnnotationQuery: CloudWatchAnnotationQuery = { queryMode: 'Annotations', region: 'us-east-2', namespace: 'AWS/EC2', period: '300', metricName: 'CPUUtilization', dimensions: { InstanceId: 'i-123' }, matchExact: true, statistic: 'Average', refId: 'anno', prefixMatching: false, actionPrefix: '', alarmNamePrefix: '', }; const prefixMatchingAnnotationQuery: CloudWatchAnnotationQuery = { queryMode: 'Annotations', region: 'us-east-2', namespace: '', period: '300', metricName: '', dimensions: undefined, statistic: 'Average', refId: 'anno', prefixMatching: true, actionPrefix: 'arn', alarmNamePrefix: 'test-alarm', }; const annotationQuery: AnnotationQuery<CloudWatchAnnotationQuery> = { name: 'Anno', enable: false, iconColor: '', target: metricStatAnnotationQuery!, }; const legacyAnnotationQuery: LegacyAnnotationQuery = { name: 'Anno', enable: false, iconColor: '', region: '', namespace: 'AWS/EC2', period: '300', metricName: 'CPUUtilization', dimensions: { InstanceId: 'i-123' }, matchExact: true, statistic: '', refId: '', prefixMatching: false, actionPrefix: '', alarmNamePrefix: '', target: { limit: 0, matchAny: false, tags: [], type: '', }, alias: '', builtIn: 0, datasource: undefined, expression: '', hide: false, id: '', type: '', statistics: [], }; describe('annotationSupport', () => { describe('when prepareAnnotation', () => { describe('is being called with new style annotations', () => { it('should return the same query without changing it', () => { const preparedAnnotation = CloudWatchAnnotationSupport.prepareAnnotation(annotationQuery); expect(preparedAnnotation).toEqual(annotationQuery); }); }); describe('is being called with legacy annotations', () => { it('should return a new query', () => { const preparedAnnotation = CloudWatchAnnotationSupport.prepareAnnotation(legacyAnnotationQuery); expect(preparedAnnotation).not.toEqual(annotationQuery); }); it('should set default values if not given', () => { const preparedAnnotation = CloudWatchAnnotationSupport.prepareAnnotation(legacyAnnotationQuery); expect(preparedAnnotation.target?.statistic).toEqual('Average'); expect(preparedAnnotation.target?.region).toEqual('default'); expect(preparedAnnotation.target?.queryMode).toEqual('Annotations'); expect(preparedAnnotation.target?.refId).toEqual('annotationQuery'); }); it('should not set default values if given', () => { const annotation = CloudWatchAnnotationSupport.prepareAnnotation({ ...legacyAnnotationQuery, statistic: 'Min', region: 'us-east-2', queryMode: 'Annotations', refId: 'A', }); expect(annotation.target?.statistic).toEqual('Min'); expect(annotation.target?.region).toEqual('us-east-2'); expect(annotation.target?.queryMode).toEqual('Annotations'); expect(annotation.target?.refId).toEqual('A'); }); }); }); describe('when prepareQuery', () => { describe('is being called without a target', () => { it('should return undefined', () => { const preparedQuery = CloudWatchAnnotationSupport.prepareQuery({ ...annotationQuery, target: undefined, }); expect(preparedQuery).toBeUndefined(); }); }); describe('is being called with a complete metric stat query', () => { it('should return the annotation target', () => { expect(CloudWatchAnnotationSupport.prepareQuery(annotationQuery)).toEqual(annotationQuery.target); }); }); describe('is being called with an incomplete metric stat query', () => { it('should return undefined', () => { const preparedQuery = CloudWatchAnnotationSupport.prepareQuery({ ...annotationQuery, target: { ...annotationQuery.target!, dimensions: {}, metricName: '', statistic: undefined, }, }); expect(preparedQuery).toBeUndefined(); }); }); describe('is being called with an incomplete prefix matching query', () => { it('should return the annotation target', () => { const query = { ...annotationQuery, target: prefixMatchingAnnotationQuery, }; expect(CloudWatchAnnotationSupport.prepareQuery(query)).toEqual(query.target); }); }); describe('is being called with an incomplete prefix matching query', () => { it('should return undefined', () => { const query = { ...annotationQuery, target: { ...prefixMatchingAnnotationQuery, actionPrefix: '', }, }; expect(CloudWatchAnnotationSupport.prepareQuery(query)).toBeUndefined(); }); }); }); });
.
Edit
..
Edit
README.md
Edit
annotationSupport.test.ts
Edit
annotationSupport.ts
Edit
aws_url.test.ts
Edit
aws_url.ts
Edit
components
Edit
dashboards
Edit
dataquery.cue
Edit
dataquery.gen.ts
Edit
datasource.test.ts
Edit
datasource.ts
Edit
defaultQueries.ts
Edit
expressions.ts
Edit
guards.ts
Edit
hooks.test.ts
Edit
hooks.ts
Edit
img
Edit
language
Edit
memoizedDebounce.ts
Edit
migrations
Edit
mocks
Edit
module.tsx
Edit
plugin.json
Edit
query-runner
Edit
resources
Edit
standardStatistics.ts
Edit
tracking.test.ts
Edit
tracking.ts
Edit
types.ts
Edit
utils
Edit
variables.test.ts
Edit
variables.ts
Edit