CloudWatch: Set period in math expressions (#39458)

* set period field

* add test

* add insights rule permission to docs
This commit is contained in:
Erik Sundell 2021-09-23 16:03:58 +02:00 committed by GitHub
parent 0229146c3b
commit c2604e04ab
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 0 deletions

View File

@ -55,6 +55,7 @@ Here is a minimal policy example:
"cloudwatch:ListMetrics",
"cloudwatch:GetMetricStatistics",
"cloudwatch:GetMetricData"
"cloudwatch:GetInsightRuleReport"
],
"Resource": "*"
},

View File

@ -18,6 +18,7 @@ func (e *cloudWatchExecutor) buildMetricDataQuery(query *cloudWatchQuery) (*clou
if query.Expression != "" {
mdq.Expression = aws.String(query.Expression)
mdq.Period = aws.Int64(int64(query.Period))
} else {
if query.isSearchExpression() {
mdq.Expression = aws.String(buildSearchExpression(query, query.Statistic))

View File

@ -4,9 +4,32 @@ import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestMetricDataQueryBuilder_buildSearchExpression(t *testing.T) {
t.Run("buildMetricDataQuery", func(t *testing.T) {
t.Run("should set period in user defined expression", func(t *testing.T) {
executor := newExecutor(nil, nil, newTestConfig(), fakeSessionCache{})
query := &cloudWatchQuery{
Namespace: "AWS/EC2",
MetricName: "CPUUtilization",
Dimensions: map[string][]string{
"LoadBalancer": {"lb1"},
},
Period: 300,
Expression: "SUM([a,b])",
MatchExact: true,
}
query.MatchExact = false
mdq, err := executor.buildMetricDataQuery(query)
require.NoError(t, err)
require.Nil(t, mdq.MetricStat)
assert.Equal(t, int64(300), *mdq.Period)
assert.Equal(t, `SUM([a,b])`, *mdq.Expression)
})
})
t.Run("Query should be matched exact", func(t *testing.T) {
const matchExact = true