From ce034f894047a49a7bb34344d46d10069c078121 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 15 Feb 2024 17:52:03 +0100 Subject: [PATCH 1/4] Bump the golang group with 1 update (#1188) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index a442f3855..5fdac4844 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/rebuy-de/aws-nuke/v2 go 1.21 require ( - github.com/aws/aws-sdk-go v1.50.6 + github.com/aws/aws-sdk-go v1.50.16 github.com/fatih/color v1.16.0 github.com/golang/mock v1.6.0 github.com/google/uuid v1.6.0 diff --git a/go.sum b/go.sum index 3eb5fc38c..54b685354 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/aws/aws-sdk-go v1.50.6 h1:FaXvNwHG3Ri1paUEW16Ahk9zLVqSAdqa1M3phjZR35Q= -github.com/aws/aws-sdk-go v1.50.6/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= +github.com/aws/aws-sdk-go v1.50.16 h1:/KuHK+Sadp9BKXWWtMhPtBdj+PLIFCnQZxQnsuLhxKc= +github.com/aws/aws-sdk-go v1.50.16/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= From 93792d48ac79156f0dd045cc99e7924ffa409356 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 20 Feb 2024 16:51:34 +0100 Subject: [PATCH 2/4] Bump the golang group with 1 update (#1191) Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- go.mod | 2 +- go.sum | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 5fdac4844..cc2573d83 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/rebuy-de/aws-nuke/v2 go 1.21 require ( - github.com/aws/aws-sdk-go v1.50.16 + github.com/aws/aws-sdk-go v1.50.21 github.com/fatih/color v1.16.0 github.com/golang/mock v1.6.0 github.com/google/uuid v1.6.0 diff --git a/go.sum b/go.sum index 54b685354..230367b79 100644 --- a/go.sum +++ b/go.sum @@ -1,5 +1,5 @@ -github.com/aws/aws-sdk-go v1.50.16 h1:/KuHK+Sadp9BKXWWtMhPtBdj+PLIFCnQZxQnsuLhxKc= -github.com/aws/aws-sdk-go v1.50.16/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= +github.com/aws/aws-sdk-go v1.50.21 h1:W8awpwiInOt4qHQE6JghRYQJhHcf/cDJS3mlZYqioSQ= +github.com/aws/aws-sdk-go v1.50.21/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= From d6b1374e3ca7fe0b8dc6d9e8adf6fb5406101df7 Mon Sep 17 00:00:00 2001 From: Philipp Trulson Date: Tue, 20 Feb 2024 18:14:23 +0100 Subject: [PATCH 3/4] Add release note config (#1192) --- .github/release.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 .github/release.yml diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 000000000..4d213e6f4 --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,13 @@ +# https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes#configuring-automatically-generated-release-notes + +changelog: + categories: + - title: Notable changes + labels: + - '*' + exclude: + labels: + - dependencies + - title: Dependency updates + labels: + - dependencies From 566bb868bbf3033ac0d8cd49f09a9434ea70829e Mon Sep 17 00:00:00 2001 From: Maarten Dirkse Date: Fri, 23 Feb 2024 15:34:59 +0100 Subject: [PATCH 4/4] Add support for Redshift Serverless namespaces, snapshots and workgroups. (#1194) --- resources/redshiftserverless-namespaces.go | 68 +++++++++++++++++++++ resources/redshiftserverless-snapshots.go | 69 ++++++++++++++++++++++ resources/redshiftserverless-workgroups.go | 69 ++++++++++++++++++++++ 3 files changed, 206 insertions(+) create mode 100644 resources/redshiftserverless-namespaces.go create mode 100644 resources/redshiftserverless-snapshots.go create mode 100644 resources/redshiftserverless-workgroups.go diff --git a/resources/redshiftserverless-namespaces.go b/resources/redshiftserverless-namespaces.go new file mode 100644 index 000000000..adfaae07e --- /dev/null +++ b/resources/redshiftserverless-namespaces.go @@ -0,0 +1,68 @@ +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/redshiftserverless" + "github.com/rebuy-de/aws-nuke/v2/pkg/types" +) + +type RedshiftServerlessNamespace struct { + svc *redshiftserverless.RedshiftServerless + namespace *redshiftserverless.Namespace +} + +func init() { + register("RedshiftServerlessNamespace", ListRedshiftServerlessNamespaces) +} + +func ListRedshiftServerlessNamespaces(sess *session.Session) ([]Resource, error) { + svc := redshiftserverless.New(sess) + resources := []Resource{} + + params := &redshiftserverless.ListNamespacesInput{ + MaxResults: aws.Int64(100), + } + + for { + output, err := svc.ListNamespaces(params) + if err != nil { + return nil, err + } + + for _, namespace := range output.Namespaces { + resources = append(resources, &RedshiftServerlessNamespace{ + svc: svc, + namespace: namespace, + }) + } + + if output.NextToken == nil { + break + } + + params.NextToken = output.NextToken + } + + return resources, nil +} + +func (n *RedshiftServerlessNamespace) Properties() types.Properties { + properties := types.NewProperties(). + Set("CreationDate", n.namespace.CreationDate). + Set("NamespaceName", n.namespace.NamespaceName) + + return properties +} + +func (n *RedshiftServerlessNamespace) Remove() error { + _, err := n.svc.DeleteNamespace(&redshiftserverless.DeleteNamespaceInput{ + NamespaceName: n.namespace.NamespaceName, + }) + + return err +} + +func (n *RedshiftServerlessNamespace) String() string { + return *n.namespace.NamespaceName +} diff --git a/resources/redshiftserverless-snapshots.go b/resources/redshiftserverless-snapshots.go new file mode 100644 index 000000000..9f56c8e62 --- /dev/null +++ b/resources/redshiftserverless-snapshots.go @@ -0,0 +1,69 @@ +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/redshiftserverless" + "github.com/rebuy-de/aws-nuke/v2/pkg/types" +) + +type RedshiftServerlessSnapshot struct { + svc *redshiftserverless.RedshiftServerless + snapshot *redshiftserverless.Snapshot +} + +func init() { + register("RedshiftServerlessSnapshot", ListRedshiftServerlessSnapshots) +} + +func ListRedshiftServerlessSnapshots(sess *session.Session) ([]Resource, error) { + svc := redshiftserverless.New(sess) + resources := []Resource{} + + params := &redshiftserverless.ListSnapshotsInput{ + MaxResults: aws.Int64(100), + } + + for { + output, err := svc.ListSnapshots(params) + if err != nil { + return nil, err + } + + for _, snapshot := range output.Snapshots { + resources = append(resources, &RedshiftServerlessSnapshot{ + svc: svc, + snapshot: snapshot, + }) + } + + if output.NextToken == nil { + break + } + + params.NextToken = output.NextToken + } + + return resources, nil +} + +func (s *RedshiftServerlessSnapshot) Properties() types.Properties { + properties := types.NewProperties(). + Set("CreateTime", s.snapshot.SnapshotCreateTime). + Set("Namespace", s.snapshot.NamespaceName). + Set("SnapshotName", s.snapshot.SnapshotName) + + return properties +} + +func (s *RedshiftServerlessSnapshot) Remove() error { + _, err := s.svc.DeleteSnapshot(&redshiftserverless.DeleteSnapshotInput{ + SnapshotName: s.snapshot.SnapshotName, + }) + + return err +} + +func (s *RedshiftServerlessSnapshot) String() string { + return *s.snapshot.SnapshotName +} diff --git a/resources/redshiftserverless-workgroups.go b/resources/redshiftserverless-workgroups.go new file mode 100644 index 000000000..a88c8d16a --- /dev/null +++ b/resources/redshiftserverless-workgroups.go @@ -0,0 +1,69 @@ +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/redshiftserverless" + "github.com/rebuy-de/aws-nuke/v2/pkg/types" +) + +type RedshiftServerlessWorkgroup struct { + svc *redshiftserverless.RedshiftServerless + workgroup *redshiftserverless.Workgroup +} + +func init() { + register("RedshiftServerlessWorkgroup", ListRedshiftServerlessWorkgroups) +} + +func ListRedshiftServerlessWorkgroups(sess *session.Session) ([]Resource, error) { + svc := redshiftserverless.New(sess) + resources := []Resource{} + + params := &redshiftserverless.ListWorkgroupsInput{ + MaxResults: aws.Int64(100), + } + + for { + output, err := svc.ListWorkgroups(params) + if err != nil { + return nil, err + } + + for _, workgroup := range output.Workgroups { + resources = append(resources, &RedshiftServerlessWorkgroup{ + svc: svc, + workgroup: workgroup, + }) + } + + if output.NextToken == nil { + break + } + + params.NextToken = output.NextToken + } + + return resources, nil +} + +func (w *RedshiftServerlessWorkgroup) Properties() types.Properties { + properties := types.NewProperties(). + Set("CreationDate", w.workgroup.CreationDate). + Set("Namespace", w.workgroup.NamespaceName). + Set("WorkgroupName", w.workgroup.WorkgroupName) + + return properties +} + +func (w *RedshiftServerlessWorkgroup) Remove() error { + _, err := w.svc.DeleteWorkgroup(&redshiftserverless.DeleteWorkgroupInput{ + WorkgroupName: w.workgroup.WorkgroupName, + }) + + return err +} + +func (w *RedshiftServerlessWorkgroup) String() string { + return *w.workgroup.WorkgroupName +}