|
|
|
|
@ -17,6 +17,7 @@ import ( |
|
|
|
|
"golang.org/x/sync/errgroup" |
|
|
|
|
|
|
|
|
|
"github.com/aws/aws-sdk-go/aws" |
|
|
|
|
"github.com/aws/aws-sdk-go/aws/awserr" |
|
|
|
|
"github.com/aws/aws-sdk-go/aws/request" |
|
|
|
|
"github.com/aws/aws-sdk-go/service/cloudwatch" |
|
|
|
|
"github.com/aws/aws-sdk-go/service/ec2/ec2iface" |
|
|
|
|
@ -100,7 +101,10 @@ func (e *CloudWatchExecutor) executeTimeSeriesQuery(ctx context.Context, queryCo |
|
|
|
|
|
|
|
|
|
query, err := parseQuery(queryContext.Queries[i].Model) |
|
|
|
|
if err != nil { |
|
|
|
|
return nil, err |
|
|
|
|
result.Results[query.RefId] = &tsdb.QueryResult{ |
|
|
|
|
Error: err, |
|
|
|
|
} |
|
|
|
|
return result, nil |
|
|
|
|
} |
|
|
|
|
query.RefId = queryContext.Queries[i].RefId |
|
|
|
|
|
|
|
|
|
@ -113,15 +117,21 @@ func (e *CloudWatchExecutor) executeTimeSeriesQuery(ctx context.Context, queryCo |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if query.Id == "" && query.Expression != "" { |
|
|
|
|
return nil, fmt.Errorf("Invalid query: id should be set if using expression") |
|
|
|
|
result.Results[query.RefId] = &tsdb.QueryResult{ |
|
|
|
|
Error: fmt.Errorf("Invalid query: id should be set if using expression"), |
|
|
|
|
} |
|
|
|
|
return result, nil |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
eg.Go(func() error { |
|
|
|
|
queryRes, err := e.executeQuery(ectx, query, queryContext) |
|
|
|
|
if err != nil { |
|
|
|
|
if ae, ok := err.(awserr.Error); ok && ae.Code() == "500" { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
result.Results[queryRes.RefId] = queryRes |
|
|
|
|
if err != nil { |
|
|
|
|
result.Results[queryRes.RefId].Error = err |
|
|
|
|
} |
|
|
|
|
return nil |
|
|
|
|
}) |
|
|
|
|
} |
|
|
|
|
@ -131,11 +141,14 @@ func (e *CloudWatchExecutor) executeTimeSeriesQuery(ctx context.Context, queryCo |
|
|
|
|
q := getMetricDataQuery |
|
|
|
|
eg.Go(func() error { |
|
|
|
|
queryResponses, err := e.executeGetMetricDataQuery(ectx, region, q, queryContext) |
|
|
|
|
if err != nil { |
|
|
|
|
if ae, ok := err.(awserr.Error); ok && ae.Code() == "500" { |
|
|
|
|
return err |
|
|
|
|
} |
|
|
|
|
for _, queryRes := range queryResponses { |
|
|
|
|
result.Results[queryRes.RefId] = queryRes |
|
|
|
|
if err != nil { |
|
|
|
|
result.Results[queryRes.RefId].Error = err |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return nil |
|
|
|
|
}) |
|
|
|
|
|