func()

in internal/resources/providers/awslib/cloudwatch/provider.go [37:63]


func (p *Provider) DescribeAlarms(ctx context.Context, region *string, filters []string) ([]types.MetricAlarm, error) {
	var all []types.MetricAlarm
	input := cloudwatch.DescribeAlarmsInput{}
	client, err := awslib.GetClient(region, p.clients)
	if err != nil {
		return nil, err
	}
	for {
		output, err := client.DescribeAlarms(ctx, &input)
		if err != nil {
			return nil, err
		}
		for _, metric := range output.MetricAlarms {
			for _, filter := range filters {
				if metric.MetricName != nil && filter == *metric.MetricName {
					all = append(all, metric)
					break
				}
			}
		}
		if output.NextToken == nil {
			break
		}
		input.NextToken = output.NextToken
	}
	return all, nil
}