mirror of
https://github.com/grafana/grafana.git
synced 2025-02-25 18:55:37 -06:00
Datasource/CloudWatch: Fix CloudWatch logs dataframe transformation (#24327)
* Datasource/CloudWatch: Fix CloudWatch logs dataframe transformation
This commit is contained in:
parent
3a2c844a8a
commit
dbac77d239
@ -238,8 +238,8 @@ export class CloudWatchDatasource extends DataSourceApi<CloudWatchQuery, CloudWa
|
||||
async describeLogGroups(params: DescribeLogGroupsRequest): Promise<string[]> {
|
||||
const dataFrames = await this.makeLogActionRequest('DescribeLogGroups', [params]).toPromise();
|
||||
|
||||
const logGroupNames = dataFrames[0].fields[0].values.toArray();
|
||||
return logGroupNames && logGroupNames.length > 0 ? logGroupNames : [];
|
||||
const logGroupNames = dataFrames[0]?.fields[0]?.values.toArray() ?? [];
|
||||
return logGroupNames;
|
||||
}
|
||||
|
||||
async getLogGroupFields(params: GetLogGroupFieldsRequest): Promise<GetLogGroupFieldsResponse> {
|
||||
@ -495,14 +495,10 @@ export class CloudWatchDatasource extends DataSourceApi<CloudWatchQuery, CloudWa
|
||||
);
|
||||
}
|
||||
|
||||
const resultsToDataFrames = (val: any): DataFrame[] => {
|
||||
// NOTE: this function currently only processes binary results from:
|
||||
// /api/ds/query -- it will retrun empty results most of the time
|
||||
return toDataQueryResponse(val).data || [];
|
||||
};
|
||||
const resultsToDataFrames = (val: any): DataFrame[] => toDataQueryResponse(val).data || [];
|
||||
|
||||
return from(this.awsRequest(TSDB_QUERY_ENDPOINT, requestParams)).pipe(
|
||||
map(response => resultsToDataFrames(response)),
|
||||
map(response => resultsToDataFrames({ data: response })),
|
||||
catchError(err => {
|
||||
if (err.data?.error) {
|
||||
throw err.data.error;
|
||||
|
@ -46,6 +46,65 @@ describe('CloudWatchDatasource', () => {
|
||||
jest.clearAllMocks();
|
||||
});
|
||||
|
||||
describe('When getting log groups', () => {
|
||||
beforeEach(() => {
|
||||
datasourceRequestMock.mockImplementation(() =>
|
||||
Promise.resolve({
|
||||
data: {
|
||||
results: {
|
||||
A: {
|
||||
dataframes: [
|
||||
'QVJST1cxAAD/////GAEAABAAAAAAAAoADgAMAAsABAAKAAAAFAAAAAAAAAEDAAoADAAAAAgABAAKAAAACAAAAFgAAAACAAAAKAAAAAQAAAB8////CAAAAAwAAAAAAAAAAAAAAAUAAAByZWZJZAAAAJz///8IAAAAFAAAAAkAAABsb2dHcm91cHMAAAAEAAAAbmFtZQAAAAABAAAAGAAAAAAAEgAYABQAEwASAAwAAAAIAAQAEgAAABQAAABMAAAAUAAAAAAABQFMAAAAAQAAAAwAAAAIAAwACAAEAAgAAAAIAAAAGAAAAAwAAABsb2dHcm91cE5hbWUAAAAABAAAAG5hbWUAAAAAAAAAAAQABAAEAAAADAAAAGxvZ0dyb3VwTmFtZQAAAAD/////mAAAABQAAAAAAAAADAAWABQAEwAMAAQADAAAAGAGAAAAAAAAFAAAAAAAAAMDAAoAGAAMAAgABAAKAAAAFAAAAEgAAAAhAAAAAAAAAAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAiAAAAAAAAACIAAAAAAAAANgFAAAAAAAAAAAAAAEAAAAhAAAAAAAAAAAAAAAAAAAAAAAAADIAAABiAAAAkQAAALwAAADuAAAAHwEAAFQBAACHAQAAtQEAAOoBAAAbAgAASgIAAHQCAAClAgAA1QIAABADAABEAwAAdgMAAKMDAADXAwAACQQAAEAEAAB3BAAAlwQAAK0EAAC8BAAA+wQAAEIFAABhBQAAeAUAAJIFAAC0BQAA1gUAAC9hd3MvY29udGFpbmVyaW5zaWdodHMvZGV2MzAzLXdvcmtzaG9wL2FwcGxpY2F0aW9uL2F3cy9jb250YWluZXJpbnNpZ2h0cy9kZXYzMDMtd29ya3Nob3AvZGF0YXBsYW5lL2F3cy9jb250YWluZXJpbnNpZ2h0cy9kZXYzMDMtd29ya3Nob3AvZmxvd2xvZ3MvYXdzL2NvbnRhaW5lcmluc2lnaHRzL2RldjMwMy13b3Jrc2hvcC9ob3N0L2F3cy9jb250YWluZXJpbnNpZ2h0cy9kZXYzMDMtd29ya3Nob3AvcGVyZm9ybWFuY2UvYXdzL2NvbnRhaW5lcmluc2lnaHRzL2RldjMwMy13b3Jrc2hvcC9wcm9tZXRoZXVzL2F3cy9jb250YWluZXJpbnNpZ2h0cy9lY29tbWVyY2Utc29ja3Nob3AvYXBwbGljYXRpb24vYXdzL2NvbnRhaW5lcmluc2lnaHRzL2Vjb21tZXJjZS1zb2Nrc2hvcC9kYXRhcGxhbmUvYXdzL2NvbnRhaW5lcmluc2lnaHRzL2Vjb21tZXJjZS1zb2Nrc2hvcC9ob3N0L2F3cy9jb250YWluZXJpbnNpZ2h0cy9lY29tbWVyY2Utc29ja3Nob3AvcGVyZm9ybWFuY2UvYXdzL2NvbnRhaW5lcmluc2lnaHRzL3dhdGNoZGVtby1wZXJmL2FwcGxpY2F0aW9uL2F3cy9jb250YWluZXJpbnNpZ2h0cy93YXRjaGRlbW8tcGVyZi9kYXRhcGxhbmUvYXdzL2NvbnRhaW5lcmluc2lnaHRzL3dhdGNoZGVtby1wZXJmL2hvc3QvYXdzL2NvbnRhaW5lcmluc2lnaHRzL3dhdGNoZGVtby1wZXJmL3BlcmZvcm1hbmNlL2F3cy9jb250YWluZXJpbnNpZ2h0cy93YXRjaGRlbW8tcGVyZi9wcm9tZXRoZXVzL2F3cy9jb250YWluZXJpbnNpZ2h0cy93YXRjaGRlbW8tcHJvZC11cy1lYXN0LTEvcGVyZm9ybWFuY2UvYXdzL2NvbnRhaW5lcmluc2lnaHRzL3dhdGNoZGVtby1zdGFnaW5nL2FwcGxpY2F0aW9uL2F3cy9jb250YWluZXJpbnNpZ2h0cy93YXRjaGRlbW8tc3RhZ2luZy9kYXRhcGxhbmUvYXdzL2NvbnRhaW5lcmluc2lnaHRzL3dhdGNoZGVtby1zdGFnaW5nL2hvc3QvYXdzL2NvbnRhaW5lcmluc2lnaHRzL3dhdGNoZGVtby1zdGFnaW5nL3BlcmZvcm1hbmNlL2F3cy9lY3MvY29udGFpbmVyaW5zaWdodHMvYnVnYmFzaC1lYzIvcGVyZm9ybWFuY2UvYXdzL2Vjcy9jb250YWluZXJpbnNpZ2h0cy9lY3MtZGVtb3dvcmtzaG9wL3BlcmZvcm1hbmNlL2F3cy9lY3MvY29udGFpbmVyaW5zaWdodHMvZWNzLXdvcmtzaG9wLWRldi9wZXJmb3JtYW5jZS9hd3MvZWtzL2RldjMwMy13b3Jrc2hvcC9jbHVzdGVyL2F3cy9ldmVudHMvY2xvdWR0cmFpbC9hd3MvZXZlbnRzL2Vjcy9hd3MvbGFtYmRhL2N3c3luLW15Y2FuYXJ5LWZhYzk3ZGVkLWYxMzQtNDk5YS05ZDcxLTRjM2JlMWY2MzE4Mi9hd3MvbGFtYmRhL2N3c3luLXdhdGNoLWxpbmtjaGVja3MtZWY3ZWYyNzMtNWRhMi00NjYzLWFmNTQtZDJmNTJkNTViMDYwL2Vjcy9lY3MtY3dhZ2VudC1kYWVtb24tc2VydmljZS9lY3MvZWNzLWRlbW8tbGltaXRUYXNrQ2xvdWRUcmFpbC9EZWZhdWx0TG9nR3JvdXBjb250YWluZXItaW5zaWdodHMtcHJvbWV0aGV1cy1iZXRhY29udGFpbmVyLWluc2lnaHRzLXByb21ldGhldXMtZGVtbwAAEAAAAAwAFAASAAwACAAEAAwAAAAQAAAALAAAADwAAAAAAAMAAQAAACgBAAAAAAAAoAAAAAAAAABgBgAAAAAAAAAAAAAAAAAAAAAAAAAACgAMAAAACAAEAAoAAAAIAAAAWAAAAAIAAAAoAAAABAAAAHz///8IAAAADAAAAAAAAAAAAAAABQAAAHJlZklkAAAAnP///wgAAAAUAAAACQAAAGxvZ0dyb3VwcwAAAAQAAABuYW1lAAAAAAEAAAAYAAAAAAASABgAFAATABIADAAAAAgABAASAAAAFAAAAEwAAABQAAAAAAAFAUwAAAABAAAADAAAAAgADAAIAAQACAAAAAgAAAAYAAAADAAAAGxvZ0dyb3VwTmFtZQAAAAAEAAAAbmFtZQAAAAAAAAAABAAEAAQAAAAMAAAAbG9nR3JvdXBOYW1lAAAAAEgBAABBUlJPVzE=',
|
||||
],
|
||||
refId: 'A',
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
);
|
||||
});
|
||||
|
||||
it('should return log groups as an array of strings', async () => {
|
||||
const logGroups = await ctx.ds.describeLogGroups();
|
||||
const expectedLogGroups = [
|
||||
'/aws/containerinsights/dev303-workshop/application',
|
||||
'/aws/containerinsights/dev303-workshop/dataplane',
|
||||
'/aws/containerinsights/dev303-workshop/flowlogs',
|
||||
'/aws/containerinsights/dev303-workshop/host',
|
||||
'/aws/containerinsights/dev303-workshop/performance',
|
||||
'/aws/containerinsights/dev303-workshop/prometheus',
|
||||
'/aws/containerinsights/ecommerce-sockshop/application',
|
||||
'/aws/containerinsights/ecommerce-sockshop/dataplane',
|
||||
'/aws/containerinsights/ecommerce-sockshop/host',
|
||||
'/aws/containerinsights/ecommerce-sockshop/performance',
|
||||
'/aws/containerinsights/watchdemo-perf/application',
|
||||
'/aws/containerinsights/watchdemo-perf/dataplane',
|
||||
'/aws/containerinsights/watchdemo-perf/host',
|
||||
'/aws/containerinsights/watchdemo-perf/performance',
|
||||
'/aws/containerinsights/watchdemo-perf/prometheus',
|
||||
'/aws/containerinsights/watchdemo-prod-us-east-1/performance',
|
||||
'/aws/containerinsights/watchdemo-staging/application',
|
||||
'/aws/containerinsights/watchdemo-staging/dataplane',
|
||||
'/aws/containerinsights/watchdemo-staging/host',
|
||||
'/aws/containerinsights/watchdemo-staging/performance',
|
||||
'/aws/ecs/containerinsights/bugbash-ec2/performance',
|
||||
'/aws/ecs/containerinsights/ecs-demoworkshop/performance',
|
||||
'/aws/ecs/containerinsights/ecs-workshop-dev/performance',
|
||||
'/aws/eks/dev303-workshop/cluster',
|
||||
'/aws/events/cloudtrail',
|
||||
'/aws/events/ecs',
|
||||
'/aws/lambda/cwsyn-mycanary-fac97ded-f134-499a-9d71-4c3be1f63182',
|
||||
'/aws/lambda/cwsyn-watch-linkchecks-ef7ef273-5da2-4663-af54-d2f52d55b060',
|
||||
'/ecs/ecs-cwagent-daemon-service',
|
||||
'/ecs/ecs-demo-limitTask',
|
||||
'CloudTrail/DefaultLogGroup',
|
||||
'container-insights-prometheus-beta',
|
||||
'container-insights-prometheus-demo',
|
||||
];
|
||||
expect(logGroups).toEqual(expectedLogGroups);
|
||||
});
|
||||
});
|
||||
|
||||
describe('When performing CloudWatch metrics query', () => {
|
||||
const query = {
|
||||
range: defaultTimeRange,
|
||||
@ -741,7 +800,6 @@ describe('CloudWatchDatasource', () => {
|
||||
});
|
||||
|
||||
it('should call __GetDimensions and return result', () => {
|
||||
console.log({ a: scenario.requestResponse.results });
|
||||
expect(scenario.result[0].text).toBe('InstanceId');
|
||||
expect(scenario.request.queries[0].type).toBe('metricFindQuery');
|
||||
expect(scenario.request.queries[0].subtype).toBe('dimension_keys');
|
||||
|
Loading…
Reference in New Issue
Block a user