fix annotation query

This commit is contained in:
Mitsuhiro Tanda
2017-09-29 13:45:11 +09:00
parent bf5268c0b4
commit e1fe15e094
2 changed files with 22 additions and 14 deletions
+19 -13
View File
@@ -20,16 +20,16 @@ func (e *CloudWatchExecutor) executeAnnotationQuery(ctx context.Context, queryCo
queryResult := &tsdb.QueryResult{Meta: simplejson.New(), RefId: firstQuery.RefId}
parameters := firstQuery.Model
usePrefixMatch := parameters.Get("prefixMatching").MustBool()
usePrefixMatch := parameters.Get("prefixMatching").MustBool(false)
region := parameters.Get("region").MustString("")
namespace := parameters.Get("namespace").MustString("")
metricName := parameters.Get("metricName").MustString("")
dimensions := parameters.Get("dimensions").MustMap()
statistics := parameters.Get("statistics").MustStringArray()
extendedStatistics := parameters.Get("extendedStatistics").MustStringArray()
period := int64(300)
if usePrefixMatch {
period = int64(parameters.Get("period").MustInt(0))
period := int64(parameters.Get("period").MustInt(0))
if period == 0 && !usePrefixMatch {
period = 300
}
actionPrefix := parameters.Get("actionPrefix").MustString("")
alarmNamePrefix := parameters.Get("alarmNamePrefix").MustString("")
@@ -75,9 +75,9 @@ func (e *CloudWatchExecutor) executeAnnotationQuery(ctx context.Context, queryCo
params := &cloudwatch.DescribeAlarmsForMetricInput{
Namespace: aws.String(namespace),
MetricName: aws.String(metricName),
Period: aws.Int64(int64(period)),
Dimensions: qd,
Statistic: aws.String(s),
Period: aws.Int64(int64(period)),
}
resp, err := svc.DescribeAlarmsForMetric(params)
if err != nil {
@@ -91,9 +91,9 @@ func (e *CloudWatchExecutor) executeAnnotationQuery(ctx context.Context, queryCo
params := &cloudwatch.DescribeAlarmsForMetricInput{
Namespace: aws.String(namespace),
MetricName: aws.String(metricName),
Period: aws.Int64(int64(period)),
Dimensions: qd,
ExtendedStatistic: aws.String(s),
Period: aws.Int64(int64(period)),
}
resp, err := svc.DescribeAlarmsForMetric(params)
if err != nil {
@@ -109,7 +109,6 @@ func (e *CloudWatchExecutor) executeAnnotationQuery(ctx context.Context, queryCo
if err != nil {
return nil, err
}
endTime, err := queryContext.TimeRange.ParseTo()
if err != nil {
return nil, err
@@ -175,17 +174,20 @@ func filterAlarms(alarms *cloudwatch.DescribeAlarmsOutput, namespace string, met
}
match := true
for _, d := range alarm.Dimensions {
if _, ok := dimensions[*d.Name]; !ok {
match = false
if len(dimensions) == 0 {
// all match
} else if len(alarm.Dimensions) != len(dimensions) {
match = false
} else {
for _, d := range alarm.Dimensions {
if _, ok := dimensions[*d.Name]; !ok {
match = false
}
}
}
if !match {
continue
}
if period != 0 && *alarm.Period != period {
continue
}
if len(statistics) != 0 {
found := false
@@ -211,6 +213,10 @@ func filterAlarms(alarms *cloudwatch.DescribeAlarmsOutput, namespace string, met
}
}
if period != 0 && *alarm.Period != period {
continue
}
alarmNames = append(alarmNames, alarm.AlarmName)
}