Skip to content
This repository was archived by the owner on Oct 15, 2024. It is now read-only.

added global accelerator resources #524

Merged
merged 5 commits into from
Aug 11, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 71 additions & 0 deletions resources/ga-accelerators.go
Original file line number Diff line number Diff line change
@@ -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"
)

// GlobalAccelerator model
type GlobalAccelerator struct {
svc *globalaccelerator.GlobalAccelerator
ARN *string
}

func init() {
register("GlobalAccelerator", ListGlobalAccelerators)
}

// ListGlobalAccelerators enumerates all available accelerators
func ListGlobalAccelerators(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, &GlobalAccelerator{
svc: svc,
ARN: accelerator.AcceleratorArn,
})
}

if output.NextToken == nil {
break
}

params.NextToken = output.NextToken
}

return resources, nil
}

// Remove resource
func (ga *GlobalAccelerator) Remove() error {
_, err := ga.svc.DeleteAccelerator(&globalaccelerator.DeleteAcceleratorInput{
AcceleratorArn: ga.ARN,
})

return err
}

// Properties definition
func (ga *GlobalAccelerator) Properties() types.Properties {
properties := types.NewProperties()
properties.Set("ARN", ga.ARN)
return properties
}

// String representation
func (ga *GlobalAccelerator) String() string {
return *ga.ARN
}
124 changes: 124 additions & 0 deletions resources/ga-endpoints.go
Original file line number Diff line number Diff line change
@@ -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"
)

// GlobalAcceleratorEndpointGroup model
type GlobalAcceleratorEndpointGroup struct {
svc *globalaccelerator.GlobalAccelerator
ARN *string
}

func init() {
register("GlobalAcceleratorEndpointGroup", ListGlobalAcceleratorEndpointGroups)
}

// ListGlobalAcceleratorEndpointGroups enumerates all available accelerators
func ListGlobalAcceleratorEndpointGroups(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, &GlobalAcceleratorEndpointGroup{
svc: svc,
ARN: endpointGroup.EndpointGroupArn,
})
}

if output.NextToken == nil {
break
}

params.NextToken = output.NextToken
}
}

return resources, nil
}

// Remove resource
func (gaeg *GlobalAcceleratorEndpointGroup) Remove() error {
_, err := gaeg.svc.DeleteEndpointGroup(&globalaccelerator.DeleteEndpointGroupInput{
EndpointGroupArn: gaeg.ARN,
})

return err
}

// Properties definition
func (gaeg *GlobalAcceleratorEndpointGroup) Properties() types.Properties {
properties := types.NewProperties()
properties.Set("ARN", gaeg.ARN)
return properties
}

// String representation
func (gaeg *GlobalAcceleratorEndpointGroup) String() string {
return *gaeg.ARN
}
98 changes: 98 additions & 0 deletions resources/ga-listeners.go
Original file line number Diff line number Diff line change
@@ -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"
)

// GlobalAcceleratorListener model
type GlobalAcceleratorListener struct {
svc *globalaccelerator.GlobalAccelerator
ARN *string
}

func init() {
register("GlobalAcceleratorListener", ListGlobalAcceleratorListeners)
}

// ListGlobalAcceleratorListeners enumerates all available listeners of all available accelerators
func ListGlobalAcceleratorListeners(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, &GlobalAcceleratorListener{
svc: svc,
ARN: listener.ListenerArn,
})
}

if output.NextToken == nil {
break
}

params.NextToken = output.NextToken
}
}

return resources, nil
}

// Remove resource
func (gal *GlobalAcceleratorListener) Remove() error {
_, err := gal.svc.DeleteListener(&globalaccelerator.DeleteListenerInput{
ListenerArn: gal.ARN,
})

return err
}

// Properties definition
func (gal *GlobalAcceleratorListener) Properties() types.Properties {
properties := types.NewProperties()
properties.Set("ARN", gal.ARN)
return properties
}

// String representation
func (gal *GlobalAcceleratorListener) String() string {
return *gal.ARN
}