CloudWatch: Add errorsource for QueryData (#91085)

This commit is contained in:
Isabella Siu
2024-07-30 09:55:01 -04:00
committed by GitHub
parent 3e138449bb
commit c68feecb6e
7 changed files with 58 additions and 34 deletions
+9 -5
View File
@@ -11,6 +11,7 @@ import (
"github.com/aws/aws-sdk-go/service/cloudwatch"
"github.com/grafana/grafana-plugin-sdk-go/backend"
"github.com/grafana/grafana-plugin-sdk-go/data"
"github.com/grafana/grafana-plugin-sdk-go/experimental/errorsource"
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/kinds/dataquery"
"github.com/grafana/grafana/pkg/tsdb/cloudwatch/utils"
)
@@ -35,7 +36,7 @@ func (e *cloudWatchExecutor) executeAnnotationQuery(ctx context.Context, pluginC
if model.Period != nil && *model.Period != "" {
p, err := strconv.ParseInt(*model.Period, 10, 64)
if err != nil {
return nil, err
return nil, errorsource.DownstreamError(fmt.Errorf("query period must be an int"), false)
}
period = p
}
@@ -80,12 +81,13 @@ func (e *cloudWatchExecutor) executeAnnotationQuery(ctx context.Context, pluginC
}
resp, err := cli.DescribeAlarms(params)
if err != nil {
return nil, fmt.Errorf("%v: %w", "failed to call cloudwatch:DescribeAlarms", err)
result = errorsource.AddDownstreamErrorToResponse(query.RefID, result, fmt.Errorf("%v: %w", "failed to call cloudwatch:DescribeAlarms", err))
return result, nil
}
alarmNames = filterAlarms(resp, utils.Depointerizer(model.Namespace), metricName, dimensions, statistic, period)
} else {
if model.Region == nil || model.Namespace == nil || metricName == "" || statistic == "" {
return result, errors.New("invalid annotations query")
return result, errorsource.DownstreamError(errors.New("invalid annotations query"), false)
}
var qd []*cloudwatch.Dimension
@@ -110,7 +112,8 @@ func (e *cloudWatchExecutor) executeAnnotationQuery(ctx context.Context, pluginC
}
resp, err := cli.DescribeAlarmsForMetric(params)
if err != nil {
return nil, fmt.Errorf("%v: %w", "failed to call cloudwatch:DescribeAlarmsForMetric", err)
result = errorsource.AddDownstreamErrorToResponse(query.RefID, result, fmt.Errorf("%v: %w", "failed to call cloudwatch:DescribeAlarmsForMetric", err))
return result, nil
}
for _, alarm := range resp.MetricAlarms {
alarmNames = append(alarmNames, alarm.AlarmName)
@@ -127,7 +130,8 @@ func (e *cloudWatchExecutor) executeAnnotationQuery(ctx context.Context, pluginC
}
resp, err := cli.DescribeAlarmHistory(params)
if err != nil {
return nil, fmt.Errorf("%v: %w", "failed to call cloudwatch:DescribeAlarmHistory", err)
result = errorsource.AddDownstreamErrorToResponse(query.RefID, result, fmt.Errorf("%v: %w", "failed to call cloudwatch:DescribeAlarmHistory", err))
return result, nil
}
for _, history := range resp.AlarmHistoryItems {
annotations = append(annotations, &annotationEvent{