From e242df6be189eb58e1df850f4c5b0a7d0471a79a Mon Sep 17 00:00:00 2001 From: Jan Michalowsky Date: Tue, 7 Jul 2020 17:39:23 +0200 Subject: [PATCH 1/5] added global accelerator resources --- resources/ga-accelerators.go | 71 ++++++++++++++++++++ resources/ga-endpoints.go | 124 +++++++++++++++++++++++++++++++++++ resources/ga-listeners.go | 98 +++++++++++++++++++++++++++ 3 files changed, 293 insertions(+) create mode 100644 resources/ga-accelerators.go create mode 100644 resources/ga-endpoints.go create mode 100644 resources/ga-listeners.go diff --git a/resources/ga-accelerators.go b/resources/ga-accelerators.go new file mode 100644 index 000000000..e6f8aa396 --- /dev/null +++ b/resources/ga-accelerators.go @@ -0,0 +1,71 @@ +package resources + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/globalaccelerator" + "github.com/rebuy-de/aws-nuke/pkg/types" +) + +// GAAccelerator model +type GAAccelerator struct { + svc *globalaccelerator.GlobalAccelerator + ARN *string +} + +func init() { + register("GAAccelerator", ListGAAccelerators) +} + +// ListGAAccelerators enumerates all available accelerators +func ListGAAccelerators(sess *session.Session) ([]Resource, error) { + svc := globalaccelerator.New(sess) + resources := []Resource{} + + params := &globalaccelerator.ListAcceleratorsInput{ + MaxResults: aws.Int64(100), + } + + for { + output, err := svc.ListAccelerators(params) + if err != nil { + return nil, err + } + + for _, accelerator := range output.Accelerators { + resources = append(resources, &GAAccelerator{ + svc: svc, + ARN: accelerator.AcceleratorArn, + }) + } + + if output.NextToken == nil { + break + } + + params.NextToken = output.NextToken + } + + return resources, nil +} + +// Remove resource +func (gaa *GAAccelerator) Remove() error { + _, err := gaa.svc.DeleteAccelerator(&globalaccelerator.DeleteAcceleratorInput{ + AcceleratorArn: gaa.ARN, + }) + + return err +} + +// Properties definition +func (gaa *GAAccelerator) Properties() types.Properties { + properties := types.NewProperties() + properties.Set("Arn", gaa.ARN) + return properties +} + +// String representation +func (gaa *GAAccelerator) String() string { + return *gaa.ARN +} diff --git a/resources/ga-endpoints.go b/resources/ga-endpoints.go new file mode 100644 index 000000000..1745bce94 --- /dev/null +++ b/resources/ga-endpoints.go @@ -0,0 +1,124 @@ +package resources + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/globalaccelerator" + "github.com/rebuy-de/aws-nuke/pkg/types" +) + +// GAEndpointGroup model +type GAEndpointGroup struct { + svc *globalaccelerator.GlobalAccelerator + ARN *string +} + +func init() { + register("GAEndpointGroup", ListGAEndpointGroups) +} + +// ListGAEndpointGroups enumerates all available accelerators +func ListGAEndpointGroups(sess *session.Session) ([]Resource, error) { + svc := globalaccelerator.New(sess) + acceleratorARNs := []*string{} + listenerARNs := []*string{} + resources := []Resource{} + + // get all accelerator arns + acceleratorParams := &globalaccelerator.ListAcceleratorsInput{ + MaxResults: aws.Int64(100), + } + + for { + output, err := svc.ListAccelerators(acceleratorParams) + if err != nil { + return nil, err + } + + for _, accelerator := range output.Accelerators { + acceleratorARNs = append(acceleratorARNs, accelerator.AcceleratorArn) + } + + if output.NextToken == nil { + break + } + + acceleratorParams.NextToken = output.NextToken + } + + // get all listerners arns of all accelerators + for _, acceleratorARN := range acceleratorARNs { + listenerParams := &globalaccelerator.ListListenersInput{ + MaxResults: aws.Int64(100), + AcceleratorArn: acceleratorARN, + } + + for { + output, err := svc.ListListeners(listenerParams) + if err != nil { + return nil, err + } + + for _, listener := range output.Listeners { + listenerARNs = append(listenerARNs, listener.ListenerArn) + } + + if output.NextToken == nil { + break + } + + listenerParams.NextToken = output.NextToken + } + } + + // get all endpoints based on all listeners based on all accelerator + for _, listenerArn := range listenerARNs { + params := &globalaccelerator.ListEndpointGroupsInput{ + MaxResults: aws.Int64(100), + ListenerArn: listenerArn, + } + + for { + output, err := svc.ListEndpointGroups(params) + if err != nil { + return nil, err + } + + for _, endpointGroup := range output.EndpointGroups { + resources = append(resources, &GAEndpointGroup{ + svc: svc, + ARN: endpointGroup.EndpointGroupArn, + }) + } + + if output.NextToken == nil { + break + } + + params.NextToken = output.NextToken + } + } + + return resources, nil +} + +// Remove resource +func (gaeg *GAEndpointGroup) Remove() error { + _, err := gaeg.svc.DeleteEndpointGroup(&globalaccelerator.DeleteEndpointGroupInput{ + EndpointGroupArn: gaeg.ARN, + }) + + return err +} + +// Properties definition +func (gaeg *GAEndpointGroup) Properties() types.Properties { + properties := types.NewProperties() + properties.Set("Arn", gaeg.ARN) + return properties +} + +// String representation +func (gaeg *GAEndpointGroup) String() string { + return *gaeg.ARN +} diff --git a/resources/ga-listeners.go b/resources/ga-listeners.go new file mode 100644 index 000000000..e1bdcb43d --- /dev/null +++ b/resources/ga-listeners.go @@ -0,0 +1,98 @@ +package resources + +import ( + "github.com/aws/aws-sdk-go/aws" + "github.com/aws/aws-sdk-go/aws/session" + "github.com/aws/aws-sdk-go/service/globalaccelerator" + "github.com/rebuy-de/aws-nuke/pkg/types" +) + +// GAListener model +type GAListener struct { + svc *globalaccelerator.GlobalAccelerator + ARN *string +} + +func init() { + register("GAListener", ListGAListeners) +} + +// ListGAListeners enumerates all available listeners of all available accelerators +func ListGAListeners(sess *session.Session) ([]Resource, error) { + svc := globalaccelerator.New(sess) + acceleratorARNs := []*string{} + resources := []Resource{} + + // get all accelerator arns + acceleratorParams := &globalaccelerator.ListAcceleratorsInput{ + MaxResults: aws.Int64(100), + } + + for { + output, err := svc.ListAccelerators(acceleratorParams) + if err != nil { + return nil, err + } + + for _, accelerator := range output.Accelerators { + acceleratorARNs = append(acceleratorARNs, accelerator.AcceleratorArn) + } + + if output.NextToken == nil { + break + } + + acceleratorParams.NextToken = output.NextToken + } + + // get all listerners + for _, acceleratorARN := range acceleratorARNs { + params := &globalaccelerator.ListListenersInput{ + MaxResults: aws.Int64(100), + AcceleratorArn: acceleratorARN, + } + + for { + output, err := svc.ListListeners(params) + if err != nil { + return nil, err + } + + for _, listener := range output.Listeners { + resources = append(resources, &GAListener{ + svc: svc, + ARN: listener.ListenerArn, + }) + } + + if output.NextToken == nil { + break + } + + params.NextToken = output.NextToken + } + } + + return resources, nil +} + +// Remove resource +func (gal *GAListener) Remove() error { + _, err := gal.svc.DeleteListener(&globalaccelerator.DeleteListenerInput{ + ListenerArn: gal.ARN, + }) + + return err +} + +// Properties definition +func (gal *GAListener) Properties() types.Properties { + properties := types.NewProperties() + properties.Set("Arn", gal.ARN) + return properties +} + +// String representation +func (gal *GAListener) String() string { + return *gal.ARN +} From 1fea672c7a558769a392fe1885d658da67545b3f Mon Sep 17 00:00:00 2001 From: Jan Michalowsky Date: Wed, 8 Jul 2020 13:56:38 +0200 Subject: [PATCH 2/5] Update resources/ga-listeners.go MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Björn Häuser --- resources/ga-listeners.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/ga-listeners.go b/resources/ga-listeners.go index e1bdcb43d..9c87dea58 100644 --- a/resources/ga-listeners.go +++ b/resources/ga-listeners.go @@ -88,7 +88,7 @@ func (gal *GAListener) Remove() error { // Properties definition func (gal *GAListener) Properties() types.Properties { properties := types.NewProperties() - properties.Set("Arn", gal.ARN) + properties.Set("ARN", gal.ARN) return properties } From 54fb50d419419eb67b5ee20ff322542f661017a9 Mon Sep 17 00:00:00 2001 From: Jan Michalowsky Date: Wed, 8 Jul 2020 13:56:45 +0200 Subject: [PATCH 3/5] Update resources/ga-endpoints.go MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Björn Häuser --- resources/ga-endpoints.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/ga-endpoints.go b/resources/ga-endpoints.go index 1745bce94..bcbd59de9 100644 --- a/resources/ga-endpoints.go +++ b/resources/ga-endpoints.go @@ -114,7 +114,7 @@ func (gaeg *GAEndpointGroup) Remove() error { // Properties definition func (gaeg *GAEndpointGroup) Properties() types.Properties { properties := types.NewProperties() - properties.Set("Arn", gaeg.ARN) + properties.Set("ARN", gaeg.ARN) return properties } From 13c80ff27da71dad8ca220c4f3eec87862ae86dc Mon Sep 17 00:00:00 2001 From: Jan Michalowsky Date: Wed, 8 Jul 2020 13:56:52 +0200 Subject: [PATCH 4/5] Update resources/ga-accelerators.go MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Björn Häuser --- resources/ga-accelerators.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/resources/ga-accelerators.go b/resources/ga-accelerators.go index e6f8aa396..c99eb1f7d 100644 --- a/resources/ga-accelerators.go +++ b/resources/ga-accelerators.go @@ -61,7 +61,7 @@ func (gaa *GAAccelerator) Remove() error { // Properties definition func (gaa *GAAccelerator) Properties() types.Properties { properties := types.NewProperties() - properties.Set("Arn", gaa.ARN) + properties.Set("ARN", gaa.ARN) return properties } From 17bd1bea4f3ce01667056567c6614ed453cb95bc Mon Sep 17 00:00:00 2001 From: Jan Michalowsky Date: Mon, 10 Aug 2020 13:51:46 +0200 Subject: [PATCH 5/5] refactoring type names --- resources/ga-accelerators.go | 26 +++++++++++++------------- resources/ga-endpoints.go | 18 +++++++++--------- resources/ga-listeners.go | 18 +++++++++--------- 3 files changed, 31 insertions(+), 31 deletions(-) diff --git a/resources/ga-accelerators.go b/resources/ga-accelerators.go index c99eb1f7d..0066927a6 100644 --- a/resources/ga-accelerators.go +++ b/resources/ga-accelerators.go @@ -7,18 +7,18 @@ import ( "github.com/rebuy-de/aws-nuke/pkg/types" ) -// GAAccelerator model -type GAAccelerator struct { +// GlobalAccelerator model +type GlobalAccelerator struct { svc *globalaccelerator.GlobalAccelerator ARN *string } func init() { - register("GAAccelerator", ListGAAccelerators) + register("GlobalAccelerator", ListGlobalAccelerators) } -// ListGAAccelerators enumerates all available accelerators -func ListGAAccelerators(sess *session.Session) ([]Resource, error) { +// ListGlobalAccelerators enumerates all available accelerators +func ListGlobalAccelerators(sess *session.Session) ([]Resource, error) { svc := globalaccelerator.New(sess) resources := []Resource{} @@ -33,7 +33,7 @@ func ListGAAccelerators(sess *session.Session) ([]Resource, error) { } for _, accelerator := range output.Accelerators { - resources = append(resources, &GAAccelerator{ + resources = append(resources, &GlobalAccelerator{ svc: svc, ARN: accelerator.AcceleratorArn, }) @@ -50,22 +50,22 @@ func ListGAAccelerators(sess *session.Session) ([]Resource, error) { } // Remove resource -func (gaa *GAAccelerator) Remove() error { - _, err := gaa.svc.DeleteAccelerator(&globalaccelerator.DeleteAcceleratorInput{ - AcceleratorArn: gaa.ARN, +func (ga *GlobalAccelerator) Remove() error { + _, err := ga.svc.DeleteAccelerator(&globalaccelerator.DeleteAcceleratorInput{ + AcceleratorArn: ga.ARN, }) return err } // Properties definition -func (gaa *GAAccelerator) Properties() types.Properties { +func (ga *GlobalAccelerator) Properties() types.Properties { properties := types.NewProperties() - properties.Set("ARN", gaa.ARN) + properties.Set("ARN", ga.ARN) return properties } // String representation -func (gaa *GAAccelerator) String() string { - return *gaa.ARN +func (ga *GlobalAccelerator) String() string { + return *ga.ARN } diff --git a/resources/ga-endpoints.go b/resources/ga-endpoints.go index bcbd59de9..dcc87219f 100644 --- a/resources/ga-endpoints.go +++ b/resources/ga-endpoints.go @@ -7,18 +7,18 @@ import ( "github.com/rebuy-de/aws-nuke/pkg/types" ) -// GAEndpointGroup model -type GAEndpointGroup struct { +// GlobalAcceleratorEndpointGroup model +type GlobalAcceleratorEndpointGroup struct { svc *globalaccelerator.GlobalAccelerator ARN *string } func init() { - register("GAEndpointGroup", ListGAEndpointGroups) + register("GlobalAcceleratorEndpointGroup", ListGlobalAcceleratorEndpointGroups) } -// ListGAEndpointGroups enumerates all available accelerators -func ListGAEndpointGroups(sess *session.Session) ([]Resource, error) { +// ListGlobalAcceleratorEndpointGroups enumerates all available accelerators +func ListGlobalAcceleratorEndpointGroups(sess *session.Session) ([]Resource, error) { svc := globalaccelerator.New(sess) acceleratorARNs := []*string{} listenerARNs := []*string{} @@ -85,7 +85,7 @@ func ListGAEndpointGroups(sess *session.Session) ([]Resource, error) { } for _, endpointGroup := range output.EndpointGroups { - resources = append(resources, &GAEndpointGroup{ + resources = append(resources, &GlobalAcceleratorEndpointGroup{ svc: svc, ARN: endpointGroup.EndpointGroupArn, }) @@ -103,7 +103,7 @@ func ListGAEndpointGroups(sess *session.Session) ([]Resource, error) { } // Remove resource -func (gaeg *GAEndpointGroup) Remove() error { +func (gaeg *GlobalAcceleratorEndpointGroup) Remove() error { _, err := gaeg.svc.DeleteEndpointGroup(&globalaccelerator.DeleteEndpointGroupInput{ EndpointGroupArn: gaeg.ARN, }) @@ -112,13 +112,13 @@ func (gaeg *GAEndpointGroup) Remove() error { } // Properties definition -func (gaeg *GAEndpointGroup) Properties() types.Properties { +func (gaeg *GlobalAcceleratorEndpointGroup) Properties() types.Properties { properties := types.NewProperties() properties.Set("ARN", gaeg.ARN) return properties } // String representation -func (gaeg *GAEndpointGroup) String() string { +func (gaeg *GlobalAcceleratorEndpointGroup) String() string { return *gaeg.ARN } diff --git a/resources/ga-listeners.go b/resources/ga-listeners.go index 9c87dea58..3d9ca17fa 100644 --- a/resources/ga-listeners.go +++ b/resources/ga-listeners.go @@ -7,18 +7,18 @@ import ( "github.com/rebuy-de/aws-nuke/pkg/types" ) -// GAListener model -type GAListener struct { +// GlobalAcceleratorListener model +type GlobalAcceleratorListener struct { svc *globalaccelerator.GlobalAccelerator ARN *string } func init() { - register("GAListener", ListGAListeners) + register("GlobalAcceleratorListener", ListGlobalAcceleratorListeners) } -// ListGAListeners enumerates all available listeners of all available accelerators -func ListGAListeners(sess *session.Session) ([]Resource, error) { +// ListGlobalAcceleratorListeners enumerates all available listeners of all available accelerators +func ListGlobalAcceleratorListeners(sess *session.Session) ([]Resource, error) { svc := globalaccelerator.New(sess) acceleratorARNs := []*string{} resources := []Resource{} @@ -59,7 +59,7 @@ func ListGAListeners(sess *session.Session) ([]Resource, error) { } for _, listener := range output.Listeners { - resources = append(resources, &GAListener{ + resources = append(resources, &GlobalAcceleratorListener{ svc: svc, ARN: listener.ListenerArn, }) @@ -77,7 +77,7 @@ func ListGAListeners(sess *session.Session) ([]Resource, error) { } // Remove resource -func (gal *GAListener) Remove() error { +func (gal *GlobalAcceleratorListener) Remove() error { _, err := gal.svc.DeleteListener(&globalaccelerator.DeleteListenerInput{ ListenerArn: gal.ARN, }) @@ -86,13 +86,13 @@ func (gal *GAListener) Remove() error { } // Properties definition -func (gal *GAListener) Properties() types.Properties { +func (gal *GlobalAcceleratorListener) Properties() types.Properties { properties := types.NewProperties() properties.Set("ARN", gal.ARN) return properties } // String representation -func (gal *GAListener) String() string { +func (gal *GlobalAcceleratorListener) String() string { return *gal.ARN }