Skip to content

Commit

Permalink
Remove filtering of ApiGateway namespace resources.
Browse files Browse the repository at this point in the history
WIP
  • Loading branch information
cristiangreco committed Jul 31, 2023
1 parent f0ceb44 commit acf0e39
Show file tree
Hide file tree
Showing 3 changed files with 283 additions and 295 deletions.
106 changes: 51 additions & 55 deletions pkg/clients/tagging/v1/filters.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,19 +3,15 @@ package v1
import (
"context"
"fmt"
"strings"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/arn"
"github.com/aws/aws-sdk-go/service/apigateway"
"github.com/aws/aws-sdk-go/service/apigatewayv2"
"github.com/aws/aws-sdk-go/service/autoscaling"
"github.com/aws/aws-sdk-go/service/databasemigrationservice"
"github.com/aws/aws-sdk-go/service/ec2"
"github.com/aws/aws-sdk-go/service/prometheusservice"
"github.com/aws/aws-sdk-go/service/shield"
"github.com/aws/aws-sdk-go/service/storagegateway"
"github.com/grafana/regexp"

"github.com/nerdswords/yet-another-cloudwatch-exporter/pkg/config"
"github.com/nerdswords/yet-another-cloudwatch-exporter/pkg/model"
Expand All @@ -32,57 +28,57 @@ type ServiceFilter struct {

// ServiceFilters maps a service namespace to (optional) ServiceFilter
var ServiceFilters = map[string]ServiceFilter{
"AWS/ApiGateway": {
FilterFunc: func(ctx context.Context, client client, inputResources []*model.TaggedResource) ([]*model.TaggedResource, error) {
promutil.APIGatewayAPICounter.Inc()
const maxPages = 10

var (
limit int64 = 500 // max number of results per page. default=25, max=500
input = apigateway.GetRestApisInput{Limit: &limit}
output = apigateway.GetRestApisOutput{}
pageNum int
outputResources []*model.TaggedResource
)

err := client.apiGatewayAPI.GetRestApisPagesWithContext(ctx, &input, func(page *apigateway.GetRestApisOutput, lastPage bool) bool {
promutil.APIGatewayAPICounter.Inc()
pageNum++
output.Items = append(output.Items, page.Items...)
return pageNum <= maxPages
})
if err != nil {
return nil, fmt.Errorf("error calling apiGatewayAPI.GetRestApisPages, %w", err)
}
outputV2, err := client.apiGatewayV2API.GetApisWithContext(ctx, &apigatewayv2.GetApisInput{})
promutil.APIGatewayAPIV2Counter.Inc()
if err != nil {
return nil, fmt.Errorf("error calling apiGatewayAPIv2.GetApis, %w", err)
}

for _, resource := range inputResources {
for i, gw := range output.Items {
searchString := regexp.MustCompile(fmt.Sprintf(".*restapis/%s$", *gw.Id))
if searchString.MatchString(resource.ARN) {
r := resource
r.ARN = strings.ReplaceAll(resource.ARN, *gw.Id, *gw.Name)
outputResources = append(outputResources, r)
output.Items = append(output.Items[:i], output.Items[i+1:]...)
break
}
}
for i, gw := range outputV2.Items {
searchString := regexp.MustCompile(fmt.Sprintf(".*apis/%s$", *gw.ApiId))
if searchString.MatchString(resource.ARN) {
outputResources = append(outputResources, resource)
outputV2.Items = append(outputV2.Items[:i], outputV2.Items[i+1:]...)
break
}
}
}
return outputResources, nil
},
},
// "AWS/ApiGateway": {
// FilterFunc: func(ctx context.Context, client client, inputResources []*model.TaggedResource) ([]*model.TaggedResource, error) {
// promutil.APIGatewayAPICounter.Inc()
// const maxPages = 10

// var (
// limit int64 = 500 // max number of results per page. default=25, max=500
// input = apigateway.GetRestApisInput{Limit: &limit}
// output = apigateway.GetRestApisOutput{}
// pageNum int
// outputResources []*model.TaggedResource
// )

// err := client.apiGatewayAPI.GetRestApisPagesWithContext(ctx, &input, func(page *apigateway.GetRestApisOutput, lastPage bool) bool {
// promutil.APIGatewayAPICounter.Inc()
// pageNum++
// output.Items = append(output.Items, page.Items...)
// return pageNum <= maxPages
// })
// if err != nil {
// return nil, fmt.Errorf("error calling apiGatewayAPI.GetRestApisPages, %w", err)
// }
// outputV2, err := client.apiGatewayV2API.GetApisWithContext(ctx, &apigatewayv2.GetApisInput{})
// promutil.APIGatewayAPIV2Counter.Inc()
// if err != nil {
// return nil, fmt.Errorf("error calling apiGatewayAPIv2.GetApis, %w", err)
// }

// for _, resource := range inputResources {
// for i, gw := range output.Items {
// searchString := regexp.MustCompile(fmt.Sprintf(".*restapis/%s$", *gw.Id))
// if searchString.MatchString(resource.ARN) {
// r := resource
// r.ARN = strings.ReplaceAll(resource.ARN, *gw.Id, *gw.Name)
// outputResources = append(outputResources, r)
// output.Items = append(output.Items[:i], output.Items[i+1:]...)
// break
// }
// }
// for i, gw := range outputV2.Items {
// searchString := regexp.MustCompile(fmt.Sprintf(".*apis/%s$", *gw.ApiId))
// if searchString.MatchString(resource.ARN) {
// outputResources = append(outputResources, resource)
// outputV2.Items = append(outputV2.Items[:i], outputV2.Items[i+1:]...)
// break
// }
// }
// }
// return outputResources, nil
// },
// },
"AWS/AutoScaling": {
ResourceFunc: func(ctx context.Context, client client, job *config.Job, region string) ([]*model.TaggedResource, error) {
pageNum := 0
Expand Down
Loading

0 comments on commit acf0e39

Please sign in to comment.