From c51bb6292d815f6a04176c146090cf9ddd50a280 Mon Sep 17 00:00:00 2001 From: leighpascoe <88387687+leighpascoe@users.noreply.github.com> Date: Fri, 3 Mar 2023 14:31:37 -0500 Subject: [PATCH 1/2] Filter main route table --- resources/ec2-route-tables.go | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/resources/ec2-route-tables.go b/resources/ec2-route-tables.go index e8313c360..b0cced750 100644 --- a/resources/ec2-route-tables.go +++ b/resources/ec2-route-tables.go @@ -4,6 +4,7 @@ import ( "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/ec2" "github.com/rebuy-de/aws-nuke/v2/pkg/types" + log "github.com/sirupsen/logrus" ) type EC2RouteTable struct { @@ -31,6 +32,14 @@ func ListEC2RouteTables(sess *session.Session) ([]Resource, error) { resources := make([]Resource, 0) for _, out := range resp.RouteTables { + + if IsMain(out) { + log.WithFields(log.Fields{ + "routetable": *out.RouteTableId, + }).Debug("Main RouteTables cannot be deleted, skipping RouteTable: routetable") + continue + } + resources = append(resources, &EC2RouteTable{ svc: svc, routeTable: out, @@ -41,6 +50,15 @@ func ListEC2RouteTables(sess *session.Session) ([]Resource, error) { return resources, nil } +func IsMain(e *ec2.RouteTable) bool { + for _, association := range e.Associations { + if *association.Main { + return true + } + } + return false +} + func (e *EC2RouteTable) Remove() error { params := &ec2.DeleteRouteTableInput{ RouteTableId: e.routeTable.RouteTableId, From ae6bd3c212a96c5bb0559ff0d1aeea272387584f Mon Sep 17 00:00:00 2001 From: leighpascoe <88387687+leighpascoe@users.noreply.github.com> Date: Tue, 28 Mar 2023 12:24:53 -0400 Subject: [PATCH 2/2] ec2-route-tables filter Main use `Filter` instead of custom method --- resources/ec2-route-tables.go | 20 +++++++------------- 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/resources/ec2-route-tables.go b/resources/ec2-route-tables.go index b0cced750..175e7a5c0 100644 --- a/resources/ec2-route-tables.go +++ b/resources/ec2-route-tables.go @@ -1,10 +1,11 @@ package resources import ( + "fmt" + "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/ec2" "github.com/rebuy-de/aws-nuke/v2/pkg/types" - log "github.com/sirupsen/logrus" ) type EC2RouteTable struct { @@ -32,14 +33,6 @@ func ListEC2RouteTables(sess *session.Session) ([]Resource, error) { resources := make([]Resource, 0) for _, out := range resp.RouteTables { - - if IsMain(out) { - log.WithFields(log.Fields{ - "routetable": *out.RouteTableId, - }).Debug("Main RouteTables cannot be deleted, skipping RouteTable: routetable") - continue - } - resources = append(resources, &EC2RouteTable{ svc: svc, routeTable: out, @@ -50,13 +43,14 @@ func ListEC2RouteTables(sess *session.Session) ([]Resource, error) { return resources, nil } -func IsMain(e *ec2.RouteTable) bool { - for _, association := range e.Associations { +func (i *EC2RouteTable) Filter() error { + + for _, association := range i.routeTable.Associations { if *association.Main { - return true + return fmt.Errorf("Main RouteTables cannot be deleted") } } - return false + return nil } func (e *EC2RouteTable) Remove() error {